github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/registry/config_test.go (about)

     1  package registry
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  )
     7  
     8  func TestValidateMirror(t *testing.T) {
     9  	valid := []string{
    10  		"http://mirror-1.com",
    11  		"http://mirror-1.com/",
    12  		"https://mirror-1.com",
    13  		"https://mirror-1.com/",
    14  		"http://localhost",
    15  		"https://localhost",
    16  		"http://localhost:5000",
    17  		"https://localhost:5000",
    18  		"http://127.0.0.1",
    19  		"https://127.0.0.1",
    20  		"http://127.0.0.1:5000",
    21  		"https://127.0.0.1:5000",
    22  	}
    23  
    24  	invalid := []string{
    25  		"!invalid!://%as%",
    26  		"ftp://mirror-1.com",
    27  		"http://mirror-1.com/?q=foo",
    28  		"http://mirror-1.com/v1/",
    29  		"http://mirror-1.com/v1/?q=foo",
    30  		"http://mirror-1.com/v1/?q=foo#frag",
    31  		"http://mirror-1.com?q=foo",
    32  		"https://mirror-1.com#frag",
    33  		"https://mirror-1.com/#frag",
    34  		"http://foo:bar@mirror-1.com/",
    35  		"https://mirror-1.com/v1/",
    36  		"https://mirror-1.com/v1/#",
    37  		"https://mirror-1.com?q",
    38  	}
    39  
    40  	for _, address := range valid {
    41  		if ret, err := ValidateMirror(address); err != nil || ret == "" {
    42  			t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err)
    43  		}
    44  	}
    45  
    46  	for _, address := range invalid {
    47  		if ret, err := ValidateMirror(address); err == nil || ret != "" {
    48  			t.Errorf("ValidateMirror(`"+address+"`) got %s %s", ret, err)
    49  		}
    50  	}
    51  }
    52  
    53  func TestLoadInsecureRegistries(t *testing.T) {
    54  	testCases := []struct {
    55  		registries []string
    56  		index      string
    57  		err        string
    58  	}{
    59  		{
    60  			registries: []string{"127.0.0.1"},
    61  			index:      "127.0.0.1",
    62  		},
    63  		{
    64  			registries: []string{"127.0.0.1:8080"},
    65  			index:      "127.0.0.1:8080",
    66  		},
    67  		{
    68  			registries: []string{"2001:db8::1"},
    69  			index:      "2001:db8::1",
    70  		},
    71  		{
    72  			registries: []string{"[2001:db8::1]:80"},
    73  			index:      "[2001:db8::1]:80",
    74  		},
    75  		{
    76  			registries: []string{"http://mytest.com"},
    77  			index:      "mytest.com",
    78  		},
    79  		{
    80  			registries: []string{"https://mytest.com"},
    81  			index:      "mytest.com",
    82  		},
    83  		{
    84  			registries: []string{"HTTP://mytest.com"},
    85  			index:      "mytest.com",
    86  		},
    87  		{
    88  			registries: []string{"svn://mytest.com"},
    89  			err:        "insecure registry svn://mytest.com should not contain '://'",
    90  		},
    91  		{
    92  			registries: []string{"-invalid-registry"},
    93  			err:        "Cannot begin or end with a hyphen",
    94  		},
    95  		{
    96  			registries: []string{`mytest-.com`},
    97  			err:        `insecure registry mytest-.com is not valid: invalid host "mytest-.com"`,
    98  		},
    99  		{
   100  			registries: []string{`1200:0000:AB00:1234:0000:2552:7777:1313:8080`},
   101  			err:        `insecure registry 1200:0000:AB00:1234:0000:2552:7777:1313:8080 is not valid: invalid host "1200:0000:AB00:1234:0000:2552:7777:1313:8080"`,
   102  		},
   103  		{
   104  			registries: []string{`mytest.com:500000`},
   105  			err:        `insecure registry mytest.com:500000 is not valid: invalid port "500000"`,
   106  		},
   107  		{
   108  			registries: []string{`"mytest.com"`},
   109  			err:        `insecure registry "mytest.com" is not valid: invalid host "\"mytest.com\""`,
   110  		},
   111  		{
   112  			registries: []string{`"mytest.com:5000"`},
   113  			err:        `insecure registry "mytest.com:5000" is not valid: invalid host "\"mytest.com"`,
   114  		},
   115  	}
   116  	for _, testCase := range testCases {
   117  		config := newServiceConfig(ServiceOptions{})
   118  		err := config.LoadInsecureRegistries(testCase.registries)
   119  		if testCase.err == "" {
   120  			if err != nil {
   121  				t.Fatalf("expect no error, got '%s'", err)
   122  			}
   123  			match := false
   124  			for index := range config.IndexConfigs {
   125  				if index == testCase.index {
   126  					match = true
   127  				}
   128  			}
   129  			if !match {
   130  				t.Fatalf("expect index configs to contain '%s', got %+v", testCase.index, config.IndexConfigs)
   131  			}
   132  		} else {
   133  			if err == nil {
   134  				t.Fatalf("expect error '%s', got no error", testCase.err)
   135  			}
   136  			if !strings.Contains(err.Error(), testCase.err) {
   137  				t.Fatalf("expect error '%s', got '%s'", testCase.err, err)
   138  			}
   139  		}
   140  	}
   141  }