github.com/rothwerx/packer@v0.9.0/builder/amazon/common/run_config_test.go (about) 1 package common 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/mitchellh/packer/helper/communicator" 9 ) 10 11 func init() { 12 // Clear out the AWS access key env vars so they don't 13 // affect our tests. 14 os.Setenv("AWS_ACCESS_KEY_ID", "") 15 os.Setenv("AWS_ACCESS_KEY", "") 16 os.Setenv("AWS_SECRET_ACCESS_KEY", "") 17 os.Setenv("AWS_SECRET_KEY", "") 18 } 19 20 func testConfig() *RunConfig { 21 return &RunConfig{ 22 SourceAmi: "abcd", 23 InstanceType: "m1.small", 24 25 Comm: communicator.Config{ 26 SSHUsername: "foo", 27 }, 28 } 29 } 30 31 func TestRunConfigPrepare(t *testing.T) { 32 c := testConfig() 33 err := c.Prepare(nil) 34 if len(err) > 0 { 35 t.Fatalf("err: %s", err) 36 } 37 } 38 39 func TestRunConfigPrepare_InstanceType(t *testing.T) { 40 c := testConfig() 41 c.InstanceType = "" 42 if err := c.Prepare(nil); len(err) != 1 { 43 t.Fatalf("err: %s", err) 44 } 45 } 46 47 func TestRunConfigPrepare_SourceAmi(t *testing.T) { 48 c := testConfig() 49 c.SourceAmi = "" 50 if err := c.Prepare(nil); len(err) != 1 { 51 t.Fatalf("err: %s", err) 52 } 53 } 54 55 func TestRunConfigPrepare_SpotAuto(t *testing.T) { 56 c := testConfig() 57 c.SpotPrice = "auto" 58 if err := c.Prepare(nil); len(err) != 1 { 59 t.Fatalf("err: %s", err) 60 } 61 62 c.SpotPriceAutoProduct = "foo" 63 if err := c.Prepare(nil); len(err) != 0 { 64 t.Fatalf("err: %s", err) 65 } 66 } 67 68 func TestRunConfigPrepare_SSHPort(t *testing.T) { 69 c := testConfig() 70 c.Comm.SSHPort = 0 71 if err := c.Prepare(nil); len(err) != 0 { 72 t.Fatalf("err: %s", err) 73 } 74 75 if c.Comm.SSHPort != 22 { 76 t.Fatalf("invalid value: %d", c.Comm.SSHPort) 77 } 78 79 c.Comm.SSHPort = 44 80 if err := c.Prepare(nil); len(err) != 0 { 81 t.Fatalf("err: %s", err) 82 } 83 84 if c.Comm.SSHPort != 44 { 85 t.Fatalf("invalid value: %d", c.Comm.SSHPort) 86 } 87 } 88 89 func TestRunConfigPrepare_SSHUsername(t *testing.T) { 90 c := testConfig() 91 c.Comm.SSHUsername = "" 92 if err := c.Prepare(nil); len(err) != 1 { 93 t.Fatalf("err: %s", err) 94 } 95 } 96 97 func TestRunConfigPrepare_UserData(t *testing.T) { 98 c := testConfig() 99 tf, err := ioutil.TempFile("", "packer") 100 if err != nil { 101 t.Fatalf("err: %s", err) 102 } 103 defer tf.Close() 104 105 c.UserData = "foo" 106 c.UserDataFile = tf.Name() 107 if err := c.Prepare(nil); len(err) != 1 { 108 t.Fatalf("err: %s", err) 109 } 110 } 111 112 func TestRunConfigPrepare_UserDataFile(t *testing.T) { 113 c := testConfig() 114 if err := c.Prepare(nil); len(err) != 0 { 115 t.Fatalf("err: %s", err) 116 } 117 118 c.UserDataFile = "idontexistidontthink" 119 if err := c.Prepare(nil); len(err) != 1 { 120 t.Fatalf("err: %s", err) 121 } 122 123 tf, err := ioutil.TempFile("", "packer") 124 if err != nil { 125 t.Fatalf("err: %s", err) 126 } 127 defer tf.Close() 128 129 c.UserDataFile = tf.Name() 130 if err := c.Prepare(nil); len(err) != 0 { 131 t.Fatalf("err: %s", err) 132 } 133 } 134 135 func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) { 136 c := testConfig() 137 c.TemporaryKeyPairName = "" 138 if err := c.Prepare(nil); len(err) != 0 { 139 t.Fatalf("err: %s", err) 140 } 141 142 if c.TemporaryKeyPairName == "" { 143 t.Fatal("keypair empty") 144 } 145 }