github.phpd.cn/hashicorp/packer@v1.3.2/builder/alicloud/ecs/run_config_test.go (about) 1 package ecs 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/hashicorp/packer/helper/communicator" 9 ) 10 11 func testConfig() *RunConfig { 12 return &RunConfig{ 13 AlicloudSourceImage: "alicloud_images", 14 InstanceType: "ecs.n1.tiny", 15 Comm: communicator.Config{ 16 SSHUsername: "alicloud", 17 }, 18 } 19 } 20 21 func TestRunConfigPrepare(t *testing.T) { 22 c := testConfig() 23 err := c.Prepare(nil) 24 if len(err) > 0 { 25 t.Fatalf("err: %s", err) 26 } 27 } 28 29 func TestRunConfigPrepare_InstanceType(t *testing.T) { 30 c := testConfig() 31 c.InstanceType = "" 32 if err := c.Prepare(nil); len(err) != 1 { 33 t.Fatalf("err: %s", err) 34 } 35 } 36 37 func TestRunConfigPrepare_SourceECSImage(t *testing.T) { 38 c := testConfig() 39 c.AlicloudSourceImage = "" 40 if err := c.Prepare(nil); len(err) != 1 { 41 t.Fatalf("err: %s", err) 42 } 43 } 44 45 func TestRunConfigPrepare_SSHPort(t *testing.T) { 46 c := testConfig() 47 c.Comm.SSHPort = 0 48 if err := c.Prepare(nil); len(err) != 0 { 49 t.Fatalf("err: %s", err) 50 } 51 52 if c.Comm.SSHPort != 22 { 53 t.Fatalf("invalid value: %d", c.Comm.SSHPort) 54 } 55 56 c.Comm.SSHPort = 44 57 if err := c.Prepare(nil); len(err) != 0 { 58 t.Fatalf("err: %s", err) 59 } 60 61 if c.Comm.SSHPort != 44 { 62 t.Fatalf("invalid value: %d", c.Comm.SSHPort) 63 } 64 } 65 66 func TestRunConfigPrepare_UserData(t *testing.T) { 67 c := testConfig() 68 tf, err := ioutil.TempFile("", "packer") 69 if err != nil { 70 t.Fatalf("err: %s", err) 71 } 72 defer os.Remove(tf.Name()) 73 defer tf.Close() 74 75 c.UserData = "foo" 76 c.UserDataFile = tf.Name() 77 if err := c.Prepare(nil); len(err) != 1 { 78 t.Fatalf("err: %s", err) 79 } 80 } 81 82 func TestRunConfigPrepare_UserDataFile(t *testing.T) { 83 c := testConfig() 84 if err := c.Prepare(nil); len(err) != 0 { 85 t.Fatalf("err: %s", err) 86 } 87 88 c.UserDataFile = "idontexistidontthink" 89 if err := c.Prepare(nil); len(err) != 1 { 90 t.Fatalf("err: %s", err) 91 } 92 93 tf, err := ioutil.TempFile("", "packer") 94 if err != nil { 95 t.Fatalf("err: %s", err) 96 } 97 defer os.Remove(tf.Name()) 98 defer tf.Close() 99 100 c.UserDataFile = tf.Name() 101 if err := c.Prepare(nil); len(err) != 0 { 102 t.Fatalf("err: %s", err) 103 } 104 } 105 106 func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) { 107 c := testConfig() 108 c.Comm.SSHTemporaryKeyPairName = "" 109 if err := c.Prepare(nil); len(err) != 0 { 110 t.Fatalf("err: %s", err) 111 } 112 113 if c.Comm.SSHTemporaryKeyPairName == "" { 114 t.Fatal("keypair name is empty") 115 } 116 117 c.Comm.SSHTemporaryKeyPairName = "ssh-key-123" 118 if err := c.Prepare(nil); len(err) != 0 { 119 t.Fatalf("err: %s", err) 120 } 121 122 if c.Comm.SSHTemporaryKeyPairName != "ssh-key-123" { 123 t.Fatal("keypair name does not match") 124 } 125 } 126 127 func TestRunConfigPrepare_SSHPrivateIp(t *testing.T) { 128 c := testConfig() 129 if err := c.Prepare(nil); len(err) != 0 { 130 t.Fatalf("err: %s", err) 131 } 132 if c.SSHPrivateIp != false { 133 t.Fatalf("invalid value, expected: %t, actul: %t", false, c.SSHPrivateIp) 134 } 135 c.SSHPrivateIp = true 136 if err := c.Prepare(nil); len(err) != 0 { 137 t.Fatalf("err: %s", err) 138 } 139 if c.SSHPrivateIp != true { 140 t.Fatalf("invalid value, expected: %t, actul: %t", true, c.SSHPrivateIp) 141 } 142 c.SSHPrivateIp = false 143 if err := c.Prepare(nil); len(err) != 0 { 144 t.Fatalf("err: %s", err) 145 } 146 if c.SSHPrivateIp != false { 147 t.Fatalf("invalid value, expected: %t, actul: %t", false, c.SSHPrivateIp) 148 } 149 } 150 151 func TestRunConfigPrepare_DisableStopInstance(t *testing.T) { 152 c := testConfig() 153 154 if err := c.Prepare(nil); len(err) != 0 { 155 t.Fatalf("err: %s", err) 156 } 157 if c.DisableStopInstance != false { 158 t.Fatalf("invalid value, expected: %t, actul: %t", false, c.DisableStopInstance) 159 } 160 161 c.DisableStopInstance = true 162 if err := c.Prepare(nil); len(err) != 0 { 163 t.Fatalf("err: %s", err) 164 } 165 if c.DisableStopInstance != true { 166 t.Fatalf("invalid value, expected: %t, actul: %t", true, c.DisableStopInstance) 167 } 168 169 c.DisableStopInstance = false 170 if err := c.Prepare(nil); len(err) != 0 { 171 t.Fatalf("err: %s", err) 172 } 173 if c.DisableStopInstance != false { 174 t.Fatalf("invalid value, expected: %t, actul: %t", false, c.DisableStopInstance) 175 } 176 }