func TestDelete(t *testing.T) { fakeEtcdClient, helper := newHelper(t) fakeEtcdClient.Data["/images/foo"] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &api.Image{}), }, }, } storage := NewREST(helper) obj, err := storage.Delete(kapi.NewDefaultContext(), "foo", nil) if obj == nil { t.Error("Unexpected nil obj") } if err != nil { t.Errorf("Unexpected non-nil error: %#v", err) } status, ok := obj.(*kapi.Status) if !ok { t.Fatalf("Expected status type, got: %#v", obj) } if status.Status != kapi.StatusSuccess { t.Errorf("Expected status=success, got: %#v", status) } if len(fakeEtcdClient.DeletedKeys) != 1 { t.Errorf("Expected 1 delete, found %#v", fakeEtcdClient.DeletedKeys) } else if key := "/images/foo"; fakeEtcdClient.DeletedKeys[0] != key { t.Errorf("Unexpected key: %s, expected %s", fakeEtcdClient.DeletedKeys[0], key) } }
func TestDeleteNamespaceWithCompleteFinalizers(t *testing.T) { now := util.Now() fakeEtcdClient, etcdStorage := newEtcdStorage(t) fakeEtcdClient.ChangeIndex = 1 key := etcdtest.AddPrefix("/namespaces/foo") fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &api.Namespace{ ObjectMeta: api.ObjectMeta{ Name: "foo", DeletionTimestamp: &now, }, Spec: api.NamespaceSpec{ Finalizers: []api.FinalizerName{}, }, Status: api.NamespaceStatus{Phase: api.NamespaceActive}, }), ModifiedIndex: 1, CreatedIndex: 1, }, }, } storage, _, _ := NewStorage(etcdStorage) _, err := storage.Delete(api.NewContext(), "foo", nil) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestDeleteNamespace(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) fakeEtcdClient.ChangeIndex = 1 storage, _, _ := NewStorage(etcdStorage) ctx := api.NewContext() key, err := storage.Etcd.KeyFunc(ctx, "foo") key = etcdtest.AddPrefix(key) fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &api.Namespace{ ObjectMeta: api.ObjectMeta{ Name: "foo", }, Status: api.NamespaceStatus{Phase: api.NamespaceActive}, }), ModifiedIndex: 1, CreatedIndex: 1, }, }, } _, err = storage.Delete(api.NewContext(), "foo", nil) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestDeleteImageStream(t *testing.T) { fakeEtcdClient, helper := newHelper(t) fakeEtcdClient.Data["/imagestreams/default/foo"] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &api.ImageStream{ ObjectMeta: kapi.ObjectMeta{Name: "foo", Namespace: "default"}, }), ModifiedIndex: 2, }, }, } storage, _ := NewREST(helper, noDefaultRegistry, &fakeSubjectAccessReviewRegistry{}) obj, err := storage.Delete(kapi.NewDefaultContext(), "foo", nil) if err != nil { t.Fatalf("Unexpected non-nil error: %#v", err) } status, ok := obj.(*kapi.Status) if !ok { t.Fatalf("Expected status, got %#v", obj) } if status.Status != kapi.StatusSuccess { t.Errorf("Expected status=success, got %#v", status) } }
func TestDeletePod(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) fakeEtcdClient.ChangeIndex = 1 storage := NewStorage(etcdStorage, nil).Pod ctx := api.NewDefaultContext() key, _ := storage.Etcd.KeyFunc(ctx, "foo") key = etcdtest.AddPrefix(key) fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &api.Pod{ ObjectMeta: api.ObjectMeta{ Name: "foo", Namespace: api.NamespaceDefault, }, Spec: api.PodSpec{NodeName: "machine"}, }), ModifiedIndex: 1, CreatedIndex: 1, }, }, } _, err := storage.Delete(api.NewDefaultContext(), "foo", nil) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestDeleteNetwork(t *testing.T) { storage, fakeClient := newStorage(t) key := etcdtest.AddPrefix("networks/foo") ctx := api.NewContext() now := unversioned.Now() net := &api.Network{ ObjectMeta: api.ObjectMeta{ Name: "foo", DeletionTimestamp: &now, }, Spec: api.NetworkSpec{ Subnets: map[string]api.Subnet{ "subnet1": { CIDR: "192.168.0.0/24", Gateway: "192.168.0.1", }, }, }, Status: api.NetworkStatus{Phase: api.NetworkInitializing}, } if _, err := fakeClient.Set(key, runtime.EncodeOrDie(testapi.Default.Codec(), net), 0); err != nil { t.Fatalf("unexpected error: %v", err) } if _, err := storage.Delete(ctx, "foo", nil); err != nil { t.Errorf("unexpected error: %v", err) } }
func TestDeleteImageError(t *testing.T) { fakeEtcdClient, helper := newHelper(t) fakeEtcdClient.Err = fmt.Errorf("Some error") storage := NewREST(helper) _, err := storage.Delete(kapi.NewDefaultContext(), "foo", nil) if err == nil { t.Error("Unexpected non-error") } }
func TestDeleteNotFound(t *testing.T) { fakeEtcdClient, helper := newHelper(t) fakeEtcdClient.Err = tools.EtcdErrorNotFound storage := NewREST(helper) _, err := storage.Delete(kapi.NewDefaultContext(), "foo", nil) if err == nil { t.Error("Unexpected non-error") } if !errors.IsNotFound(err) { t.Errorf("Expected 'not found' error, got %#v", err) } }
func TestEtcdDeleteNode(t *testing.T) { ctx := api.NewContext() storage, fakeClient := newStorage(t) node := validNewNode() key, _ := storage.KeyFunc(ctx, node.Name) key = etcdtest.AddPrefix(key) fakeClient.Set(key, runtime.EncodeOrDie(latest.Codec, node), 0) _, err := storage.Delete(ctx, node.Name, nil) if err != nil { t.Errorf("unexpected error: %v", err) } if len(fakeClient.DeletedKeys) != 1 { t.Errorf("Expected 1 delete, found %#v", fakeClient.DeletedKeys) } if fakeClient.DeletedKeys[0] != key { t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) } }
func TestDeleteTenant(t *testing.T) { storage, fakeClient := newStorage(t) key := etcdtest.AddPrefix("tenants/foo") ctx := api.NewContext() now := unversioned.Now() tenant := &api.Tenant{ ObjectMeta: api.ObjectMeta{ Name: "foo", DeletionTimestamp: &now, }, Spec: api.TenantSpec{}, Status: api.TenantStatus{Phase: api.TenantActive}, } if _, err := fakeClient.Set(key, runtime.EncodeOrDie(testapi.Default.Codec(), tenant), 0); err != nil { t.Fatalf("unexpected error: %v", err) } if _, err := storage.Delete(ctx, "foo", nil); err != nil { t.Errorf("unexpected error: %v", err) } }
func TestDeletePersistentVolumes(t *testing.T) { ctx := api.NewContext() storage, _, fakeClient, _ := newStorage(t) persistentVolume := validNewPersistentVolume("foo") name := persistentVolume.Name key, _ := storage.KeyFunc(ctx, name) key = etcdtest.AddPrefix(key) fakeClient.ChangeIndex = 1 fakeClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, persistentVolume), ModifiedIndex: 1, CreatedIndex: 1, }, }, } _, err := storage.Delete(ctx, name, nil) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestDeleteNamespaceWithCompleteFinalizers(t *testing.T) { storage, fakeClient := newStorage(t) key := etcdtest.AddPrefix("namespaces/foo") ctx := api.NewContext() now := unversioned.Now() namespace := &api.Namespace{ ObjectMeta: api.ObjectMeta{ Name: "foo", DeletionTimestamp: &now, }, Spec: api.NamespaceSpec{ Finalizers: []api.FinalizerName{}, }, Status: api.NamespaceStatus{Phase: api.NamespaceActive}, } if _, err := fakeClient.Set(key, runtime.EncodeOrDie(testapi.Default.Codec(), namespace), 0); err != nil { t.Fatalf("unexpected error: %v", err) } if _, err := storage.Delete(ctx, "foo", nil); err != nil { t.Errorf("unexpected error: %v", err) } }
func TestDeleteEndpoints(t *testing.T) { ctx := api.NewDefaultContext() storage, fakeClient := newStorage(t) endpoints := validNewEndpoints() name := endpoints.Name key, _ := storage.KeyFunc(ctx, name) key = etcdtest.AddPrefix(key) fakeClient.ChangeIndex = 1 fakeClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, endpoints), ModifiedIndex: 1, CreatedIndex: 1, }, }, } _, err := storage.Delete(ctx, name, nil) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestEtcdDeleteController(t *testing.T) { ctx := api.NewDefaultContext() storage, fakeClient := newStorage(t) key, _ := makeControllerKey(ctx, validController.Name) key = etcdtest.AddPrefix(key) fakeClient.Set(key, runtime.EncodeOrDie(latest.Codec, &validController), 0) obj, err := storage.Delete(ctx, validController.Name, nil) if err != nil { t.Errorf("unexpected error: %v", err) } if status, ok := obj.(*api.Status); !ok { t.Errorf("Expected status of delete, got %#v", status) } else if status.Status != api.StatusSuccess { t.Errorf("Expected success, got %#v", status.Status) } if len(fakeClient.DeletedKeys) != 1 { t.Errorf("Expected 1 delete, found %#v", fakeClient.DeletedKeys) } if fakeClient.DeletedKeys[0] != key { t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) } }