@@ -54,6 +54,58 @@ func TestUnmarshalStorage(t *testing.T) {
5454 assert .Equal (t , "01000000-0000-4000-8000-000010010101" , firstStorage .UUID )
5555}
5656
57+ // TestUnmarshalStorageDetails tests that StorageDetails struct is unmarshaled correctly
58+ func TestUnmarshalStorageDetails (t * testing.T ) {
59+ originalXML := `<?xml version="1.0" encoding="utf-8"?>
60+ <storage>
61+ <access>private</access>
62+ <backup_rule>
63+ <interval>daily</interval>
64+ <retention>1</retention>
65+ <time>0400</time>
66+ </backup_rule>
67+ <backups>
68+ <backup>37c96670-9c02-4d5d-8f60-291d38f9a80c</backup>
69+ <backup>ecfda9f2-e071-4bbb-b38f-079ed26eb32a</backup>
70+ </backups>
71+ <license>0</license>
72+ <servers>
73+ <server>33850294-50f4-4712-8463-aeb7b42de42f</server>
74+ </servers>
75+ <size>500</size>
76+ <state>online</state>
77+ <tier>maxiops</tier>
78+ <title>Debian server (Disk 1)</title>
79+ <type>normal</type>
80+ <uuid>bf3da6c2-66c4-4e70-9640-5b4896aacd5c</uuid>
81+ <zone>fi-hel1</zone>
82+ </storage>`
83+ storageDeviceDetails := StorageDetails {}
84+ err := xml .Unmarshal ([]byte (originalXML ), & storageDeviceDetails )
85+
86+ assert .Nil (t , err )
87+ assert .Equal (t , "private" , storageDeviceDetails .Access )
88+ assert .Equal (t , 0.0 , storageDeviceDetails .License )
89+ assert .Equal (t , 500 , storageDeviceDetails .Size )
90+ assert .Equal (t , "online" , storageDeviceDetails .State )
91+ assert .Equal (t , "maxiops" , storageDeviceDetails .Tier )
92+ assert .Equal (t , "Debian server (Disk 1)" , storageDeviceDetails .Title )
93+ assert .Equal (t , StorageTypeNormal , storageDeviceDetails .Type )
94+ assert .Equal (t , "bf3da6c2-66c4-4e70-9640-5b4896aacd5c" , storageDeviceDetails .UUID )
95+ assert .Equal (t , "fi-hel1" , storageDeviceDetails .Zone )
96+
97+ assert .Equal (t , BackupRuleIntervalDaily , storageDeviceDetails .BackupRule .Interval )
98+ assert .Equal (t , 1 , storageDeviceDetails .BackupRule .Retention )
99+ assert .Equal (t , "0400" , storageDeviceDetails .BackupRule .Time )
100+
101+ assert .Equal (t , 2 , len (storageDeviceDetails .BackupUUIDs ))
102+ assert .Equal (t , "37c96670-9c02-4d5d-8f60-291d38f9a80c" , storageDeviceDetails .BackupUUIDs [0 ])
103+ assert .Equal (t , "ecfda9f2-e071-4bbb-b38f-079ed26eb32a" , storageDeviceDetails .BackupUUIDs [1 ])
104+
105+ assert .Equal (t , 1 , len (storageDeviceDetails .ServerUUIDs ))
106+ assert .Equal (t , "33850294-50f4-4712-8463-aeb7b42de42f" , storageDeviceDetails .ServerUUIDs [0 ])
107+ }
108+
57109// TestUnmarshalServerStorageDevice tests that ServerStorageDevice objects are properly unmarshaled
58110func TestUnmarshalServerStorageDevice (t * testing.T ) {
59111 originalXML := `<?xml version="1.0" encoding="utf-8"?>
0 commit comments