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  }