@@ -64,3 +64,97 @@ func generateSSHPublicKey() string {
6464 publicRsaKey , _ := ssh .NewPublicKey (& privateKey .PublicKey )
6565 return base64 .StdEncoding .EncodeToString (ssh .MarshalAuthorizedKey (publicRsaKey ))
6666}
67+
68+ type osDiskTestInput struct {
69+ name string
70+ wantErr bool
71+ osDisk OSDisk
72+ }
73+
74+ func TestAzureMachine_ValidateOSDisk (t * testing.T ) {
75+ g := NewWithT (t )
76+
77+ testcases := []osDiskTestInput {
78+ {
79+ name : "valid os disk spec" ,
80+ wantErr : false ,
81+ osDisk : generateValidOSDisk (),
82+ },
83+ }
84+ testcases = append (testcases , generateNegativeTestCases ()... )
85+
86+ for _ , test := range testcases {
87+ t .Run (test .name , func (t * testing.T ) {
88+ err := ValidateOSDisk (test .osDisk , field .NewPath ("osDisk" ))
89+ if test .wantErr {
90+ g .Expect (err ).NotTo (HaveLen (0 ))
91+ } else {
92+ g .Expect (err ).To (HaveLen (0 ))
93+ }
94+ })
95+ }
96+ }
97+
98+ func generateNegativeTestCases () []osDiskTestInput {
99+ inputs := []osDiskTestInput {}
100+ testCaseName := "invalid os disk spec"
101+
102+ invalidDiskSpecs := []OSDisk {
103+ {},
104+ {
105+ DiskSizeGB : 0 ,
106+ OSType : "blah" ,
107+ },
108+ {
109+ DiskSizeGB : - 10 ,
110+ OSType : "blah" ,
111+ },
112+ {
113+ DiskSizeGB : 2050 ,
114+ OSType : "blah" ,
115+ },
116+ {
117+ DiskSizeGB : 20 ,
118+ OSType : "" ,
119+ },
120+ {
121+ DiskSizeGB : 30 ,
122+ OSType : "blah" ,
123+ ManagedDisk : ManagedDisk {},
124+ },
125+ {
126+ DiskSizeGB : 30 ,
127+ OSType : "blah" ,
128+ ManagedDisk : ManagedDisk {
129+ StorageAccountType : "" ,
130+ },
131+ },
132+ {
133+ DiskSizeGB : 30 ,
134+ OSType : "blah" ,
135+ ManagedDisk : ManagedDisk {
136+ StorageAccountType : "invalid_type" ,
137+ },
138+ },
139+ }
140+
141+ for _ , input := range invalidDiskSpecs {
142+ inputs = append (inputs , osDiskTestInput {
143+ name : testCaseName ,
144+ wantErr : true ,
145+ osDisk : input ,
146+ })
147+ }
148+
149+ return inputs
150+ }
151+
152+ func generateValidOSDisk () OSDisk {
153+ return OSDisk {
154+ DiskSizeGB : 30 ,
155+ OSType : "Linux" ,
156+ ManagedDisk : ManagedDisk {
157+ StorageAccountType : "Premium_LRS" ,
158+ },
159+ }
160+ }
0 commit comments