func testListJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceAll c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: group.ResourcePath(getJobsResourceName(), ns, ""), }, Response: simple.Response{StatusCode: 200, Body: &batch.JobList{ Items: []batch.Job{ { ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: batch.JobSpec{ Template: api.PodTemplateSpec{}, }, }, }, }, }, ResourceGroup: resourceGroup, } receivedJobList, err := getJobClient(t, c, ns, resourceGroup).List(api.ListOptions{}) defer c.Close() c.Validate(t, receivedJobList, err) }
func testGetJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: group.ResourcePath(getJobsResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil), }, Response: simple.Response{ StatusCode: 200, Body: &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: batch.JobSpec{ Template: api.PodTemplateSpec{}, }, }, }, ResourceGroup: resourceGroup, } receivedJob, err := getJobClient(t, c, ns, resourceGroup).Get("foo") defer c.Close() c.Validate(t, receivedJob, err) }
func testDeleteJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "DELETE", Path: group.ResourcePath(getJobsResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil), }, Response: simple.Response{StatusCode: 200}, ResourceGroup: resourceGroup, } err := getJobClient(t, c, ns, resourceGroup).Delete("foo", nil) defer c.Close() c.Validate(t, nil, err) }
func doRoundTripTest(group testapi.TestGroup, kind string, t *testing.T) { item, err := api.Scheme.New(group.InternalGroupVersion().WithKind(kind)) if err != nil { t.Fatalf("Couldn't make a %v? %v", kind, err) } if _, err := meta.TypeAccessor(item); err != nil { t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableTypes: %v", kind, err) } if api.Scheme.Recognizes(group.GroupVersion().WithKind(kind)) { roundTripSame(t, group, item, nonRoundTrippableTypesByVersion[kind]...) } if !nonInternalRoundTrippableTypes.Has(kind) && api.Scheme.Recognizes(group.GroupVersion().WithKind(kind)) { roundTrip(t, group.Codec(), fuzzInternalObject(t, group.InternalGroupVersion(), item, rand.Int63())) } }
func testCreateJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault requestJob := &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Namespace: ns, }, } c := &simple.Client{ Request: simple.Request{ Method: "POST", Path: group.ResourcePath(getJobsResourceName(), ns, ""), Body: requestJob, Query: simple.BuildQueryValues(nil), }, Response: simple.Response{ StatusCode: 200, Body: &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: batch.JobSpec{ Template: api.PodTemplateSpec{}, }, }, }, ResourceGroup: resourceGroup, } receivedJob, err := getJobClient(t, c, ns, resourceGroup).Create(requestJob) defer c.Close() if err != nil { t.Fatalf("unexpected error: %v", err) } c.Validate(t, receivedJob, err) }
// roundTripSame verifies the same source object is tested in all API versions. func roundTripSame(t *testing.T, group testapi.TestGroup, item runtime.Object, except ...string) { set := sets.NewString(except...) seed := rand.Int63() fuzzInternalObject(t, group.InternalGroupVersion(), item, seed) version := *group.GroupVersion() codecs := []runtime.Codec{} for _, fn := range codecsToTest { codec, err := fn(version, item) if err != nil { t.Errorf("unable to get codec: %v", err) return } codecs = append(codecs, codec) } if !set.Has(version.String()) { fuzzInternalObject(t, version, item, seed) for _, codec := range codecs { roundTrip(t, codec, item) } } }
func readSwaggerApiFile(group testapi.TestGroup) ([]byte, error) { // TODO: Figure out a better way of finding these files var pathToSwaggerSpec string if group.GroupVersion().Group == "" { pathToSwaggerSpec = "../../../api/swagger-spec/" + group.GroupVersion().Version + ".json" } else { pathToSwaggerSpec = "../../../api/swagger-spec/" + group.GroupVersion().Group + "_" + group.GroupVersion().Version + ".json" } return ioutil.ReadFile(pathToSwaggerSpec) }