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 }