| package reference |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestParse(t *testing.T) { |
| testCases := []struct { |
| ref string |
| expectedName string |
| expectedTag string |
| expectedError bool |
| }{ |
| { |
| ref: "", |
| expectedName: "", |
| expectedTag: "", |
| expectedError: true, |
| }, |
| { |
| ref: "repository", |
| expectedName: "repository", |
| expectedTag: "latest", |
| expectedError: false, |
| }, |
| { |
| ref: "repository:tag", |
| expectedName: "repository", |
| expectedTag: "tag", |
| expectedError: false, |
| }, |
| { |
| ref: "test.com/repository", |
| expectedName: "test.com/repository", |
| expectedTag: "latest", |
| expectedError: false, |
| }, |
| { |
| ref: "test.com:5000/test/repository", |
| expectedName: "test.com:5000/test/repository", |
| expectedTag: "latest", |
| expectedError: false, |
| }, |
| { |
| ref: "test.com:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", |
| expectedName: "test.com:5000/repo", |
| expectedTag: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", |
| expectedError: false, |
| }, |
| { |
| ref: "test.com:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", |
| expectedName: "test.com:5000/repo", |
| expectedTag: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", |
| expectedError: false, |
| }, |
| } |
| |
| for _, c := range testCases { |
| name, tag, err := Parse(c.ref) |
| if err != nil && c.expectedError { |
| continue |
| } else if err != nil { |
| t.Fatalf("error with %s: %s", c.ref, err.Error()) |
| } |
| if name != c.expectedName { |
| t.Fatalf("expected name %s, got %s", c.expectedName, name) |
| } |
| if tag != c.expectedTag { |
| t.Fatalf("expected tag %s, got %s", c.expectedTag, tag) |
| } |
| } |
| } |