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  }