1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package name
16
17 import (
18 "testing"
19 )
20
21 var (
22 testDefaultRegistry = "registry.upbound.io"
23 testDefaultTag = "stable"
24 inputDefaultNames = []string{
25 "crossplane/provider-gcp",
26 "crossplane/provider-gcp:v0.14.0",
27 "ubuntu",
28 "gcr.io/crossplane/provider-gcp:latest",
29 }
30 outputDefaultNames = []string{
31 "registry.upbound.io/crossplane/provider-gcp:stable",
32 "registry.upbound.io/crossplane/provider-gcp:v0.14.0",
33 "registry.upbound.io/ubuntu:stable",
34 "gcr.io/crossplane/provider-gcp:latest",
35 }
36 )
37
38 func TestParseReferenceDefaulting(t *testing.T) {
39 for i, name := range inputDefaultNames {
40 ref, err := ParseReference(name, WithDefaultRegistry(testDefaultRegistry), WithDefaultTag(testDefaultTag))
41 if err != nil {
42 t.Errorf("ParseReference(%q); %v", name, err)
43 }
44 if ref.Name() != outputDefaultNames[i] {
45 t.Errorf("ParseReference(%q); got %v, want %v", name, ref.String(), outputDefaultNames[i])
46 }
47 }
48 }
49
50 func TestParseReference(t *testing.T) {
51 for _, name := range goodWeakValidationDigestNames {
52 ref, err := ParseReference(name, WeakValidation)
53 if err != nil {
54 t.Errorf("ParseReference(%q); %v", name, err)
55 }
56 dig, err := NewDigest(name, WeakValidation)
57 if err != nil {
58 t.Errorf("NewDigest(%q); %v", name, err)
59 }
60 if ref != dig {
61 t.Errorf("ParseReference(%q) != NewDigest(%q); got %v, want %v", name, name, ref, dig)
62 }
63 }
64
65 for _, name := range goodStrictValidationDigestNames {
66 ref, err := ParseReference(name, StrictValidation)
67 if err != nil {
68 t.Errorf("ParseReference(%q); %v", name, err)
69 }
70 dig, err := NewDigest(name, StrictValidation)
71 if err != nil {
72 t.Errorf("NewDigest(%q); %v", name, err)
73 }
74 if ref != dig {
75 t.Errorf("ParseReference(%q) != NewDigest(%q); got %v, want %v", name, name, ref, dig)
76 }
77 }
78
79 for _, name := range badDigestNames {
80 if _, err := ParseReference(name, WeakValidation); err == nil {
81 t.Errorf("ParseReference(%q); expected error, got none", name)
82 }
83 }
84
85 for _, name := range goodWeakValidationTagNames {
86 ref, err := ParseReference(name, WeakValidation)
87 if err != nil {
88 t.Errorf("ParseReference(%q); %v", name, err)
89 }
90 tag, err := NewTag(name, WeakValidation)
91 if err != nil {
92 t.Errorf("NewTag(%q); %v", name, err)
93 }
94 if ref != tag {
95 t.Errorf("ParseReference(%q) != NewTag(%q); got %v, want %v", name, name, ref, tag)
96 }
97 }
98
99 for _, name := range goodStrictValidationTagNames {
100 ref, err := ParseReference(name, StrictValidation)
101 if err != nil {
102 t.Errorf("ParseReference(%q); %v", name, err)
103 }
104 tag, err := NewTag(name, StrictValidation)
105 if err != nil {
106 t.Errorf("NewTag(%q); %v", name, err)
107 }
108 if ref != tag {
109 t.Errorf("ParseReference(%q) != NewTag(%q); got %v, want %v", name, name, ref, tag)
110 }
111 }
112
113 for _, name := range badTagNames {
114 if _, err := ParseReference(name, WeakValidation); err == nil {
115 t.Errorf("ParseReference(%q); expected error, got none", name)
116 }
117 }
118 }
119
120 func TestMustParseReference(t *testing.T) {
121 for _, name := range append(goodWeakValidationTagNames, goodWeakValidationDigestNames...) {
122 func() {
123 defer func() {
124 if err := recover(); err != nil {
125 t.Errorf("MustParseReference(%q, WeakValidation); panic: %v", name, err)
126 }
127 }()
128 MustParseReference(stringConst(name), WeakValidation)
129 }()
130 }
131
132 for _, name := range append(goodStrictValidationTagNames, goodStrictValidationDigestNames...) {
133 func() {
134 defer func() {
135 if err := recover(); err != nil {
136 t.Errorf("MustParseReference(%q, StrictValidation); panic: %v", name, err)
137 }
138 }()
139 MustParseReference(stringConst(name), StrictValidation)
140 }()
141 }
142
143 for _, name := range append(badTagNames, badDigestNames...) {
144 func() {
145 defer func() { recover() }()
146 ref := MustParseReference(stringConst(name), WeakValidation)
147 t.Errorf("MustParseReference(%q, WeakValidation) should panic, got: %#v", name, ref)
148 }()
149 }
150 }
151
152
153 const str = "valid/string"
154
155 var _ = MustParseReference(str)
156 var _ = MustParseReference("valid/string")
157 var _ = MustParseReference("valid/prefix/" + str)
158
View as plain text