package openstack import ( "github.com/mitchellh/packer/packer" "testing" ) func testConfig() map[string]interface{} { return map[string]interface{}{ "username": "foo", "password": "bar", "provider": "foo", "region": "DFW", "image_name": "foo", "source_image": "foo", "flavor": "foo", "ssh_username": "root", } } func TestBuilder_ImplementsBuilder(t *testing.T) { var raw interface{} raw = &Builder{} if _, ok := raw.(packer.Builder); !ok { t.Fatalf("Builder should be a builder") } } func TestBuilder_Prepare_BadType(t *testing.T) { b := &Builder{} c := map[string]interface{}{ "password": []string{}, } warns, err := b.Prepare(c) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) } if err == nil { t.Fatalf("prepare should fail") } } func TestBuilderPrepare_ImageName(t *testing.T) { var b Builder config := testConfig() // Test good config["image_name"] = "foo" warns, err := b.Prepare(config) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) } if err != nil { t.Fatalf("should not have error: %s", err) } // Test bad config["image_name"] = "foo {{" b = Builder{} warns, err = b.Prepare(config) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) } if err == nil { t.Fatal("should have error") } // Test bad delete(config, "image_name") b = Builder{} warns, err = b.Prepare(config) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) } if err == nil { t.Fatal("should have error") } } func TestBuilderPrepare_InvalidKey(t *testing.T) { var b Builder config := testConfig() // Add a random key config["i_should_not_be_valid"] = true warns, err := b.Prepare(config) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) } if err == nil { t.Fatal("should have error") } }