github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/internal/packager/registry_test.go (about)

     1  package packager
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/docker/app/internal"
     7  	"github.com/docker/app/types"
     8  	"gotest.tools/assert"
     9  	is "gotest.tools/assert/cmp"
    10  	"gotest.tools/fs"
    11  )
    12  
    13  const (
    14  	validMeta = `name: test-app
    15  version: 0.1.0`
    16  	validCompose = `version: "3.0"
    17  services:
    18    web:
    19      image: nginx`
    20  	validSettings = `foo: bar`
    21  )
    22  
    23  func TestSplitImageName(t *testing.T) {
    24  	input := []string{
    25  		"official.dockerapp",
    26  		"touhou/reimu.dockerapp",
    27  		"tagged.dockerapp:1.2.25",
    28  		"touhou/sakuya.dockerapp:4.23",
    29  		"private.registry.co.uk/docker/anne.boleyn/annulment.dockerapp:15.28",
    30  	}
    31  
    32  	output := []imageComponents{
    33  		{Name: "official.dockerapp", Repository: "docker.io/library/official.dockerapp"},
    34  		{Name: "reimu.dockerapp", Repository: "docker.io/touhou/reimu.dockerapp"},
    35  		{Name: "tagged.dockerapp", Repository: "docker.io/library/tagged.dockerapp", Tag: "1.2.25"},
    36  		{Name: "sakuya.dockerapp", Repository: "docker.io/touhou/sakuya.dockerapp", Tag: "4.23"},
    37  		{Name: "annulment.dockerapp", Repository: "private.registry.co.uk/docker/anne.boleyn/annulment.dockerapp", Tag: "15.28"},
    38  	}
    39  
    40  	for i, item := range input {
    41  		out, err := splitImageName(item)
    42  		assert.NilError(t, err, item)
    43  		assert.DeepEqual(t, out, &output[i])
    44  	}
    45  
    46  	invalids := []string{
    47  		"__.dockerapp",
    48  		"colon:colon:colon.dockerapp:colon",
    49  		"nametag.dockerapp:",
    50  		"ends/with/slash/",
    51  	}
    52  
    53  	for _, item := range invalids {
    54  		_, err := splitImageName(item)
    55  		assert.ErrorContains(t, err, "failed to parse image name", item)
    56  	}
    57  }
    58  
    59  func TestCreatePayload(t *testing.T) {
    60  	dir := fs.NewDir(t, "externalfile",
    61  		fs.WithFile(internal.MetadataFileName, validMeta),
    62  		fs.WithFile(internal.SettingsFileName, validSettings),
    63  		fs.WithFile(internal.ComposeFileName, validCompose),
    64  		fs.WithFile("config.cfg", "something"),
    65  		fs.WithDir("nesteddirectory",
    66  			fs.WithFile("nestedconfig.cfg", "something"),
    67  		),
    68  	)
    69  	defer dir.Remove()
    70  	app, err := types.NewAppFromDefaultFiles(dir.Path())
    71  	assert.NilError(t, err)
    72  
    73  	payload, err := createPayload(app)
    74  
    75  	assert.NilError(t, err)
    76  	assert.Assert(t, is.Len(payload, 5))
    77  	assert.Assert(t, is.Equal(payload["config.cfg"], "something"))
    78  	assert.Assert(t, is.Equal(payload["nesteddirectory/nestedconfig.cfg"], "something"))
    79  }