github.com/kimor79/packer@v0.8.7-0.20151221212622-d507b18eb4cf/builder/parallels/iso/builder_test.go (about)

     1  package iso
     2  
     3  import (
     4  	"github.com/mitchellh/packer/packer"
     5  	"testing"
     6  )
     7  
     8  func testConfig() map[string]interface{} {
     9  	return map[string]interface{}{
    10  		"iso_checksum":           "foo",
    11  		"iso_checksum_type":      "md5",
    12  		"iso_url":                "http://www.google.com/",
    13  		"shutdown_command":       "yes",
    14  		"ssh_username":           "foo",
    15  		"parallels_tools_flavor": "lin",
    16  
    17  		packer.BuildNameConfigKey: "foo",
    18  	}
    19  }
    20  
    21  func TestBuilder_ImplementsBuilder(t *testing.T) {
    22  	var raw interface{}
    23  	raw = &Builder{}
    24  	if _, ok := raw.(packer.Builder); !ok {
    25  		t.Error("Builder must implement builder.")
    26  	}
    27  }
    28  
    29  func TestBuilderPrepare_Defaults(t *testing.T) {
    30  	var b Builder
    31  	config := testConfig()
    32  	warns, err := b.Prepare(config)
    33  	if len(warns) > 0 {
    34  		t.Fatalf("bad: %#v", warns)
    35  	}
    36  	if err != nil {
    37  		t.Fatalf("should not have error: %s", err)
    38  	}
    39  
    40  	if b.config.GuestOSType != "other" {
    41  		t.Errorf("bad guest OS type: %s", b.config.GuestOSType)
    42  	}
    43  
    44  	if b.config.VMName != "packer-foo" {
    45  		t.Errorf("bad vm name: %s", b.config.VMName)
    46  	}
    47  }
    48  
    49  func TestBuilderPrepare_DiskSize(t *testing.T) {
    50  	var b Builder
    51  	config := testConfig()
    52  
    53  	delete(config, "disk_size")
    54  	warns, err := b.Prepare(config)
    55  	if len(warns) > 0 {
    56  		t.Fatalf("bad: %#v", warns)
    57  	}
    58  	if err != nil {
    59  		t.Fatalf("bad err: %s", err)
    60  	}
    61  
    62  	if b.config.DiskSize != 40000 {
    63  		t.Fatalf("bad size: %d", b.config.DiskSize)
    64  	}
    65  
    66  	config["disk_size"] = 60000
    67  	b = Builder{}
    68  	warns, err = b.Prepare(config)
    69  	if len(warns) > 0 {
    70  		t.Fatalf("bad: %#v", warns)
    71  	}
    72  	if err != nil {
    73  		t.Fatalf("should not have error: %s", err)
    74  	}
    75  
    76  	if b.config.DiskSize != 60000 {
    77  		t.Fatalf("bad size: %d", b.config.DiskSize)
    78  	}
    79  }
    80  
    81  func TestBuilderPrepare_GuestOSType(t *testing.T) {
    82  	var b Builder
    83  	config := testConfig()
    84  	delete(config, "guest_os_distribution")
    85  
    86  	// Test deprecated parameter
    87  	config["guest_os_distribution"] = "bolgenos"
    88  	warns, err := b.Prepare(config)
    89  	if len(warns) == 0 {
    90  		t.Fatalf("should have warning")
    91  	}
    92  	if err != nil {
    93  		t.Fatalf("should not have error: %s", err)
    94  	}
    95  	if b.config.GuestOSType != "bolgenos" {
    96  		t.Fatalf("bad: %s", b.config.GuestOSType)
    97  	}
    98  }
    99  
   100  func TestBuilderPrepare_HardDriveInterface(t *testing.T) {
   101  	var b Builder
   102  	config := testConfig()
   103  
   104  	// Test a default boot_wait
   105  	delete(config, "hard_drive_interface")
   106  	warns, err := b.Prepare(config)
   107  	if len(warns) > 0 {
   108  		t.Fatalf("bad: %#v", warns)
   109  	}
   110  	if err != nil {
   111  		t.Fatalf("err: %s", err)
   112  	}
   113  
   114  	if b.config.HardDriveInterface != "sata" {
   115  		t.Fatalf("bad: %s", b.config.HardDriveInterface)
   116  	}
   117  
   118  	// Test with a bad
   119  	config["hard_drive_interface"] = "fake"
   120  	b = Builder{}
   121  	warns, err = b.Prepare(config)
   122  	if len(warns) > 0 {
   123  		t.Fatalf("bad: %#v", warns)
   124  	}
   125  	if err == nil {
   126  		t.Fatal("should have error")
   127  	}
   128  
   129  	// Test with a good
   130  	config["hard_drive_interface"] = "scsi"
   131  	b = Builder{}
   132  	warns, err = b.Prepare(config)
   133  	if len(warns) > 0 {
   134  		t.Fatalf("bad: %#v", warns)
   135  	}
   136  	if err != nil {
   137  		t.Fatalf("should not have error: %s", err)
   138  	}
   139  }
   140  
   141  func TestBuilderPrepare_HTTPPort(t *testing.T) {
   142  	var b Builder
   143  	config := testConfig()
   144  
   145  	// Bad
   146  	config["http_port_min"] = 1000
   147  	config["http_port_max"] = 500
   148  	warns, err := b.Prepare(config)
   149  	if len(warns) > 0 {
   150  		t.Fatalf("bad: %#v", warns)
   151  	}
   152  	if err == nil {
   153  		t.Fatal("should have error")
   154  	}
   155  
   156  	// Bad
   157  	config["http_port_min"] = -500
   158  	b = Builder{}
   159  	warns, err = b.Prepare(config)
   160  	if len(warns) > 0 {
   161  		t.Fatalf("bad: %#v", warns)
   162  	}
   163  	if err == nil {
   164  		t.Fatal("should have error")
   165  	}
   166  
   167  	// Good
   168  	config["http_port_min"] = 500
   169  	config["http_port_max"] = 1000
   170  	b = Builder{}
   171  	warns, err = b.Prepare(config)
   172  	if len(warns) > 0 {
   173  		t.Fatalf("bad: %#v", warns)
   174  	}
   175  	if err != nil {
   176  		t.Fatalf("should not have error: %s", err)
   177  	}
   178  }
   179  
   180  func TestBuilderPrepare_InvalidKey(t *testing.T) {
   181  	var b Builder
   182  	config := testConfig()
   183  
   184  	// Add a random key
   185  	config["i_should_not_be_valid"] = true
   186  	warns, err := b.Prepare(config)
   187  	if len(warns) > 0 {
   188  		t.Fatalf("bad: %#v", warns)
   189  	}
   190  	if err == nil {
   191  		t.Fatal("should have error")
   192  	}
   193  }
   194  
   195  func TestBuilderPrepare_ParallelsToolsHostPath(t *testing.T) {
   196  	var b Builder
   197  	config := testConfig()
   198  	delete(config, "parallels_tools_host_path")
   199  
   200  	// Test that it is deprecated
   201  	config["parallels_tools_host_path"] = "/path/to/iso"
   202  	warns, err := b.Prepare(config)
   203  	if len(warns) == 0 {
   204  		t.Fatalf("should have warning")
   205  	}
   206  	if err != nil {
   207  		t.Fatalf("should not have error: %s", err)
   208  	}
   209  }