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  }