94 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
package v2
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestRepositoryNameRegexp(t *testing.T) {
 | 
						|
	for _, testcase := range []struct {
 | 
						|
		input string
 | 
						|
		err   error
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "short",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "simple/name",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "library/ubuntu",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "docker/stevvooe/app",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "aa/aa/aa/aa/aa/aa/aa/aa/aa/bb/bb/bb/bb/bb/bb",
 | 
						|
			err:   ErrRepositoryNameTooManyComponents,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "aa/aa/bb/bb/bb",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "a/a/a/b/b",
 | 
						|
			err:   ErrRepositoryNameComponentShort,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "a/a/a/a/",
 | 
						|
			err:   ErrRepositoryNameComponentShort,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "foo.com/bar/baz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "blog.foo.com/bar/baz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "asdf",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "asdf$$^/aa",
 | 
						|
			err:   ErrRepositoryNameComponentInvalid,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "aa-a/aa",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "aa/aa",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "a-a/a-a",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "a",
 | 
						|
			err:   ErrRepositoryNameComponentShort,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "a-/a/a/a",
 | 
						|
			err:   ErrRepositoryNameComponentInvalid,
 | 
						|
		},
 | 
						|
	} {
 | 
						|
 | 
						|
		failf := func(format string, v ...interface{}) {
 | 
						|
			t.Logf(testcase.input+": "+format, v...)
 | 
						|
			t.Fail()
 | 
						|
		}
 | 
						|
 | 
						|
		if err := ValidateRespositoryName(testcase.input); err != testcase.err {
 | 
						|
			if testcase.err != nil {
 | 
						|
				if err != nil {
 | 
						|
					failf("unexpected error for invalid repository: got %v, expected %v", err, testcase.err)
 | 
						|
				} else {
 | 
						|
					failf("expected invalid repository: %v", testcase.err)
 | 
						|
				}
 | 
						|
			} else {
 | 
						|
				if err != nil {
 | 
						|
					// Wrong error returned.
 | 
						|
					failf("unexpected error validating repository name: %v, expected %v", err, testcase.err)
 | 
						|
				} else {
 | 
						|
					failf("unexpected error validating repository name: %v", err)
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |