@@ -29,6 +29,7 @@ import {
2929 partsRequired ,
3030} from '../../src/internal/helper.ts'
3131import * as Minio from '../../src/minio.js'
32+ import { parseListObjects } from '../../src/xml-parsers.js'
3233
3334const Package = { version : 'development' }
3435
@@ -2123,3 +2124,56 @@ describe('IP Address Validations', () => {
21232124 } )
21242125 } )
21252126} )
2127+
2128+ describe ( 'xml-parser' , ( ) => {
2129+ describe ( '#listObjects()' , ( ) => {
2130+ describe ( 'value type casting' , ( ) => {
2131+ const xml = `
2132+ <?xml version="1.0" encoding="UTF-8"?>
2133+ <ListVersionsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
2134+ <Name>some-bucket</Name>
2135+ <Prefix>42</Prefix>
2136+ <Delimiter>/</Delimiter>
2137+ <IsTruncated>false</IsTruncated>
2138+ <EncodingType>url</EncodingType>
2139+ <KeyMarker/>
2140+ <VersionIdMarker/>
2141+ <Version>
2142+ <IsLatest>true</IsLatest>
2143+ <VersionId>1234</VersionId>
2144+ <ETag>"767dedcb515a0e2d995ed95191b75484-29"</ETag>
2145+ <Key>1337</Key>
2146+ <LastModified>2023-07-12T14:41:46.000Z</LastModified>
2147+ <Size>151306240</Size>
2148+ </Version>
2149+ <DeleteMarker>
2150+ <IsLatest>false</IsLatest>
2151+ <Key>1337</Key>
2152+ <LastModified>2023-07-12T14:39:22.000Z</LastModified>
2153+ <VersionId>5678</VersionId>
2154+ </DeleteMarker>
2155+ <CommonPrefixes>
2156+ <Prefix>42</Prefix>
2157+ </CommonPrefixes>
2158+ </ListVersionsResult>
2159+ `
2160+
2161+ it ( 'should parse VersionId as string even if number is provided' , ( ) => {
2162+ const { objects } = parseListObjects ( xml )
2163+
2164+ assert . equal ( objects [ 0 ] . versionId , '1234' )
2165+ assert . equal ( objects [ 1 ] . versionId , '5678' )
2166+ assert . equal ( objects [ 0 ] . name , '1337' )
2167+ assert . equal ( objects [ 1 ] . name , '1337' )
2168+ assert . deepEqual ( objects [ 2 ] , { prefix : '42' , size : 0 } )
2169+ } )
2170+
2171+ it ( 'should parse Size as number' , ( ) => {
2172+ const { objects } = parseListObjects ( xml )
2173+
2174+ assert . equal ( objects [ 0 ] . size , 151306240 )
2175+ assert . equal ( objects [ 1 ] . size , undefined )
2176+ } )
2177+ } )
2178+ } )
2179+ } )
0 commit comments