@@ -20,6 +20,7 @@ package azure
20
20
21
21
import (
22
22
"fmt"
23
+ "reflect"
23
24
"testing"
24
25
25
26
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
@@ -284,3 +285,129 @@ func TestFilteredDetatchingDisks(t *testing.T) {
284
285
filteredDisks = filterDetachingDisks (disks )
285
286
assert .Equal (t , 0 , len (filteredDisks ))
286
287
}
288
+
289
+ func TestGetValidCreationData (t * testing.T ) {
290
+ sourceResourceSnapshotID := "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx"
291
+ sourceResourceVolumeID := "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/disks/xxx"
292
+
293
+ tests := []struct {
294
+ subscriptionID string
295
+ resourceGroup string
296
+ sourceResourceID string
297
+ sourceType string
298
+ expected1 compute.CreationData
299
+ expected2 error
300
+ }{
301
+ {
302
+ subscriptionID : "" ,
303
+ resourceGroup : "" ,
304
+ sourceResourceID : "" ,
305
+ sourceType : "" ,
306
+ expected1 : compute.CreationData {
307
+ CreateOption : compute .Empty ,
308
+ },
309
+ expected2 : nil ,
310
+ },
311
+ {
312
+ subscriptionID : "" ,
313
+ resourceGroup : "" ,
314
+ sourceResourceID : "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx" ,
315
+ sourceType : sourceSnapshot ,
316
+ expected1 : compute.CreationData {
317
+ CreateOption : compute .Copy ,
318
+ SourceResourceID : & sourceResourceSnapshotID ,
319
+ },
320
+ expected2 : nil ,
321
+ },
322
+ {
323
+ subscriptionID : "xxx" ,
324
+ resourceGroup : "xxx" ,
325
+ sourceResourceID : "xxx" ,
326
+ sourceType : sourceSnapshot ,
327
+ expected1 : compute.CreationData {
328
+ CreateOption : compute .Copy ,
329
+ SourceResourceID : & sourceResourceSnapshotID ,
330
+ },
331
+ expected2 : nil ,
332
+ },
333
+ {
334
+ subscriptionID : "" ,
335
+ resourceGroup : "" ,
336
+ sourceResourceID : "/subscriptions/23/providers/Microsoft.Compute/disks/name" ,
337
+ sourceType : sourceSnapshot ,
338
+ expected1 : compute.CreationData {},
339
+ expected2 : fmt .Errorf ("sourceResourceID(%s) is invalid, correct format: %s" , "/subscriptions//resourceGroups//providers/Microsoft.Compute/snapshots//subscriptions/23/providers/Microsoft.Compute/disks/name" , diskSnapshotPathRE ),
340
+ },
341
+ {
342
+ subscriptionID : "" ,
343
+ resourceGroup : "" ,
344
+ sourceResourceID : "http://test.com/vhds/name" ,
345
+ sourceType : sourceSnapshot ,
346
+ expected1 : compute.CreationData {},
347
+ expected2 : fmt .Errorf ("sourceResourceID(%s) is invalid, correct format: %s" , "/subscriptions//resourceGroups//providers/Microsoft.Compute/snapshots/http://test.com/vhds/name" , diskSnapshotPathRE ),
348
+ },
349
+ {
350
+ subscriptionID : "" ,
351
+ resourceGroup : "" ,
352
+ sourceResourceID : "/subscriptions/xxx/snapshots/xxx" ,
353
+ sourceType : sourceSnapshot ,
354
+ expected1 : compute.CreationData {},
355
+ expected2 : fmt .Errorf ("sourceResourceID(%s) is invalid, correct format: %s" , "/subscriptions//resourceGroups//providers/Microsoft.Compute/snapshots//subscriptions/xxx/snapshots/xxx" , diskSnapshotPathRE ),
356
+ },
357
+ {
358
+ subscriptionID : "" ,
359
+ resourceGroup : "" ,
360
+ sourceResourceID : "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx/snapshots/xxx/snapshots/xxx" ,
361
+ sourceType : sourceSnapshot ,
362
+ expected1 : compute.CreationData {},
363
+ expected2 : fmt .Errorf ("sourceResourceID(%s) is invalid, correct format: %s" , "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx/snapshots/xxx/snapshots/xxx" , diskSnapshotPathRE ),
364
+ },
365
+ {
366
+ subscriptionID : "" ,
367
+ resourceGroup : "" ,
368
+ sourceResourceID : "xxx" ,
369
+ sourceType : "" ,
370
+ expected1 : compute.CreationData {
371
+ CreateOption : compute .Empty ,
372
+ },
373
+ expected2 : nil ,
374
+ },
375
+ {
376
+ subscriptionID : "" ,
377
+ resourceGroup : "" ,
378
+ sourceResourceID : "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/disks/xxx" ,
379
+ sourceType : sourceVolume ,
380
+ expected1 : compute.CreationData {
381
+ CreateOption : compute .Copy ,
382
+ SourceResourceID : & sourceResourceVolumeID ,
383
+ },
384
+ expected2 : nil ,
385
+ },
386
+ {
387
+ subscriptionID : "xxx" ,
388
+ resourceGroup : "xxx" ,
389
+ sourceResourceID : "xxx" ,
390
+ sourceType : sourceVolume ,
391
+ expected1 : compute.CreationData {
392
+ CreateOption : compute .Copy ,
393
+ SourceResourceID : & sourceResourceVolumeID ,
394
+ },
395
+ expected2 : nil ,
396
+ },
397
+ {
398
+ subscriptionID : "" ,
399
+ resourceGroup : "" ,
400
+ sourceResourceID : "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx" ,
401
+ sourceType : sourceVolume ,
402
+ expected1 : compute.CreationData {},
403
+ expected2 : fmt .Errorf ("sourceResourceID(%s) is invalid, correct format: %s" , "/subscriptions//resourceGroups//providers/Microsoft.Compute/disks//subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Compute/snapshots/xxx" , managedDiskPathRE ),
404
+ },
405
+ }
406
+
407
+ for _ , test := range tests {
408
+ result , err := getValidCreationData (test .subscriptionID , test .resourceGroup , test .sourceResourceID , test .sourceType )
409
+ if ! reflect .DeepEqual (result , test .expected1 ) || ! reflect .DeepEqual (err , test .expected2 ) {
410
+ t .Errorf ("input sourceResourceID: %v, sourceType: %v, getValidCreationData result: %v, expected1 : %v, err: %v, expected2: %v" , test .sourceResourceID , test .sourceType , result , test .expected1 , err , test .expected2 )
411
+ }
412
+ }
413
+ }
0 commit comments