@@ -2,8 +2,10 @@ package upcloud
22
33import (
44 "encoding/xml"
5- "github.com/stretchr/testify/assert"
65 "testing"
6+ "time"
7+
8+ "github.com/stretchr/testify/assert"
79)
810
911// TestUnmarshalStorage tests that Storages and Storage struct are unmarshaled correctly
@@ -54,6 +56,82 @@ func TestUnmarshalStorage(t *testing.T) {
5456 assert .Equal (t , "01000000-0000-4000-8000-000010010101" , firstStorage .UUID )
5557}
5658
59+ // TestUnmarshalStorage tests that Storages and Storage struct are unmarshaled correctly for private and backup storages
60+ func TestUnmarshalStoragesPrivateAndBackup (t * testing.T ) {
61+ originalXML := `<?xml version="1.0" encoding="utf-8"?>
62+ <storages>
63+ <storage>
64+ <access>private</access>
65+ <license>0</license>
66+ <size>10</size>
67+ <state>online</state>
68+ <tier>hdd</tier>
69+ <title>Operating system disk</title>
70+ <type>normal</type>
71+ <uuid>01eff7ad-168e-413e-83b0-054f6a28fa23</uuid>
72+ <zone>uk-lon1</zone>
73+ </storage>
74+ <storage>
75+ <access>private</access>
76+ <created>2019-09-17T14:34:43Z</created>
77+ <license>0</license>
78+ <origin>01eff7ad-168e-413e-83b0-054f6a28fa23</origin>
79+ <size>10</size>
80+ <state>online</state>
81+ <title>On demand backup</title>
82+ <type>backup</type>
83+ <uuid>01287ad1-496c-4b5f-bb67-0fc2e3494740</uuid>
84+ <zone>uk-lon1</zone>
85+ </storage>
86+ <storage>
87+ <access>private</access>
88+ <license>0</license>
89+ <part_of_plan>yes</part_of_plan>
90+ <size>50</size>
91+ <state>online</state>
92+ <tier>maxiops</tier>
93+ <title>Databases</title>
94+ <type>normal</type>
95+ <uuid>01f3286c-a5ea-4670-8121-d0b9767d625b</uuid>
96+ <zone>fi-hel1</zone>
97+ </storage>
98+ </storages>`
99+
100+ storages := Storages {}
101+ err := xml .Unmarshal ([]byte (originalXML ), & storages )
102+
103+ assert .Nil (t , err )
104+ assert .Len (t , storages .Storages , 3 )
105+
106+ firstStorage := storages .Storages [0 ]
107+ assert .Equal (t , "private" , firstStorage .Access )
108+ assert .Equal (t , 0.0 , firstStorage .License )
109+ assert .Equal (t , 10 , firstStorage .Size )
110+ assert .Equal (t , "online" , firstStorage .State )
111+ assert .Equal (t , "hdd" , firstStorage .Tier )
112+ assert .Equal (t , "Operating system disk" , firstStorage .Title )
113+ assert .Equal (t , "normal" , firstStorage .Type )
114+ assert .Equal (t , "01eff7ad-168e-413e-83b0-054f6a28fa23" , firstStorage .UUID )
115+ assert .Equal (t , "uk-lon1" , firstStorage .Zone )
116+ assert .Equal (t , time.Time {}, firstStorage .Created )
117+ assert .Equal (t , "" , firstStorage .Origin )
118+
119+ secondStorage := storages .Storages [1 ]
120+ assert .Equal (t , "private" , secondStorage .Access )
121+ created , err := time .Parse (time .RFC3339 , "2019-09-17T14:34:43Z" )
122+ assert .Nil (t , err )
123+ assert .Equal (t , created , secondStorage .Created )
124+ assert .Equal (t , 0.0 , secondStorage .License )
125+ assert .Equal (t , "01eff7ad-168e-413e-83b0-054f6a28fa23" , secondStorage .Origin )
126+ assert .Equal (t , 10 , secondStorage .Size )
127+ assert .Equal (t , "online" , secondStorage .State )
128+ assert .Equal (t , "" , secondStorage .Tier )
129+ assert .Equal (t , "On demand backup" , secondStorage .Title )
130+ assert .Equal (t , "backup" , secondStorage .Type )
131+ assert .Equal (t , "01287ad1-496c-4b5f-bb67-0fc2e3494740" , secondStorage .UUID )
132+ assert .Equal (t , "uk-lon1" , secondStorage .Zone )
133+ }
134+
57135// TestUnmarshalStorageDetails tests that StorageDetails struct is unmarshaled correctly
58136func TestUnmarshalStorageDetails (t * testing.T ) {
59137 originalXML := `<?xml version="1.0" encoding="utf-8"?>
0 commit comments