@@ -17,6 +17,8 @@ limitations under the License.
17
17
package resource
18
18
19
19
import (
20
+ "strings"
21
+
20
22
. "github.com/onsi/ginkgo"
21
23
. "github.com/onsi/ginkgo/extensions/table"
22
24
. "github.com/onsi/gomega"
@@ -30,19 +32,50 @@ var _ = Describe("GVK", func() {
30
32
kind = "Kind"
31
33
)
32
34
35
+ var gvk = GVK {Group : group , Domain : domain , Version : version , Kind : kind }
36
+
37
+ Context ("Validate" , func () {
38
+ It ("should succeed for a valid GVK" , func () {
39
+ Expect (gvk .Validate ()).To (Succeed ())
40
+ })
41
+
42
+ DescribeTable ("should fail for invalid GVKs" ,
43
+ func (gvk GVK ) { Expect (gvk .Validate ()).NotTo (Succeed ()) },
44
+ // Ensure that the rest of the fields are valid to check each part
45
+ Entry ("Group (uppercase)" , GVK {Group : "Group" , Domain : domain , Version : version , Kind : kind }),
46
+ Entry ("Group (non-alpha characters)" , GVK {Group : "_*?" , Domain : domain , Version : version , Kind : kind }),
47
+ Entry ("Domain (uppercase)" , GVK {Group : group , Domain : "Domain" , Version : version , Kind : kind }),
48
+ Entry ("Domain (non-alpha characters)" , GVK {Group : group , Domain : "_*?" , Version : version , Kind : kind }),
49
+ Entry ("Group and Domain (empty)" , GVK {Group : "" , Domain : "" , Version : version , Kind : kind }),
50
+ Entry ("Version (empty)" , GVK {Group : group , Domain : domain , Version : "" , Kind : kind }),
51
+ Entry ("Version (no v prefix)" , GVK {Group : group , Domain : domain , Version : "1" , Kind : kind }),
52
+ Entry ("Version (wrong prefix)" , GVK {Group : group , Domain : domain , Version : "a1" , Kind : kind }),
53
+ Entry ("Version (unstable no v prefix)" , GVK {Group : group , Domain : domain , Version : "1beta1" , Kind : kind }),
54
+ Entry ("Version (unstable no alpha/beta number)" ,
55
+ GVK {Group : group , Domain : domain , Version : "v1beta" , Kind : kind }),
56
+ Entry ("Version (multiple unstable)" ,
57
+ GVK {Group : group , Domain : domain , Version : "v1beta1alpha1" , Kind : kind }),
58
+ Entry ("Kind (empty)" , GVK {Group : group , Domain : domain , Version : version , Kind : "" }),
59
+ Entry ("Kind (whitespaces)" , GVK {Group : group , Domain : domain , Version : version , Kind : "Ki nd" }),
60
+ Entry ("Kind (lowercase)" , GVK {Group : group , Domain : domain , Version : version , Kind : "kind" }),
61
+ Entry ("Kind (starts with number)" , GVK {Group : group , Domain : domain , Version : version , Kind : "1Kind" }),
62
+ Entry ("Kind (ends with `-`)" , GVK {Group : group , Domain : domain , Version : version , Kind : "Kind-" }),
63
+ Entry ("Kind (non-alpha characters)" , GVK {Group : group , Domain : domain , Version : version , Kind : "_*?" }),
64
+ Entry ("Kind (too long)" ,
65
+ GVK {Group : group , Domain : domain , Version : version , Kind : strings .Repeat ("a" , 64 )}),
66
+ )
67
+ })
68
+
33
69
Context ("QualifiedGroup" , func () {
34
70
DescribeTable ("should return the correct string" ,
35
71
func (gvk GVK , qualifiedGroup string ) { Expect (gvk .QualifiedGroup ()).To (Equal (qualifiedGroup )) },
36
- Entry ("fully qualified resource" , GVK {Group : group , Domain : domain , Version : version , Kind : kind },
37
- group + "." + domain ),
72
+ Entry ("fully qualified resource" , gvk , group + "." + domain ),
38
73
Entry ("empty group name" , GVK {Domain : domain , Version : version , Kind : kind }, domain ),
39
74
Entry ("empty domain" , GVK {Group : group , Version : version , Kind : kind }, group ),
40
75
)
41
76
})
42
77
43
78
Context ("IsEqualTo" , func () {
44
- var gvk = GVK {Group : group , Domain : domain , Version : version , Kind : kind }
45
-
46
79
It ("should return true for the same resource" , func () {
47
80
Expect (gvk .IsEqualTo (GVK {Group : group , Domain : domain , Version : version , Kind : kind })).To (BeTrue ())
48
81
})
0 commit comments