forked from TrueCloudLab/distribution
registry/api/v2: use consistent names for test-tables
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
9266220c2a
commit
2444c3282d
2 changed files with 57 additions and 57 deletions
|
@ -29,7 +29,7 @@ type routeTestCase struct {
|
||||||
//
|
//
|
||||||
// This may go away as the application structure comes together.
|
// This may go away as the application structure comes together.
|
||||||
func TestRouter(t *testing.T) {
|
func TestRouter(t *testing.T) {
|
||||||
testCases := []routeTestCase{
|
tests := []routeTestCase{
|
||||||
{
|
{
|
||||||
RouteName: RouteNameBase,
|
RouteName: RouteNameBase,
|
||||||
RequestURI: "/v2/",
|
RequestURI: "/v2/",
|
||||||
|
@ -172,12 +172,12 @@ func TestRouter(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
checkTestRouter(t, testCases, "", true)
|
checkTestRouter(t, tests, "", true)
|
||||||
checkTestRouter(t, testCases, "/prefix/", true)
|
checkTestRouter(t, tests, "/prefix/", true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRouterWithPathTraversals(t *testing.T) {
|
func TestRouterWithPathTraversals(t *testing.T) {
|
||||||
testCases := []routeTestCase{
|
tests := []routeTestCase{
|
||||||
{
|
{
|
||||||
RouteName: RouteNameBlobUploadChunk,
|
RouteName: RouteNameBlobUploadChunk,
|
||||||
RequestURI: "/v2/foo/../../blobs/uploads/D95306FA-FAD3-4E36-8D41-CF1C93EF8286",
|
RequestURI: "/v2/foo/../../blobs/uploads/D95306FA-FAD3-4E36-8D41-CF1C93EF8286",
|
||||||
|
@ -194,12 +194,12 @@ func TestRouterWithPathTraversals(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
checkTestRouter(t, testCases, "", false)
|
checkTestRouter(t, tests, "", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRouterWithBadCharacters(t *testing.T) {
|
func TestRouterWithBadCharacters(t *testing.T) {
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
testCases := []routeTestCase{
|
tests := []routeTestCase{
|
||||||
{
|
{
|
||||||
RouteName: RouteNameBlobUploadChunk,
|
RouteName: RouteNameBlobUploadChunk,
|
||||||
RequestURI: "/v2/foo/blobs/uploads/不95306FA-FAD3-4E36-8D41-CF1C93EF8286",
|
RequestURI: "/v2/foo/blobs/uploads/不95306FA-FAD3-4E36-8D41-CF1C93EF8286",
|
||||||
|
@ -212,26 +212,26 @@ func TestRouterWithBadCharacters(t *testing.T) {
|
||||||
StatusCode: http.StatusNotFound,
|
StatusCode: http.StatusNotFound,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
checkTestRouter(t, testCases, "", true)
|
checkTestRouter(t, tests, "", true)
|
||||||
} else {
|
} else {
|
||||||
// in the long version we're going to fuzz the router
|
// in the long version we're going to fuzz the router
|
||||||
// with random UTF8 characters not in the 128 bit ASCII range.
|
// with random UTF8 characters not in the 128 bit ASCII range.
|
||||||
// These are not valid characters for the router and we expect
|
// These are not valid characters for the router and we expect
|
||||||
// 404s on every test.
|
// 404s on every test.
|
||||||
rand.Seed(time.Now().UTC().UnixNano())
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
testCases := make([]routeTestCase, 1000)
|
tests := make([]routeTestCase, 1000)
|
||||||
for idx := range testCases {
|
for idx := range tests {
|
||||||
testCases[idx] = routeTestCase{
|
tests[idx] = routeTestCase{
|
||||||
RouteName: RouteNameTags,
|
RouteName: RouteNameTags,
|
||||||
RequestURI: fmt.Sprintf("/v2/%v/%v/tags/list", randomString(10), randomString(10)),
|
RequestURI: fmt.Sprintf("/v2/%v/%v/tags/list", randomString(10), randomString(10)),
|
||||||
StatusCode: http.StatusNotFound,
|
StatusCode: http.StatusNotFound,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
checkTestRouter(t, testCases, "", true)
|
checkTestRouter(t, tests, "", true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkTestRouter(t *testing.T, testCases []routeTestCase, prefix string, deeplyEqual bool) {
|
func checkTestRouter(t *testing.T, tests []routeTestCase, prefix string, deeplyEqual bool) {
|
||||||
router := RouterWithPrefix(prefix)
|
router := RouterWithPrefix(prefix)
|
||||||
|
|
||||||
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -252,37 +252,37 @@ func checkTestRouter(t *testing.T, testCases []routeTestCase, prefix string, dee
|
||||||
// Startup test server
|
// Startup test server
|
||||||
server := httptest.NewServer(router)
|
server := httptest.NewServer(router)
|
||||||
|
|
||||||
for _, testcase := range testCases {
|
for _, tc := range tests {
|
||||||
testcase.RequestURI = strings.TrimSuffix(prefix, "/") + testcase.RequestURI
|
tc.RequestURI = strings.TrimSuffix(prefix, "/") + tc.RequestURI
|
||||||
// Register the endpoint
|
// Register the endpoint
|
||||||
route := router.GetRoute(testcase.RouteName)
|
route := router.GetRoute(tc.RouteName)
|
||||||
if route == nil {
|
if route == nil {
|
||||||
t.Fatalf("route for name %q not found", testcase.RouteName)
|
t.Fatalf("route for name %q not found", tc.RouteName)
|
||||||
}
|
}
|
||||||
|
|
||||||
route.Handler(testHandler)
|
route.Handler(testHandler)
|
||||||
|
|
||||||
u := server.URL + testcase.RequestURI
|
u := server.URL + tc.RequestURI
|
||||||
|
|
||||||
resp, err := http.Get(u)
|
resp, err := http.Get(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error issuing get request: %v", err)
|
t.Fatalf("error issuing get request: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if testcase.StatusCode == 0 {
|
if tc.StatusCode == 0 {
|
||||||
// Override default, zero-value
|
// Override default, zero-value
|
||||||
testcase.StatusCode = http.StatusOK
|
tc.StatusCode = http.StatusOK
|
||||||
}
|
}
|
||||||
if testcase.ExpectedURI == "" {
|
if tc.ExpectedURI == "" {
|
||||||
// Override default, zero-value
|
// Override default, zero-value
|
||||||
testcase.ExpectedURI = testcase.RequestURI
|
tc.ExpectedURI = tc.RequestURI
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != testcase.StatusCode {
|
if resp.StatusCode != tc.StatusCode {
|
||||||
t.Fatalf("unexpected status for %s: %v %v", u, resp.Status, resp.StatusCode)
|
t.Fatalf("unexpected status for %s: %v %v", u, resp.Status, resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
if testcase.StatusCode != http.StatusOK {
|
if tc.StatusCode != http.StatusOK {
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
// We don't care about json response.
|
// We don't care about json response.
|
||||||
continue
|
continue
|
||||||
|
@ -297,20 +297,20 @@ func checkTestRouter(t *testing.T, testCases []routeTestCase, prefix string, dee
|
||||||
// Needs to be set out of band
|
// Needs to be set out of band
|
||||||
actualRouteInfo.StatusCode = resp.StatusCode
|
actualRouteInfo.StatusCode = resp.StatusCode
|
||||||
|
|
||||||
if actualRouteInfo.RequestURI != testcase.ExpectedURI {
|
if actualRouteInfo.RequestURI != tc.ExpectedURI {
|
||||||
t.Fatalf("URI %v incorrectly parsed, expected %v", actualRouteInfo.RequestURI, testcase.ExpectedURI)
|
t.Fatalf("URI %v incorrectly parsed, expected %v", actualRouteInfo.RequestURI, tc.ExpectedURI)
|
||||||
}
|
}
|
||||||
|
|
||||||
if actualRouteInfo.RouteName != testcase.RouteName {
|
if actualRouteInfo.RouteName != tc.RouteName {
|
||||||
t.Fatalf("incorrect route %q matched, expected %q", actualRouteInfo.RouteName, testcase.RouteName)
|
t.Fatalf("incorrect route %q matched, expected %q", actualRouteInfo.RouteName, tc.RouteName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// when testing deep equality, the actualRouteInfo has an empty ExpectedURI, we don't want
|
// when testing deep equality, the actualRouteInfo has an empty ExpectedURI, we don't want
|
||||||
// that to make the comparison fail. We're otherwise done with the testcase so empty the
|
// that to make the comparison fail. We're otherwise done with the testcase so empty the
|
||||||
// testcase.ExpectedURI
|
// testcase.ExpectedURI
|
||||||
testcase.ExpectedURI = ""
|
tc.ExpectedURI = ""
|
||||||
if deeplyEqual && !reflect.DeepEqual(actualRouteInfo, testcase) {
|
if deeplyEqual && !reflect.DeepEqual(actualRouteInfo, tc) {
|
||||||
t.Fatalf("actual does not equal expected: %#v != %#v", actualRouteInfo, testcase)
|
t.Fatalf("actual does not equal expected: %#v != %#v", actualRouteInfo, tc)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
|
|
|
@ -138,23 +138,23 @@ func TestURLBuilder(t *testing.T) {
|
||||||
t.Fatalf("unexpected error creating urlbuilder: %v", err)
|
t.Fatalf("unexpected error creating urlbuilder: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range makeURLBuilderTestCases(urlBuilder) {
|
for _, tc := range makeURLBuilderTestCases(urlBuilder) {
|
||||||
url, err := testCase.build()
|
buildURL, err := tc.build()
|
||||||
expectedErr := testCase.expectedErr
|
expectedErr := tc.expectedErr
|
||||||
if !reflect.DeepEqual(expectedErr, err) {
|
if !reflect.DeepEqual(expectedErr, err) {
|
||||||
t.Fatalf("%s: Expecting %v but got error %v", testCase.description, expectedErr, err)
|
t.Fatalf("%s: Expecting %v but got error %v", tc.description, expectedErr, err)
|
||||||
}
|
}
|
||||||
if expectedErr != nil {
|
if expectedErr != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedURL := testCase.expectedPath
|
expectedURL := tc.expectedPath
|
||||||
if !relative {
|
if !relative {
|
||||||
expectedURL = root + expectedURL
|
expectedURL = root + expectedURL
|
||||||
}
|
}
|
||||||
|
|
||||||
if url != expectedURL {
|
if buildURL != expectedURL {
|
||||||
t.Fatalf("%s: %q != %q", testCase.description, url, expectedURL)
|
t.Fatalf("%s: %q != %q", tc.description, buildURL, expectedURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,22 +178,22 @@ func TestURLBuilderWithPrefix(t *testing.T) {
|
||||||
t.Fatalf("unexpected error creating urlbuilder: %v", err)
|
t.Fatalf("unexpected error creating urlbuilder: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range makeURLBuilderTestCases(urlBuilder) {
|
for _, tc := range makeURLBuilderTestCases(urlBuilder) {
|
||||||
url, err := testCase.build()
|
buildURL, err := tc.build()
|
||||||
expectedErr := testCase.expectedErr
|
expectedErr := tc.expectedErr
|
||||||
if !reflect.DeepEqual(expectedErr, err) {
|
if !reflect.DeepEqual(expectedErr, err) {
|
||||||
t.Fatalf("%s: Expecting %v but got error %v", testCase.description, expectedErr, err)
|
t.Fatalf("%s: Expecting %v but got error %v", tc.description, expectedErr, err)
|
||||||
}
|
}
|
||||||
if expectedErr != nil {
|
if expectedErr != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedURL := testCase.expectedPath
|
expectedURL := tc.expectedPath
|
||||||
if !relative {
|
if !relative {
|
||||||
expectedURL = root[0:len(root)-1] + expectedURL
|
expectedURL = root[0:len(root)-1] + expectedURL
|
||||||
}
|
}
|
||||||
if url != expectedURL {
|
if buildURL != expectedURL {
|
||||||
t.Fatalf("%s: %q != %q", testCase.description, url, expectedURL)
|
t.Fatalf("%s: %q != %q", tc.description, buildURL, expectedURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -424,23 +424,23 @@ func TestBuilderFromRequest(t *testing.T) {
|
||||||
builder = NewURLBuilderFromRequest(tr.request, relative)
|
builder = NewURLBuilderFromRequest(tr.request, relative)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range makeURLBuilderTestCases(builder) {
|
for _, tc := range makeURLBuilderTestCases(builder) {
|
||||||
buildURL, err := testCase.build()
|
buildURL, err := tc.build()
|
||||||
expectedErr := testCase.expectedErr
|
expectedErr := tc.expectedErr
|
||||||
if !reflect.DeepEqual(expectedErr, err) {
|
if !reflect.DeepEqual(expectedErr, err) {
|
||||||
t.Fatalf("%s: Expecting %v but got error %v", testCase.description, expectedErr, err)
|
t.Fatalf("%s: Expecting %v but got error %v", tc.description, expectedErr, err)
|
||||||
}
|
}
|
||||||
if expectedErr != nil {
|
if expectedErr != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedURL := testCase.expectedPath
|
expectedURL := tc.expectedPath
|
||||||
if !relative {
|
if !relative {
|
||||||
expectedURL = tr.base + expectedURL
|
expectedURL = tr.base + expectedURL
|
||||||
}
|
}
|
||||||
|
|
||||||
if buildURL != expectedURL {
|
if buildURL != expectedURL {
|
||||||
t.Errorf("[relative=%t, request=%q, case=%q]: %q != %q", relative, tr.name, testCase.description, buildURL, expectedURL)
|
t.Errorf("[relative=%t, request=%q, case=%q]: %q != %q", relative, tr.name, tc.description, buildURL, expectedURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -497,11 +497,11 @@ func TestBuilderFromRequestWithPrefix(t *testing.T) {
|
||||||
builder = NewURLBuilderFromRequest(tr.request, false)
|
builder = NewURLBuilderFromRequest(tr.request, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range makeURLBuilderTestCases(builder) {
|
for _, tc := range makeURLBuilderTestCases(builder) {
|
||||||
buildURL, err := testCase.build()
|
buildURL, err := tc.build()
|
||||||
expectedErr := testCase.expectedErr
|
expectedErr := tc.expectedErr
|
||||||
if !reflect.DeepEqual(expectedErr, err) {
|
if !reflect.DeepEqual(expectedErr, err) {
|
||||||
t.Fatalf("%s: Expecting %v but got error %v", testCase.description, expectedErr, err)
|
t.Fatalf("%s: Expecting %v but got error %v", tc.description, expectedErr, err)
|
||||||
}
|
}
|
||||||
if expectedErr != nil {
|
if expectedErr != nil {
|
||||||
continue
|
continue
|
||||||
|
@ -510,7 +510,7 @@ func TestBuilderFromRequestWithPrefix(t *testing.T) {
|
||||||
var expectedURL string
|
var expectedURL string
|
||||||
proto, ok := tr.request.Header["X-Forwarded-Proto"]
|
proto, ok := tr.request.Header["X-Forwarded-Proto"]
|
||||||
if !ok {
|
if !ok {
|
||||||
expectedURL = testCase.expectedPath
|
expectedURL = tc.expectedPath
|
||||||
if !relative {
|
if !relative {
|
||||||
expectedURL = tr.base[0:len(tr.base)-1] + expectedURL
|
expectedURL = tr.base[0:len(tr.base)-1] + expectedURL
|
||||||
}
|
}
|
||||||
|
@ -520,7 +520,7 @@ func TestBuilderFromRequestWithPrefix(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
urlBase.Scheme = proto[0]
|
urlBase.Scheme = proto[0]
|
||||||
expectedURL = testCase.expectedPath
|
expectedURL = tc.expectedPath
|
||||||
if !relative {
|
if !relative {
|
||||||
expectedURL = urlBase.String()[0:len(urlBase.String())-1] + expectedURL
|
expectedURL = urlBase.String()[0:len(urlBase.String())-1] + expectedURL
|
||||||
}
|
}
|
||||||
|
@ -528,7 +528,7 @@ func TestBuilderFromRequestWithPrefix(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if buildURL != expectedURL {
|
if buildURL != expectedURL {
|
||||||
t.Fatalf("%s: %q != %q", testCase.description, buildURL, expectedURL)
|
t.Fatalf("%s: %q != %q", tc.description, buildURL, expectedURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue