github.com/ijc/docker-app@v0.6.1-0.20181012090447-c7ca8bc483fb/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 // FIXME(vdemeester) we should fail here 41 {name: "foo/bar/", expected: "foo/bar/.dockerapp"}, 42 {name: "/foo/bar.dockerapp", expected: "/foo/bar.dockerapp"}, 43 } 44 for _, tc := range cases { 45 assert.Check(t, is.Equal(DirNameFromAppName(tc.name), tc.expected)) 46 } 47 } 48 49 func TestValidateAppName(t *testing.T) { 50 validNames := []string{ 51 "app", "app1", "my-app", "their_app", "app_01_02_-", 52 "LunchBox", "aPP01", "APP365", 53 } 54 55 invalidNames := []string{ 56 "_app", "-app", "01_app", "$$$$$", "app$", "/my/app", 57 "(u|\\|[|-||30><", "Our Fortress Is Burning", "d\nx", 58 "my_\"app\"", 59 } 60 61 for _, name := range validNames { 62 err := ValidateAppName(name) 63 assert.NilError(t, err) 64 } 65 66 for _, name := range invalidNames { 67 err := ValidateAppName(name) 68 assert.ErrorContains(t, err, fmt.Sprintf("invalid app name: %s", name)) 69 } 70 }