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 }