| 23 | ) |
| 24 | |
| 25 | func TestReferenceParser(t *testing.T) { |
| 26 | for _, testcase := range []struct { |
| 27 | Skip bool |
| 28 | Name string |
| 29 | Input string |
| 30 | Normalized string |
| 31 | Digest digest.Digest |
| 32 | Hostname string |
| 33 | Expected Spec |
| 34 | Err error |
| 35 | }{ |
| 36 | { |
| 37 | Name: "Basic", |
| 38 | Input: "docker.io/library/redis:foo?fooo=asdf", |
| 39 | Normalized: "docker.io/library/redis:foo", |
| 40 | Hostname: "docker.io", |
| 41 | Expected: Spec{ |
| 42 | Locator: "docker.io/library/redis", |
| 43 | Object: "foo", |
| 44 | }, |
| 45 | }, |
| 46 | { |
| 47 | Name: "BasicWithDigest", |
| 48 | Input: "docker.io/library/redis:foo@sha256:abcdef?fooo=asdf", |
| 49 | Normalized: "docker.io/library/redis:foo@sha256:abcdef", |
| 50 | Hostname: "docker.io", |
| 51 | Digest: "sha256:abcdef", |
| 52 | Expected: Spec{ |
| 53 | Locator: "docker.io/library/redis", |
| 54 | Object: "foo@sha256:abcdef", |
| 55 | }, |
| 56 | }, |
| 57 | |
| 58 | { |
| 59 | Name: "DigestOnly", |
| 60 | Input: "docker.io/library/redis@sha256:abcdef?fooo=asdf", |
| 61 | Expected: Spec{ |
| 62 | Locator: "docker.io/library/redis", |
| 63 | Object: "@sha256:abcdef", |
| 64 | }, |
| 65 | Hostname: "docker.io", |
| 66 | Normalized: "docker.io/library/redis@sha256:abcdef", |
| 67 | Digest: "sha256:abcdef", |
| 68 | }, |
| 69 | { |
| 70 | Name: "AtShortDigest", |
| 71 | Input: "docker.io/library/redis:obj@abcdef?fooo=asdf", |
| 72 | Normalized: "docker.io/library/redis:obj@abcdef", |
| 73 | Hostname: "docker.io", |
| 74 | Digest: "abcdef", |
| 75 | Expected: Spec{ |
| 76 | Locator: "docker.io/library/redis", |
| 77 | Object: "obj@abcdef", |
| 78 | }, |
| 79 | }, |
| 80 | { |
| 81 | Name: "HostWithPort", |
| 82 | Input: "localhost:5000/library/redis:obj@abcdef?fooo=asdf", |