github.phpd.cn/hashicorp/packer@v1.3.2/builder/cloudstack/builder_test.go (about) 1 package cloudstack 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/packer/packer" 7 ) 8 9 func TestBuilder_Impl(t *testing.T) { 10 var raw interface{} = &Builder{} 11 12 if _, ok := raw.(packer.Builder); !ok { 13 t.Fatalf("Builder does not implement packer.Builder") 14 } 15 } 16 17 func TestBuilder_Prepare(t *testing.T) { 18 cases := map[string]struct { 19 Config map[string]interface{} 20 Err bool 21 }{ 22 "good": { 23 Config: map[string]interface{}{ 24 "api_url": "https://cloudstack.com/client/api", 25 "api_key": "some-api-key", 26 "secret_key": "some-secret-key", 27 "cidr_list": []interface{}{"0.0.0.0/0"}, 28 "disk_size": "20", 29 "network": "c5ed8a14-3f21-4fa9-bd74-bb887fc0ed0d", 30 "service_offering": "a29c52b1-a83d-4123-a57d-4548befa47a0", 31 "source_template": "d31e6af5-94a8-4756-abf3-6493c38db7e5", 32 "ssh_username": "ubuntu", 33 "template_os": "52d54d24-cef1-480b-b963-527703aa4ff9", 34 "zone": "a3b594d9-25e9-47c1-9c03-7a5fc61e3f43", 35 }, 36 Err: false, 37 }, 38 "bad": { 39 Err: true, 40 }, 41 } 42 43 b := &Builder{} 44 45 for desc, tc := range cases { 46 _, errs := b.Prepare(tc.Config) 47 48 if tc.Err { 49 if errs == nil { 50 t.Fatalf("%s prepare should err", desc) 51 } 52 } else { 53 if errs != nil { 54 t.Fatalf("%s prepare should not fail: %s", desc, errs) 55 } 56 } 57 } 58 }