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  }