...
1
2
3 package virtualmachineimage
4
5
6
7
8 import (
9 "encoding/xml"
10 "testing"
11 )
12
13 const xml1 = `
14 <VMImage>
15 <Name>imgName</Name>
16 <Label>PackerMade_Ubuntu_Serv14</Label>
17 <Category>User</Category>
18 <Description>packer made image</Description>
19 <OSDiskConfiguration>
20 <Name>OSDisk</Name>
21 <HostCaching>ReadWrite</HostCaching>
22 <OSState>Generalized</OSState>
23 <OS>Linux</OS>
24 <MediaLink>https://sa.blob.core.windows.net/images/PackerMade_Ubuntu_Serv14_2015-12-12.vhd</MediaLink>
25 <LogicalDiskSizeInGB>30</LogicalDiskSizeInGB>
26 <IOType>Standard</IOType>
27 </OSDiskConfiguration>
28 <DataDiskConfigurations/>
29 <ServiceName>PkrSrvf3mz03u4mi</ServiceName>
30 <DeploymentName>PkrVMf3mz03u4mi</DeploymentName>
31 <RoleName>PkrVMf3mz03u4mi</RoleName>
32 <Location>Central US</Location>
33 <CreatedTime>2015-12-12T08:59:29.1936858Z</CreatedTime>
34 <ModifiedTime>2015-12-12T08:59:29.1936858Z</ModifiedTime>
35 <ImageFamily>PackerMade</ImageFamily>
36 <RecommendedVMSize>Small</RecommendedVMSize>
37 <IsPremium>false</IsPremium>
38 <VMImageState>VMImageReadyForUse</VMImageState>
39 <RoleStateOnCapture>StoppedVM</RoleStateOnCapture>
40 <RoleSizeOnCapture>Small</RoleSizeOnCapture>
41 </VMImage>`
42 const xml2 = `
43 <VMImage>
44 <Name>imgName</Name>
45 <Label>PackerMade_Ubuntu_Serv14</Label>
46 <Category>User</Category>
47 <Description>packer made image</Description>
48 <OSDiskConfiguration>
49 <Name>OSDisk</Name>
50 <HostCaching>ReadWrite</HostCaching>
51 <OSState>Generalized</OSState>
52 <OS>Linux</OS>
53 <MediaLink>https://sa.blob.core.windows.net/images/PackerMade_Ubuntu_Serv14_2015-12-12.vhd</MediaLink>
54 <LogicalDiskSizeInGB>30</LogicalDiskSizeInGB>
55 <IOType>Standard</IOType>
56 </OSDiskConfiguration>
57 <DataDiskConfigurations>
58 <DataDiskConfiguration>
59 <Name>DataDisk1</Name>
60 <HostCaching>ReadWrite</HostCaching>
61 <MediaLink>https://sa.blob.core.windows.net/images/PackerMade_Ubuntu_Serv14_2015-12-12-dd1.vhd</MediaLink>
62 <LogicalDiskSizeInGB>31</LogicalDiskSizeInGB>
63 <IOType>Standard</IOType>
64 </DataDiskConfiguration>
65 <DataDiskConfiguration>
66 <Name>DataDisk2</Name>
67 <HostCaching>ReadWrite</HostCaching>
68 <MediaLink>https://sa.blob.core.windows.net/images/PackerMade_Ubuntu_Serv14_2015-12-12-dd2.vhd</MediaLink>
69 <LogicalDiskSizeInGB>32</LogicalDiskSizeInGB>
70 <IOType>Standard</IOType>
71 </DataDiskConfiguration>
72 </DataDiskConfigurations>
73 <ServiceName>PkrSrvf3mz03u4mi</ServiceName>
74 <DeploymentName>PkrVMf3mz03u4mi</DeploymentName>
75 <RoleName>PkrVMf3mz03u4mi</RoleName>
76 <Location>Central US</Location>
77 <CreatedTime>2015-12-12T08:59:29.1936858Z</CreatedTime>
78 <ModifiedTime>2015-12-12T08:59:29.1936858Z</ModifiedTime>
79 <ImageFamily>PackerMade</ImageFamily>
80 <RecommendedVMSize>Small</RecommendedVMSize>
81 <IsPremium>false</IsPremium>
82 <VMImageState>VMImageReadyForUse</VMImageState>
83 <RoleStateOnCapture>StoppedVM</RoleStateOnCapture>
84 <RoleSizeOnCapture>Small</RoleSizeOnCapture>
85 </VMImage>`
86
87 func Test_NoDataDisksUnmarshal(t *testing.T) {
88 var image VMImage
89 if err := xml.Unmarshal([]byte(xml1), &image); err != nil {
90 t.Fatal(err)
91 }
92
93 check := checker{t}
94 check.Equal(0, len(image.DataDiskConfigurations))
95 }
96
97 func Test_DataDiskCountUnmarshal(t *testing.T) {
98 var image VMImage
99 if err := xml.Unmarshal([]byte(xml2), &image); err != nil {
100 t.Fatal(err)
101 }
102
103 check := checker{t}
104 check.Equal(2, len(image.DataDiskConfigurations))
105 check.Equal("DataDisk1", image.DataDiskConfigurations[0].Name)
106 check.Equal("DataDisk2", image.DataDiskConfigurations[1].Name)
107 }
108
109 type checker struct{ *testing.T }
110
111 func (a *checker) Equal(expected, actual interface{}) {
112 if expected != actual {
113 a.T.Fatalf("Expected %q, but got %q", expected, actual)
114 }
115 }
116
View as plain text