github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/internal/inspect/inspect_test.go (about) 1 package inspect 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/docker/app/internal" 9 "github.com/docker/app/types" 10 "gotest.tools/assert" 11 "gotest.tools/fs" 12 "gotest.tools/golden" 13 ) 14 15 const ( 16 composeYAML = `version: "3.1"` 17 ) 18 19 func TestInspect(t *testing.T) { 20 dir := fs.NewDir(t, "inspect", 21 fs.WithDir("no-maintainers", 22 fs.WithFile(internal.ComposeFileName, composeYAML), 23 fs.WithFile(internal.MetadataFileName, ` 24 version: 0.1.0 25 name: foo`), 26 fs.WithFile(internal.SettingsFileName, ``), 27 ), 28 fs.WithDir("no-description", 29 fs.WithFile(internal.ComposeFileName, composeYAML), 30 fs.WithFile(internal.MetadataFileName, ` 31 version: 0.1.0 32 name: foo 33 maintainers: 34 - name: foo 35 email: "foo@bar.com"`), 36 fs.WithFile(internal.SettingsFileName, ""), 37 ), 38 fs.WithDir("no-settings", 39 fs.WithFile(internal.ComposeFileName, composeYAML), 40 fs.WithFile(internal.MetadataFileName, ` 41 version: 0.1.0 42 name: foo 43 maintainers: 44 - name: foo 45 email: "foo@bar.com" 46 description: "this is sparta !"`), 47 fs.WithFile(internal.SettingsFileName, ""), 48 ), 49 fs.WithDir("overridden", 50 fs.WithFile(internal.ComposeFileName, ` 51 version: "3.1" 52 53 services: 54 web: 55 image: nginx 56 ports: 57 - ${web.port}:80 58 `), 59 fs.WithFile(internal.MetadataFileName, ` 60 version: 0.1.0 61 name: foo 62 `), 63 fs.WithFile(internal.SettingsFileName, ""), 64 ), 65 fs.WithDir("full", 66 fs.WithFile(internal.ComposeFileName, ` 67 version: "3.1" 68 69 services: 70 web: 71 image: nginx:latest 72 ports: 73 - 8080-8100:12300-12320 74 deploy: 75 replicas: 2 76 networks: 77 my-network: 78 volumes: 79 my-volume: 80 secrets: 81 my-secret: 82 file: ./my_secret.txt 83 `), 84 fs.WithFile(internal.MetadataFileName, ` 85 version: 0.1.0 86 name: foo 87 maintainers: 88 - name: foo 89 email: "foo@bar.com" 90 description: "this is sparta !"`), 91 fs.WithFile(internal.SettingsFileName, ` 92 port: 8080 93 text: hello`), 94 fs.WithFile("config.cfg", "something"), 95 ), 96 ) 97 defer dir.Remove() 98 99 for _, testcase := range []struct { 100 name string 101 args map[string]string 102 }{ 103 {name: "no-maintainers"}, 104 {name: "no-description"}, 105 {name: "no-settings"}, 106 {name: "overridden", args: map[string]string{"web.port": "80"}}, 107 {name: "full"}, 108 } { 109 t.Run(testcase.name, func(t *testing.T) { 110 outBuffer := new(bytes.Buffer) 111 app, err := types.NewAppFromDefaultFiles(dir.Join(testcase.name)) 112 assert.NilError(t, err) 113 err = Inspect(outBuffer, app, testcase.args) 114 assert.NilError(t, err) 115 assert.Assert(t, golden.String(outBuffer.String(), fmt.Sprintf("inspect-%s.golden", testcase.name))) 116 }) 117 } 118 }