github.com/aclaygray/packer@v1.3.2/post-processor/docker-push/post-processor_test.go (about)

     1  package dockerpush
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/packer/builder/docker"
     8  	"github.com/hashicorp/packer/packer"
     9  	"github.com/hashicorp/packer/post-processor/docker-import"
    10  )
    11  
    12  func testConfig() map[string]interface{} {
    13  	return map[string]interface{}{}
    14  }
    15  
    16  func testPP(t *testing.T) *PostProcessor {
    17  	var p PostProcessor
    18  	if err := p.Configure(testConfig()); err != nil {
    19  		t.Fatalf("err: %s", err)
    20  	}
    21  
    22  	return &p
    23  }
    24  
    25  func testUi() *packer.BasicUi {
    26  	return &packer.BasicUi{
    27  		Reader: new(bytes.Buffer),
    28  		Writer: new(bytes.Buffer),
    29  	}
    30  }
    31  
    32  func TestPostProcessor_ImplementsPostProcessor(t *testing.T) {
    33  	var _ packer.PostProcessor = new(PostProcessor)
    34  }
    35  
    36  func TestPostProcessor_PostProcess(t *testing.T) {
    37  	driver := &docker.MockDriver{}
    38  	p := &PostProcessor{Driver: driver}
    39  	artifact := &packer.MockArtifact{
    40  		BuilderIdValue: dockerimport.BuilderId,
    41  		IdValue:        "foo/bar",
    42  	}
    43  
    44  	result, keep, err := p.PostProcess(testUi(), artifact)
    45  	if _, ok := result.(packer.Artifact); !ok {
    46  		t.Fatal("should be instance of Artifact")
    47  	}
    48  	if !keep {
    49  		t.Fatal("should keep")
    50  	}
    51  	if err != nil {
    52  		t.Fatalf("err: %s", err)
    53  	}
    54  
    55  	if !driver.PushCalled {
    56  		t.Fatal("should call push")
    57  	}
    58  	if driver.PushName != "foo/bar" {
    59  		t.Fatal("bad name")
    60  	}
    61  	if result.Id() != "foo/bar" {
    62  		t.Fatal("bad image id")
    63  	}
    64  }
    65  
    66  func TestPostProcessor_PostProcess_portInName(t *testing.T) {
    67  	driver := &docker.MockDriver{}
    68  	p := &PostProcessor{Driver: driver}
    69  	artifact := &packer.MockArtifact{
    70  		BuilderIdValue: dockerimport.BuilderId,
    71  		IdValue:        "localhost:5000/foo/bar",
    72  	}
    73  
    74  	result, keep, err := p.PostProcess(testUi(), artifact)
    75  	if _, ok := result.(packer.Artifact); !ok {
    76  		t.Fatal("should be instance of Artifact")
    77  	}
    78  	if !keep {
    79  		t.Fatal("should keep")
    80  	}
    81  	if err != nil {
    82  		t.Fatalf("err: %s", err)
    83  	}
    84  
    85  	if !driver.PushCalled {
    86  		t.Fatal("should call push")
    87  	}
    88  	if driver.PushName != "localhost:5000/foo/bar" {
    89  		t.Fatal("bad name")
    90  	}
    91  	if result.Id() != "localhost:5000/foo/bar" {
    92  		t.Fatal("bad image id")
    93  	}
    94  }
    95  
    96  func TestPostProcessor_PostProcess_tags(t *testing.T) {
    97  	driver := &docker.MockDriver{}
    98  	p := &PostProcessor{Driver: driver}
    99  	artifact := &packer.MockArtifact{
   100  		BuilderIdValue: dockerimport.BuilderId,
   101  		IdValue:        "hashicorp/ubuntu:precise",
   102  	}
   103  
   104  	result, keep, err := p.PostProcess(testUi(), artifact)
   105  	if _, ok := result.(packer.Artifact); !ok {
   106  		t.Fatal("should be instance of Artifact")
   107  	}
   108  	if !keep {
   109  		t.Fatal("should keep")
   110  	}
   111  	if err != nil {
   112  		t.Fatalf("err: %s", err)
   113  	}
   114  
   115  	if !driver.PushCalled {
   116  		t.Fatal("should call push")
   117  	}
   118  	if driver.PushName != "hashicorp/ubuntu:precise" {
   119  		t.Fatalf("bad name: %s", driver.PushName)
   120  	}
   121  	if result.Id() != "hashicorp/ubuntu:precise" {
   122  		t.Fatal("bad image id")
   123  	}
   124  }