github.com/mika/distribution@v2.2.2-0.20160108133430-a75790e3d8e0+incompatible/registry/storage/paths_test.go (about) 1 package storage 2 3 import ( 4 "testing" 5 ) 6 7 func TestPathMapper(t *testing.T) { 8 for _, testcase := range []struct { 9 spec pathSpec 10 expected string 11 err error 12 }{ 13 { 14 spec: manifestRevisionPathSpec{ 15 name: "foo/bar", 16 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 17 }, 18 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 19 }, 20 { 21 spec: manifestRevisionLinkPathSpec{ 22 name: "foo/bar", 23 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 24 }, 25 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", 26 }, 27 { 28 spec: manifestSignatureLinkPathSpec{ 29 name: "foo/bar", 30 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 31 signature: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 32 }, 33 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/signatures/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", 34 }, 35 { 36 spec: manifestSignaturesPathSpec{ 37 name: "foo/bar", 38 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 39 }, 40 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/revisions/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/signatures", 41 }, 42 { 43 spec: manifestTagsPathSpec{ 44 name: "foo/bar", 45 }, 46 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags", 47 }, 48 { 49 spec: manifestTagPathSpec{ 50 name: "foo/bar", 51 tag: "thetag", 52 }, 53 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag", 54 }, 55 { 56 spec: manifestTagCurrentPathSpec{ 57 name: "foo/bar", 58 tag: "thetag", 59 }, 60 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/current/link", 61 }, 62 { 63 spec: manifestTagIndexPathSpec{ 64 name: "foo/bar", 65 tag: "thetag", 66 }, 67 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index", 68 }, 69 { 70 spec: manifestTagIndexEntryPathSpec{ 71 name: "foo/bar", 72 tag: "thetag", 73 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 74 }, 75 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 76 }, 77 { 78 spec: manifestTagIndexEntryLinkPathSpec{ 79 name: "foo/bar", 80 tag: "thetag", 81 revision: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", 82 }, 83 expected: "/docker/registry/v2/repositories/foo/bar/_manifests/tags/thetag/index/sha256/abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789/link", 84 }, 85 86 { 87 spec: uploadDataPathSpec{ 88 name: "foo/bar", 89 id: "asdf-asdf-asdf-adsf", 90 }, 91 expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/data", 92 }, 93 { 94 spec: uploadStartedAtPathSpec{ 95 name: "foo/bar", 96 id: "asdf-asdf-asdf-adsf", 97 }, 98 expected: "/docker/registry/v2/repositories/foo/bar/_uploads/asdf-asdf-asdf-adsf/startedat", 99 }, 100 } { 101 p, err := pathFor(testcase.spec) 102 if err != nil { 103 t.Fatalf("unexpected generating path (%T): %v", testcase.spec, err) 104 } 105 106 if p != testcase.expected { 107 t.Fatalf("unexpected path generated (%T): %q != %q", testcase.spec, p, testcase.expected) 108 } 109 } 110 111 // Add a few test cases to ensure we cover some errors 112 113 // Specify a path that requires a revision and get a digest validation error. 114 badpath, err := pathFor(manifestSignaturesPathSpec{ 115 name: "foo/bar", 116 }) 117 118 if err == nil { 119 t.Fatalf("expected an error when mapping an invalid revision: %s", badpath) 120 } 121 122 }