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