github.com/Hashicorp/packer@v1.3.2/builder/alicloud/ecs/builder_test.go (about)

     1  package ecs
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hashicorp/packer/packer"
     7  )
     8  
     9  func testBuilderConfig() map[string]interface{} {
    10  	return map[string]interface{}{
    11  		"access_key":    "foo",
    12  		"secret_key":    "bar",
    13  		"source_image":  "foo",
    14  		"instance_type": "ecs.n1.tiny",
    15  		"region":        "cn-beijing",
    16  		"ssh_username":  "root",
    17  		"image_name":    "foo",
    18  		"io_optimized":  true,
    19  	}
    20  }
    21  
    22  func TestBuilder_ImplementsBuilder(t *testing.T) {
    23  	var raw interface{}
    24  	raw = &Builder{}
    25  	if _, ok := raw.(packer.Builder); !ok {
    26  		t.Fatalf("Builder should be a builder")
    27  	}
    28  }
    29  
    30  func TestBuilder_Prepare_BadType(t *testing.T) {
    31  	b := &Builder{}
    32  	c := map[string]interface{}{
    33  		"access_key": []string{},
    34  	}
    35  
    36  	warnings, err := b.Prepare(c)
    37  	if len(warnings) > 0 {
    38  		t.Fatalf("bad: %#v", warnings)
    39  	}
    40  	if err == nil {
    41  		t.Fatalf("prepare should fail")
    42  	}
    43  }
    44  
    45  func TestBuilderPrepare_ECSImageName(t *testing.T) {
    46  	var b Builder
    47  	config := testBuilderConfig()
    48  
    49  	// Test good
    50  	config["image_name"] = "ecs.n1.tiny"
    51  	warnings, err := b.Prepare(config)
    52  	if len(warnings) > 0 {
    53  		t.Fatalf("bad: %#v", warnings)
    54  	}
    55  	if err != nil {
    56  		t.Fatalf("should not have error: %s", err)
    57  	}
    58  
    59  	// Test bad
    60  	config["ecs_image_name"] = "foo {{"
    61  	b = Builder{}
    62  	warnings, err = b.Prepare(config)
    63  	if len(warnings) > 0 {
    64  		t.Fatalf("bad: %#v", warnings)
    65  	}
    66  	if err == nil {
    67  		t.Fatal("should have error")
    68  	}
    69  
    70  	// Test bad
    71  	delete(config, "image_name")
    72  	b = Builder{}
    73  	warnings, err = b.Prepare(config)
    74  	if len(warnings) > 0 {
    75  		t.Fatalf("bad: %#v", warnings)
    76  	}
    77  	if err == nil {
    78  		t.Fatal("should have error")
    79  	}
    80  }
    81  
    82  func TestBuilderPrepare_InvalidKey(t *testing.T) {
    83  	var b Builder
    84  	config := testBuilderConfig()
    85  
    86  	// Add a random key
    87  	config["i_should_not_be_valid"] = true
    88  	warnings, err := b.Prepare(config)
    89  	if len(warnings) > 0 {
    90  		t.Fatalf("bad: %#v", warnings)
    91  	}
    92  	if err == nil {
    93  		t.Fatal("should have error")
    94  	}
    95  }