github.com/yoctocloud/packer@v0.6.2-0.20160520224004-e11a0a18423f/builder/azure/arm/step_delete_os_disk_test.go (about) 1 // Copyright (c) Microsoft Corporation. All rights reserved. 2 // Licensed under the MIT License. See the LICENSE file in builder/azure for license information. 3 4 package arm 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/mitchellh/multistep" 11 "github.com/mitchellh/packer/builder/azure/common/constants" 12 ) 13 14 func TestStepDeleteOSDiskShouldFailIfGetFails(t *testing.T) { 15 var testSubject = &StepDeleteOSDisk{ 16 delete: func(string, string) error { return fmt.Errorf("!! Unit Test FAIL !!") }, 17 say: func(message string) {}, 18 error: func(e error) {}, 19 } 20 21 stateBag := DeleteTestStateBagStepDeleteOSDisk("http://storage.blob.core.windows.net/images/pkrvm_os.vhd") 22 23 var result = testSubject.Run(stateBag) 24 if result != multistep.ActionHalt { 25 t.Fatalf("Expected the step to return 'ActionHalt', but got '%d'.", result) 26 } 27 28 if _, ok := stateBag.GetOk(constants.Error); ok == false { 29 t.Fatalf("Expected the step to set stateBag['%s'], but it was not.", constants.Error) 30 } 31 } 32 33 func TestStepDeleteOSDiskShouldPassIfGetPasses(t *testing.T) { 34 var testSubject = &StepDeleteOSDisk{ 35 delete: func(string, string) error { return nil }, 36 say: func(message string) {}, 37 error: func(e error) {}, 38 } 39 40 stateBag := DeleteTestStateBagStepDeleteOSDisk("http://storage.blob.core.windows.net/images/pkrvm_os.vhd") 41 42 var result = testSubject.Run(stateBag) 43 if result != multistep.ActionContinue { 44 t.Fatalf("Expected the step to return 'ActionContinue', but got '%d'.", result) 45 } 46 47 if _, ok := stateBag.GetOk(constants.Error); ok == true { 48 t.Fatalf("Expected the step to not set stateBag['%s'], but it was.", constants.Error) 49 } 50 } 51 52 func TestStepDeleteOSDiskShouldTakeStepArgumentsFromStateBag(t *testing.T) { 53 var actualStorageContainerName string 54 var actualBlobName string 55 56 var testSubject = &StepDeleteOSDisk{ 57 delete: func(storageContainerName string, blobName string) error { 58 actualStorageContainerName = storageContainerName 59 actualBlobName = blobName 60 return nil 61 }, 62 say: func(message string) {}, 63 error: func(e error) {}, 64 } 65 66 stateBag := DeleteTestStateBagStepDeleteOSDisk("http://storage.blob.core.windows.net/images/pkrvm_os.vhd") 67 var result = testSubject.Run(stateBag) 68 69 if result != multistep.ActionContinue { 70 t.Fatalf("Expected the step to return 'ActionContinue', but got '%d'.", result) 71 } 72 73 if actualStorageContainerName != "images" { 74 t.Fatalf("Expected the storage container name to be 'images', but found '%s'.", actualStorageContainerName) 75 } 76 77 if actualBlobName != "pkrvm_os.vhd" { 78 t.Fatalf("Expected the blob name to be 'pkrvm_os.vhd', but found '%s'.", actualBlobName) 79 } 80 } 81 82 func TestStepDeleteOSDiskShouldHandleComplexStorageContainerNames(t *testing.T) { 83 var actualStorageContainerName string 84 var actualBlobName string 85 86 var testSubject = &StepDeleteOSDisk{ 87 delete: func(storageContainerName string, blobName string) error { 88 actualStorageContainerName = storageContainerName 89 actualBlobName = blobName 90 return nil 91 }, 92 say: func(message string) {}, 93 error: func(e error) {}, 94 } 95 96 stateBag := DeleteTestStateBagStepDeleteOSDisk("http://storage.blob.core.windows.net/abc/def/pkrvm_os.vhd") 97 testSubject.Run(stateBag) 98 99 if actualStorageContainerName != "abc" { 100 t.Fatalf("Expected the storage container name to be 'abc/def', but found '%s'.", actualStorageContainerName) 101 } 102 103 if actualBlobName != "def/pkrvm_os.vhd" { 104 t.Fatalf("Expected the blob name to be 'pkrvm_os.vhd', but found '%s'.", actualBlobName) 105 } 106 } 107 108 func DeleteTestStateBagStepDeleteOSDisk(osDiskVhd string) multistep.StateBag { 109 stateBag := new(multistep.BasicStateBag) 110 stateBag.Put(constants.ArmOSDiskVhd, osDiskVhd) 111 112 return stateBag 113 }