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