github.com/sneal/packer@v0.5.2/builder/amazon/ebs/builder_test.go (about) 1 package ebs 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "testing" 6 ) 7 8 func testConfig() map[string]interface{} { 9 return map[string]interface{}{ 10 "access_key": "foo", 11 "secret_key": "bar", 12 "source_ami": "foo", 13 "instance_type": "foo", 14 "region": "us-east-1", 15 "ssh_username": "root", 16 "ami_name": "foo", 17 } 18 } 19 20 func TestBuilder_ImplementsBuilder(t *testing.T) { 21 var raw interface{} 22 raw = &Builder{} 23 if _, ok := raw.(packer.Builder); !ok { 24 t.Fatalf("Builder should be a builder") 25 } 26 } 27 28 func TestBuilder_Prepare_BadType(t *testing.T) { 29 b := &Builder{} 30 c := map[string]interface{}{ 31 "access_key": []string{}, 32 } 33 34 warnings, err := b.Prepare(c) 35 if len(warnings) > 0 { 36 t.Fatalf("bad: %#v", warnings) 37 } 38 if err == nil { 39 t.Fatalf("prepare should fail") 40 } 41 } 42 43 func TestBuilderPrepare_AMIName(t *testing.T) { 44 var b Builder 45 config := testConfig() 46 47 // Test good 48 config["ami_name"] = "foo" 49 warnings, err := b.Prepare(config) 50 if len(warnings) > 0 { 51 t.Fatalf("bad: %#v", warnings) 52 } 53 if err != nil { 54 t.Fatalf("should not have error: %s", err) 55 } 56 57 // Test bad 58 config["ami_name"] = "foo {{" 59 b = Builder{} 60 warnings, err = b.Prepare(config) 61 if len(warnings) > 0 { 62 t.Fatalf("bad: %#v", warnings) 63 } 64 if err == nil { 65 t.Fatal("should have error") 66 } 67 68 // Test bad 69 delete(config, "ami_name") 70 b = Builder{} 71 warnings, err = b.Prepare(config) 72 if len(warnings) > 0 { 73 t.Fatalf("bad: %#v", warnings) 74 } 75 if err == nil { 76 t.Fatal("should have error") 77 } 78 } 79 80 func TestBuilderPrepare_InvalidKey(t *testing.T) { 81 var b Builder 82 config := testConfig() 83 84 // Add a random key 85 config["i_should_not_be_valid"] = true 86 warnings, err := b.Prepare(config) 87 if len(warnings) > 0 { 88 t.Fatalf("bad: %#v", warnings) 89 } 90 if err == nil { 91 t.Fatal("should have error") 92 } 93 }