github.com/phobos182/packer@v0.2.3-0.20130819023704-c84d2aeffc68/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_SSHPort(t *testing.T) {
    51  	c := testConfig()
    52  	c.SSHPort = 0
    53  	if err := c.Prepare(nil); len(err) != 0 {
    54  		t.Fatalf("err: %s", err)
    55  	}
    56  
    57  	if c.SSHPort != 22 {
    58  		t.Fatalf("invalid value: %d", c.SSHPort)
    59  	}
    60  
    61  	c.SSHPort = 44
    62  	if err := c.Prepare(nil); len(err) != 0 {
    63  		t.Fatalf("err: %s", err)
    64  	}
    65  
    66  	if c.SSHPort != 44 {
    67  		t.Fatalf("invalid value: %d", c.SSHPort)
    68  	}
    69  }
    70  
    71  func TestRunConfigPrepare_SSHTimeout(t *testing.T) {
    72  	c := testConfig()
    73  	c.RawSSHTimeout = ""
    74  	if err := c.Prepare(nil); len(err) != 0 {
    75  		t.Fatalf("err: %s", err)
    76  	}
    77  
    78  	c.RawSSHTimeout = "bad"
    79  	if err := c.Prepare(nil); len(err) != 1 {
    80  		t.Fatalf("err: %s", err)
    81  	}
    82  }
    83  
    84  func TestRunConfigPrepare_SSHUsername(t *testing.T) {
    85  	c := testConfig()
    86  	c.SSHUsername = ""
    87  	if err := c.Prepare(nil); len(err) != 1 {
    88  		t.Fatalf("err: %s", err)
    89  	}
    90  }
    91  
    92  func TestRunConfigPrepare_UserData(t *testing.T) {
    93  	c := testConfig()
    94  	tf, err := ioutil.TempFile("", "packer")
    95  	if err != nil {
    96  		t.Fatalf("err: %s", err)
    97  	}
    98  	defer tf.Close()
    99  
   100  	c.UserData = "foo"
   101  	c.UserDataFile = tf.Name()
   102  	if err := c.Prepare(nil); len(err) != 1 {
   103  		t.Fatalf("err: %s", err)
   104  	}
   105  }
   106  
   107  func TestRunConfigPrepare_UserDataFile(t *testing.T) {
   108  	c := testConfig()
   109  	if err := c.Prepare(nil); len(err) != 0 {
   110  		t.Fatalf("err: %s", err)
   111  	}
   112  
   113  	c.UserDataFile = "idontexistidontthink"
   114  	if err := c.Prepare(nil); len(err) != 1 {
   115  		t.Fatalf("err: %s", err)
   116  	}
   117  
   118  	tf, err := ioutil.TempFile("", "packer")
   119  	if err != nil {
   120  		t.Fatalf("err: %s", err)
   121  	}
   122  	defer tf.Close()
   123  
   124  	c.UserDataFile = tf.Name()
   125  	if err := c.Prepare(nil); len(err) != 0 {
   126  		t.Fatalf("err: %s", err)
   127  	}
   128  }