74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package reference
|
|
|
|
import (
|
|
_ "crypto/sha256"
|
|
"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)
|
|
}
|
|
}
|
|
}
|