github.com/mmcquillan/packer@v1.1.1-0.20171009221028-c85cf0483a5d/builder/alicloud/ecs/run_config_test.go (about)

     1  package ecs
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/packer/helper/communicator"
     8  )
     9  
    10  func testConfig() *RunConfig {
    11  	return &RunConfig{
    12  		AlicloudSourceImage: "alicloud_images",
    13  		InstanceType:        "ecs.n1.tiny",
    14  		Comm: communicator.Config{
    15  			SSHUsername: "alicloud",
    16  		},
    17  	}
    18  }
    19  
    20  func TestRunConfigPrepare(t *testing.T) {
    21  	c := testConfig()
    22  	err := c.Prepare(nil)
    23  	if len(err) > 0 {
    24  		t.Fatalf("err: %s", err)
    25  	}
    26  }
    27  
    28  func TestRunConfigPrepare_InstanceType(t *testing.T) {
    29  	c := testConfig()
    30  	c.InstanceType = ""
    31  	if err := c.Prepare(nil); len(err) != 1 {
    32  		t.Fatalf("err: %s", err)
    33  	}
    34  }
    35  
    36  func TestRunConfigPrepare_SourceECSImage(t *testing.T) {
    37  	c := testConfig()
    38  	c.AlicloudSourceImage = ""
    39  	if err := c.Prepare(nil); len(err) != 1 {
    40  		t.Fatalf("err: %s", err)
    41  	}
    42  }
    43  
    44  func TestRunConfigPrepare_SSHPort(t *testing.T) {
    45  	c := testConfig()
    46  	c.Comm.SSHPort = 0
    47  	if err := c.Prepare(nil); len(err) != 0 {
    48  		t.Fatalf("err: %s", err)
    49  	}
    50  
    51  	if c.Comm.SSHPort != 22 {
    52  		t.Fatalf("invalid value: %d", c.Comm.SSHPort)
    53  	}
    54  
    55  	c.Comm.SSHPort = 44
    56  	if err := c.Prepare(nil); len(err) != 0 {
    57  		t.Fatalf("err: %s", err)
    58  	}
    59  
    60  	if c.Comm.SSHPort != 44 {
    61  		t.Fatalf("invalid value: %d", c.Comm.SSHPort)
    62  	}
    63  }
    64  
    65  func TestRunConfigPrepare_UserData(t *testing.T) {
    66  	c := testConfig()
    67  	tf, err := ioutil.TempFile("", "packer")
    68  	if err != nil {
    69  		t.Fatalf("err: %s", err)
    70  	}
    71  	defer tf.Close()
    72  
    73  	c.UserData = "foo"
    74  	c.UserDataFile = tf.Name()
    75  	if err := c.Prepare(nil); len(err) != 1 {
    76  		t.Fatalf("err: %s", err)
    77  	}
    78  }
    79  
    80  func TestRunConfigPrepare_UserDataFile(t *testing.T) {
    81  	c := testConfig()
    82  	if err := c.Prepare(nil); len(err) != 0 {
    83  		t.Fatalf("err: %s", err)
    84  	}
    85  
    86  	c.UserDataFile = "idontexistidontthink"
    87  	if err := c.Prepare(nil); len(err) != 1 {
    88  		t.Fatalf("err: %s", err)
    89  	}
    90  
    91  	tf, err := ioutil.TempFile("", "packer")
    92  	if err != nil {
    93  		t.Fatalf("err: %s", err)
    94  	}
    95  	defer tf.Close()
    96  
    97  	c.UserDataFile = tf.Name()
    98  	if err := c.Prepare(nil); len(err) != 0 {
    99  		t.Fatalf("err: %s", err)
   100  	}
   101  }
   102  
   103  func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) {
   104  	c := testConfig()
   105  	c.TemporaryKeyPairName = ""
   106  	if err := c.Prepare(nil); len(err) != 0 {
   107  		t.Fatalf("err: %s", err)
   108  	}
   109  
   110  	if c.TemporaryKeyPairName == "" {
   111  		t.Fatal("keypair name is empty")
   112  	}
   113  
   114  	c.TemporaryKeyPairName = "ssh-key-123"
   115  	if err := c.Prepare(nil); len(err) != 0 {
   116  		t.Fatalf("err: %s", err)
   117  	}
   118  
   119  	if c.TemporaryKeyPairName != "ssh-key-123" {
   120  		t.Fatal("keypair name does not match")
   121  	}
   122  }