1// +build go1.7
2
3package virtualmachineimage
4
5// Copyright (c) Microsoft Corporation. All rights reserved.
6// Licensed under the MIT License. See License.txt in the project root for license information.
7
8import (
9	"encoding/xml"
10	"testing"
11)
12
13const 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>`
42const 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
87func 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
97func 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
109type checker struct{ *testing.T }
110
111func (a *checker) Equal(expected, actual interface{}) {
112	if expected != actual {
113		a.T.Fatalf("Expected %q, but got %q", expected, actual)
114	}
115}
116