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 }