1
- package apischema
1
+ package apischema_test
2
2
3
3
import (
4
4
"encoding/json"
9
9
"k8s.io/client-go/openapi"
10
10
"k8s.io/kube-openapi/pkg/validation/spec"
11
11
12
+ apischema "github.com/openmfp/kubernetes-graphql-gateway/listener/apischema"
12
13
apischemaMocks "github.com/openmfp/kubernetes-graphql-gateway/listener/apischema/mocks"
13
14
kcpMocks "github.com/openmfp/kubernetes-graphql-gateway/listener/kcp/mocks"
14
15
"github.com/stretchr/testify/assert"
@@ -58,7 +59,7 @@ func TestGetCRDGroupKindVersions(t *testing.T) {
58
59
}
59
60
for _ , tc := range tests {
60
61
t .Run (tc .name , func (t * testing.T ) {
61
- gkv := getCRDGroupKindVersions (tc .spec )
62
+ gkv := apischema . GetCRDGroupKindVersions (tc .spec )
62
63
assert .Equal (t , tc .wantG , gkv .Group , "Group mismatch" )
63
64
assert .Equal (t , tc .wantKind , gkv .Kind , "Kind mismatch" )
64
65
assert .Equal (t , len (tc .wantVers ), len (gkv .Versions ), "Versions length mismatch" )
@@ -72,13 +73,13 @@ func TestGetCRDGroupKindVersions(t *testing.T) {
72
73
func TestIsCRDKindIncluded (t * testing.T ) {
73
74
tests := []struct {
74
75
name string
75
- gkv * GroupKindVersions
76
+ gkv * apischema. GroupKindVersions
76
77
apiList * metav1.APIResourceList
77
78
want bool
78
79
}{
79
80
{
80
81
name : "kind_present" ,
81
- gkv : & GroupKindVersions {
82
+ gkv : & apischema. GroupKindVersions {
82
83
GroupKind : & metav1.GroupKind {
83
84
Group : "g" ,
84
85
Kind : "KindA" ,
@@ -96,7 +97,7 @@ func TestIsCRDKindIncluded(t *testing.T) {
96
97
},
97
98
{
98
99
name : "kind_absent" ,
99
- gkv : & GroupKindVersions {
100
+ gkv : & apischema. GroupKindVersions {
100
101
GroupKind : & metav1.GroupKind {
101
102
Group : "g" ,
102
103
Kind : "KindA" ,
@@ -114,7 +115,7 @@ func TestIsCRDKindIncluded(t *testing.T) {
114
115
}
115
116
for _ , tc := range tests {
116
117
t .Run (tc .name , func (t * testing.T ) {
117
- got := isCRDKindIncluded (tc .gkv , tc .apiList )
118
+ got := apischema . IsCRDKindIncluded (tc .gkv , tc .apiList )
118
119
assert .Equal (t , tc .want , got , "isCRDKindIncluded result mismatch" )
119
120
})
120
121
}
@@ -123,7 +124,7 @@ func TestIsCRDKindIncluded(t *testing.T) {
123
124
// TestErrorIfCRDNotInPreferredApiGroups tests the errorIfCRDNotInPreferredApiGroups function.
124
125
// It checks if the function correctly identifies if a CRD is not in the preferred API groups.
125
126
func TestErrorIfCRDNotInPreferredApiGroups (t * testing.T ) {
126
- gkv := & GroupKindVersions {
127
+ gkv := & apischema. GroupKindVersions {
127
128
GroupKind : & metav1.GroupKind {Group : "g" , Kind : "K" },
128
129
Versions : []string {"v1" , "v2" },
129
130
}
@@ -158,13 +159,13 @@ func TestErrorIfCRDNotInPreferredApiGroups(t *testing.T) {
158
159
},
159
160
},
160
161
},
161
- wantErr : ErrGVKNotPreferred ,
162
+ wantErr : apischema . ErrGVKNotPreferred ,
162
163
},
163
164
}
164
165
165
166
for _ , tc := range cases {
166
167
t .Run (tc .name , func (t * testing.T ) {
167
- groups , err := errorIfCRDNotInPreferredApiGroups (gkv , tc .lists )
168
+ groups , err := apischema . ErrorIfCRDNotInPreferredApiGroups (gkv , tc .lists )
168
169
if tc .wantErr != nil {
169
170
assert .ErrorIs (t , err , tc .wantErr )
170
171
return
@@ -181,7 +182,7 @@ func TestErrorIfCRDNotInPreferredApiGroups(t *testing.T) {
181
182
func TestGetSchemaForPath (t * testing.T ) {
182
183
// prepare a valid schemaResponse JSON
183
184
validSchemas := map [string ]* spec.Schema {"a.v1.K" : {}}
184
- resp := schemaResponse {Components : schemasComponentsWrapper {Schemas : validSchemas }}
185
+ resp := apischema. SchemaResponse {Components : apischema. SchemasComponentsWrapper {Schemas : validSchemas }}
185
186
validJSON , err := json .Marshal (& resp )
186
187
assert .NoError (t , err , "failed to marshal valid response" )
187
188
@@ -198,14 +199,14 @@ func TestGetSchemaForPath(t *testing.T) {
198
199
preferred : []string {"g/v1" },
199
200
path : "noSlash" ,
200
201
gv : apischemaMocks .NewMockGroupVersion (t ),
201
- wantErr : ErrInvalidPath ,
202
+ wantErr : apischema . ErrInvalidPath ,
202
203
},
203
204
{
204
205
name : "not_preferred" ,
205
206
preferred : []string {"x/y" },
206
207
path : "/g/v1" ,
207
208
gv : apischemaMocks .NewMockGroupVersion (t ),
208
- wantErr : ErrNotPreferred ,
209
+ wantErr : apischema . ErrNotPreferred ,
209
210
},
210
211
{
211
212
name : "unmarshal_error" ,
@@ -216,7 +217,7 @@ func TestGetSchemaForPath(t *testing.T) {
216
217
mock .EXPECT ().Schema ("application/json" ).Return ([]byte ("bad json" ), nil )
217
218
return mock
218
219
}(),
219
- wantErr : ErrUnmarshalSchemaForPath ,
220
+ wantErr : apischema . ErrUnmarshalSchemaForPath ,
220
221
},
221
222
{
222
223
name : "success" ,
@@ -233,7 +234,7 @@ func TestGetSchemaForPath(t *testing.T) {
233
234
234
235
for _ , tc := range tests {
235
236
t .Run (tc .name , func (t * testing.T ) {
236
- got , err := getSchemaForPath (tc .preferred , tc .path , tc .gv )
237
+ got , err := apischema . GetSchemaForPath (tc .preferred , tc .path , tc .gv )
237
238
if tc .wantErr != nil {
238
239
assert .ErrorIs (t , err , tc .wantErr )
239
240
return
@@ -249,7 +250,7 @@ func TestGetSchemaForPath(t *testing.T) {
249
250
func TestResolveSchema (t * testing.T ) {
250
251
// prepare a valid schemaResponse JSON
251
252
validSchemas := map [string ]* spec.Schema {"a.v1.K" : {}}
252
- resp := schemaResponse {Components : schemasComponentsWrapper {Schemas : validSchemas }}
253
+ resp := apischema. SchemaResponse {Components : apischema. SchemasComponentsWrapper {Schemas : validSchemas }}
253
254
validJSON , err := json .Marshal (& resp )
254
255
assert .NoError (t , err , "failed to marshal valid response" )
255
256
@@ -264,10 +265,10 @@ func TestResolveSchema(t *testing.T) {
264
265
}{
265
266
{
266
267
name : "discovery_error" ,
267
- err : ErrGetServerPreferred ,
268
+ err : apischema . ErrGetServerPreferred ,
268
269
openAPIPath : "/api/v1" ,
269
270
openAPIErr : nil ,
270
- wantErr : ErrGetServerPreferred ,
271
+ wantErr : apischema . ErrGetServerPreferred ,
271
272
setSchema : nil ,
272
273
},
273
274
{
@@ -317,7 +318,7 @@ func TestResolveSchema(t *testing.T) {
317
318
dc .EXPECT ().OpenAPIV3 ().Return (openAPIClient )
318
319
}
319
320
320
- got , err := resolveSchema (dc , rm )
321
+ got , err := apischema . ResolveSchema (dc , rm )
321
322
if tc .wantErr != nil {
322
323
assert .ErrorIs (t , err , tc .wantErr )
323
324
return
0 commit comments