github.com/askholme/packer@v0.7.2-0.20140924152349-70d9566a6852/packer/rpc/post_processor_test.go (about) 1 package rpc 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "reflect" 6 "testing" 7 ) 8 9 var testPostProcessorArtifact = new(packer.MockArtifact) 10 11 type TestPostProcessor struct { 12 configCalled bool 13 configVal []interface{} 14 ppCalled bool 15 ppArtifact packer.Artifact 16 ppArtifactId string 17 ppUi packer.Ui 18 } 19 20 func (pp *TestPostProcessor) Configure(v ...interface{}) error { 21 pp.configCalled = true 22 pp.configVal = v 23 return nil 24 } 25 26 func (pp *TestPostProcessor) PostProcess(ui packer.Ui, a packer.Artifact) (packer.Artifact, bool, error) { 27 pp.ppCalled = true 28 pp.ppArtifact = a 29 pp.ppArtifactId = a.Id() 30 pp.ppUi = ui 31 return testPostProcessorArtifact, false, nil 32 } 33 34 func TestPostProcessorRPC(t *testing.T) { 35 // Create the interface to test 36 p := new(TestPostProcessor) 37 38 // Start the server 39 client, server := testClientServer(t) 40 defer client.Close() 41 defer server.Close() 42 server.RegisterPostProcessor(p) 43 44 ppClient := client.PostProcessor() 45 46 // Test Configure 47 config := 42 48 err := ppClient.Configure(config) 49 if err != nil { 50 t.Fatalf("error: %s", err) 51 } 52 53 if !p.configCalled { 54 t.Fatal("config should be called") 55 } 56 57 expected := []interface{}{int64(42)} 58 if !reflect.DeepEqual(p.configVal, expected) { 59 t.Fatalf("unknown config value: %#v", p.configVal) 60 } 61 62 // Test PostProcess 63 a := &packer.MockArtifact{ 64 IdValue: "ppTestId", 65 } 66 ui := new(testUi) 67 artifact, _, err := ppClient.PostProcess(ui, a) 68 if err != nil { 69 t.Fatalf("err: %s", err) 70 } 71 72 if !p.ppCalled { 73 t.Fatal("postprocess should be called") 74 } 75 76 if p.ppArtifactId != "ppTestId" { 77 t.Fatalf("unknown artifact: %s", p.ppArtifact.Id()) 78 } 79 80 if artifact.Id() != "id" { 81 t.Fatalf("unknown artifact: %s", artifact.Id()) 82 } 83 } 84 85 func TestPostProcessor_Implements(t *testing.T) { 86 var raw interface{} 87 raw = new(postProcessor) 88 if _, ok := raw.(packer.PostProcessor); !ok { 89 t.Fatal("not a postprocessor") 90 } 91 }