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 }