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  }