func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) secret := validNewSecret("foo") secret.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} test.TestCreate( // valid secret, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.Secret{}, &api.Secret{ ObjectMeta: api.ObjectMeta{Name: "name"}, Data: map[string][]byte{"name with spaces": []byte("")}, }, &api.Secret{ ObjectMeta: api.ObjectMeta{Name: "name"}, Data: map[string][]byte{"~.dotfile": []byte("")}, }, ) }
func TestCreate(t *testing.T) { storage, _, _, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) pod := validNewPod() pod.ObjectMeta = api.ObjectMeta{} // Make an invalid pod with an an incorrect label. invalidPod := validNewPod() invalidPod.Namespace = test.TestNamespace() invalidPod.Labels = map[string]string{ "invalid/label/to/cause/validation/failure": "bar", } test.TestCreate( // valid pod, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid (empty contains list) &api.Pod{ Spec: api.PodSpec{ Containers: []api.Container{}, }, }, // invalid (invalid labels) invalidPod, ) }
func TestUpdate(t *testing.T) { storage, _, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).ClusterScope() test.TestUpdate( // valid validNewPersistentVolume("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.PersistentVolume) object.Spec.Capacity = api.ResourceList{ api.ResourceName(api.ResourceStorage): resource.MustParse("20G"), } return object }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) validService := validService() validService.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid validService, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.Service{ Spec: api.ServiceSpec{}, }, // invalid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, ClusterIP: "invalid", SessionAffinity: "None", Type: api.ServiceTypeClusterIP, Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, TargetPort: util.NewIntOrStringFromInt(6502), }}, }, }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).AllowCreateOnUpdate() test.TestUpdate( // valid validService(), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.Service) object.Spec = api.ServiceSpec{ Selector: map[string]string{"bar": "baz2"}, SessionAffinity: api.ServiceAffinityNone, Type: api.ServiceTypeClusterIP, Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, TargetPort: util.NewIntOrStringFromInt(6502), }}, } return object }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestCreate( // valid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{"a": "b"}, Template: &validPodTemplate.Template, }, }, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{}, Template: &validPodTemplate.Template, }, }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).AllowCreateOnUpdate() test.TestUpdate( // valid validNewLimitRange(), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.LimitRange) object.Spec.Limits = []api.LimitRangeItem{ { Type: api.LimitTypePod, Max: api.ResourceList{ api.ResourceCPU: resource.MustParse("1000"), api.ResourceMemory: resource.MustParse("100000"), }, Min: api.ResourceList{ api.ResourceCPU: resource.MustParse("10"), api.ResourceMemory: resource.MustParse("1000"), }, }, } return object }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) autoscaler := validNewHorizontalPodAutoscaler("foo") autoscaler.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid autoscaler, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &expapi.HorizontalPodAutoscaler{}, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) rsrc := validNewThirdPartyResource("foo") rsrc.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid rsrc, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &expapi.ThirdPartyResource{}, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewDeployment(), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*expapi.Deployment) object.Spec.Template.Spec.NodeSelector = map[string]string{"c": "d"} return object }, // invalid updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*expapi.Deployment) object.UID = "newUID" return object }, func(obj runtime.Object) runtime.Object { object := obj.(*expapi.Deployment) object.Name = "" return object }, func(obj runtime.Object) runtime.Object { object := obj.(*expapi.Deployment) object.Spec.Template.Spec.RestartPolicy = api.RestartPolicyOnFailure return object }, func(obj runtime.Object) runtime.Object { object := obj.(*expapi.Deployment) object.Spec.Selector = map[string]string{} return object }, ) }
func TestCreate(t *testing.T) { storage, _, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).ClusterScope() pv := validNewPersistentVolume("foo") pv.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} test.TestCreate( // valid pv, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.PersistentVolume{ ObjectMeta: api.ObjectMeta{Name: "*BadName!"}, }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) pod := validNewPodTemplate("foo") pod.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid pod, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.PodTemplate{ Template: api.PodTemplateSpec{}, }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) endpoints := validNewEndpoints() endpoints.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid endpoints, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.Endpoints{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { storage, _, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) resourcequota := validNewResourceQuota() resourcequota.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid resourcequota, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.ResourceQuota{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).ClusterScope() node := validNewNode() node.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} test.TestCreate( // valid node, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.Node{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).GeneratesName() validLimitRange := validNewLimitRange() validLimitRange.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid validLimitRange, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid &api.LimitRange{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewController(), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.ReplicationController) object.Spec.Replicas = object.Spec.Replicas + 1 return object }, // invalid updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.ReplicationController) object.UID = "newUID" return object }, func(obj runtime.Object) runtime.Object { object := obj.(*api.ReplicationController) object.Name = "" return object }, func(obj runtime.Object) runtime.Object { object := obj.(*api.ReplicationController) object.Spec.Selector = map[string]string{} return object }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) deployment := validNewDeployment() deployment.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid deployment, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid (invalid selector) &expapi.Deployment{ Spec: expapi.DeploymentSpec{ Selector: map[string]string{}, Template: validDeployment.Spec.Template, }, }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( //valid validNewPodTemplate("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.PodTemplate) object.Template.Spec.NodeSelector = map[string]string{"a": "b"} return object }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewSecret("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.Secret) object.Data["othertest"] = []byte("otherdata") return object }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewHorizontalPodAutoscaler("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*expapi.HorizontalPodAutoscaler) object.Spec.MaxCount = object.Spec.MaxCount + 1 return object }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError).ClusterScope() test.TestUpdate( // valid validNewNode(), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.Node) object.Spec.Unschedulable = !object.Spec.Unschedulable return object }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewThirdPartyResource("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*expapi.ThirdPartyResource) object.Description = "new description" return object }, ) }
func TestUpdate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestUpdate( // valid validNewServiceAccount("foo"), func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(resourceVersion uint64) { registrytest.SetResourceVersion(fakeClient, resourceVersion) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // updateFunc func(obj runtime.Object) runtime.Object { object := obj.(*api.ServiceAccount) // TODO: Update this serviceAccount return object }, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) controller := validNewController() controller.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid controller, func(ctx api.Context, obj runtime.Object) error { return registrytest.SetObject(fakeClient, storage.KeyFunc, ctx, obj) }, func(ctx api.Context, obj runtime.Object) (runtime.Object, error) { return registrytest.GetObject(fakeClient, storage.KeyFunc, storage.NewFunc, ctx, obj) }, // invalid (invalid selector) &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{}, Template: validController.Spec.Template, }, }, ) }