Add tests for URLBuilder
							parent
							
								
									bb300231d0
								
							
						
					
					
						commit
						3916938481
					
				|  | @ -0,0 +1,100 @@ | ||||||
|  | package v2 | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"net/url" | ||||||
|  | 	"testing" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type urlBuilderTestCase struct { | ||||||
|  | 	description string | ||||||
|  | 	expected    string | ||||||
|  | 	build       func() (string, error) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // TestURLBuilder tests the various url building functions, ensuring they are
 | ||||||
|  | // returning the expected values.
 | ||||||
|  | func TestURLBuilder(t *testing.T) { | ||||||
|  | 
 | ||||||
|  | 	root := "http://localhost:5000/" | ||||||
|  | 	urlBuilder, err := NewURLBuilderFromString(root) | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("unexpected error creating urlbuilder: %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, testcase := range []struct { | ||||||
|  | 		description string | ||||||
|  | 		expected    string | ||||||
|  | 		build       func() (string, error) | ||||||
|  | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			description: "test base url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/", | ||||||
|  | 			build:       urlBuilder.BuildBaseURL, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "test tags url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/tags/list", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildTagsURL("foo/bar") | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "test manifest url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/manifests/tag", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildManifestURL("foo/bar", "tag") | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "build blob url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/blobs/tarsum.v1+sha256:abcdef0123456789", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildBlobURL("foo/bar", "tarsum.v1+sha256:abcdef0123456789") | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "build blob upload url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/blobs/uploads/", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildBlobUploadURL("foo/bar") | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "build blob upload url with digest and size", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/blobs/uploads/?digest=tarsum.v1%2Bsha256%3Aabcdef0123456789&size=10000", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildBlobUploadURL("foo/bar", url.Values{ | ||||||
|  | 					"size":   []string{"10000"}, | ||||||
|  | 					"digest": []string{"tarsum.v1+sha256:abcdef0123456789"}, | ||||||
|  | 				}) | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "build blob upload chunk url", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/blobs/uploads/uuid-part", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildBlobUploadChunkURL("foo/bar", "uuid-part") | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			description: "build blob upload chunk url with digest and size", | ||||||
|  | 			expected:    "http://localhost:5000/v2/foo/bar/blobs/uploads/uuid-part?digest=tarsum.v1%2Bsha256%3Aabcdef0123456789&size=10000", | ||||||
|  | 			build: func() (string, error) { | ||||||
|  | 				return urlBuilder.BuildBlobUploadChunkURL("foo/bar", "uuid-part", url.Values{ | ||||||
|  | 					"size":   []string{"10000"}, | ||||||
|  | 					"digest": []string{"tarsum.v1+sha256:abcdef0123456789"}, | ||||||
|  | 				}) | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	} { | ||||||
|  | 		u, err := testcase.build() | ||||||
|  | 		if err != nil { | ||||||
|  | 			t.Fatalf("%s: error building url: %v", testcase.description, err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if u != testcase.expected { | ||||||
|  | 			t.Fatalf("%s: %q != %q", testcase.description, u, testcase.expected) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue