github.com/docker/app@v0.9.1-beta3.0.20210611140623-a48f773ab002/internal/names_test.go (about) 1 package internal 2 3 import ( 4 "fmt" 5 "testing" 6 7 "gotest.tools/assert" 8 is "gotest.tools/assert/cmp" 9 ) 10 11 func TestAppNameFromDir(t *testing.T) { 12 cases := []struct { 13 name, expected string 14 }{ 15 {name: "foo", expected: "foo"}, 16 {name: "foo.dockerapp", expected: "foo"}, 17 // FIXME(vdemeester) we should fail here 18 {name: ".dockerapp", expected: ""}, 19 {name: "foo/bar", expected: "bar"}, 20 {name: "foo/bar.dockerapp", expected: "bar"}, 21 // FIXME(vdemeester) we should fail here 22 {name: "foo/bar/.dockerapp", expected: ""}, 23 {name: "/foo/bar.dockerapp", expected: "bar"}, 24 } 25 for _, tc := range cases { 26 assert.Check(t, is.Equal(AppNameFromDir(tc.name), tc.expected)) 27 } 28 } 29 30 func TestDirNameFromAppName(t *testing.T) { 31 cases := []struct { 32 name, expected string 33 }{ 34 {name: "foo", expected: "foo.dockerapp"}, 35 {name: "foo.dockerapp", expected: "foo.dockerapp"}, 36 // FIXME(vdemeester) we should fail here 37 {name: "", expected: ".dockerapp"}, 38 {name: "foo/bar", expected: "foo/bar.dockerapp"}, 39 {name: "foo/bar.dockerapp", expected: "foo/bar.dockerapp"}, 40 {name: "foo/bar.dockerapp/", expected: "foo/bar.dockerapp/"}, 41 // FIXME(vdemeester) we should fail here 42 {name: "foo/bar/", expected: "foo/bar/.dockerapp"}, 43 {name: "/foo/bar.dockerapp", expected: "/foo/bar.dockerapp"}, 44 } 45 for _, tc := range cases { 46 assert.Check(t, is.Equal(DirNameFromAppName(tc.name), tc.expected)) 47 } 48 } 49 50 func TestValidateAppName(t *testing.T) { 51 validNames := []string{ 52 "app", "app1", "my-app", "their_app", "app_01_02_-", 53 "LunchBox", "aPP01", "APP365", 54 } 55 56 invalidNames := []string{ 57 "_app", "-app", "01_app", "$$$$$", "app$", "/my/app", 58 "(u|\\|[|-||30><", "Our Fortress Is Burning", "d\nx", 59 "my_\"app\"", 60 } 61 62 for _, name := range validNames { 63 err := ValidateAppName(name) 64 assert.NilError(t, err) 65 } 66 67 for _, name := range invalidNames { 68 err := ValidateAppName(name) 69 assert.ErrorContains(t, err, fmt.Sprintf("invalid app name: %s", name)) 70 } 71 }