Skip to content

Commit 6601366

Browse files
committed
Adding 2 test cases
Signed-off-by: Serguei Bezverkhi <[email protected]>
1 parent a18c902 commit 6601366

File tree

1 file changed

+59
-0
lines changed
  • staging/src/k8s.io/apiextensions-apiserver/test/integration

1 file changed

+59
-0
lines changed

staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,65 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
310310
}
311311
}
312312

313+
func TestInvalidCRUD(t *testing.T) {
314+
tearDown, apiExtensionClient, dynamicClient, err := fixtures.StartDefaultServerWithClients(t)
315+
if err != nil {
316+
t.Fatal(err)
317+
}
318+
defer tearDown()
319+
320+
noxuDefinition := fixtures.NewNoxuCustomResourceDefinition(apiextensionsv1beta1.ClusterScoped)
321+
noxuDefinition, err = fixtures.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, dynamicClient)
322+
if err != nil {
323+
t.Fatal(err)
324+
}
325+
326+
noxuResourceClients := map[string]dynamic.ResourceInterface{}
327+
noxuWatchs := map[string]watch.Interface{}
328+
disabledVersions := map[string]bool{}
329+
for _, v := range noxuDefinition.Spec.Versions {
330+
disabledVersions[v.Name] = !v.Served
331+
}
332+
for _, v := range noxuDefinition.Spec.Versions {
333+
noxuResourceClients[v.Name] = newNamespacedCustomResourceVersionedClient("", dynamicClient, noxuDefinition, v.Name)
334+
335+
noxuWatch, err := noxuResourceClients[v.Name].Watch(metav1.ListOptions{})
336+
if disabledVersions[v.Name] {
337+
if !errors.IsNotFound(err) {
338+
t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err)
339+
}
340+
} else {
341+
if err != nil {
342+
t.Fatal(err)
343+
}
344+
noxuWatchs[v.Name] = noxuWatch
345+
}
346+
}
347+
defer func() {
348+
for _, w := range noxuWatchs {
349+
w.Stop()
350+
}
351+
}()
352+
353+
for version, noxuResourceClient := range noxuResourceClients {
354+
// Case when typeless Unstructured object is passed
355+
typelessInstance := &unstructured.Unstructured{}
356+
if _, err := noxuResourceClient.Create(typelessInstance, metav1.CreateOptions{}); !errors.IsBadRequest(err) {
357+
t.Errorf("expected badrequest for submitting empty object, got %#v", err)
358+
}
359+
// Case when apiVersion and Kind would be set up from GVK, but no other objects are present
360+
typedNoBodyInstance := &unstructured.Unstructured{
361+
Object: map[string]interface{}{
362+
"apiVersion": "mygroup.example.com/" + version,
363+
"kind": "WishIHadChosenNoxu",
364+
},
365+
}
366+
if _, err := noxuResourceClient.Create(typedNoBodyInstance, metav1.CreateOptions{}); !errors.IsInvalid(err) {
367+
t.Errorf("expected invalid request for submitting malformed object, got %#v", err)
368+
}
369+
}
370+
}
371+
313372
func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition, dynamicClient dynamic.Interface) {
314373
noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
315374
initialList, err := noxuResourceClient.List(metav1.ListOptions{})

0 commit comments

Comments
 (0)