func validate(testParam TestParam, t *testing.T, body []byte, fakeHandler *utiltesting.FakeHandler) { switch { case testParam.expectingError && testParam.actualError == nil: t.Errorf("Expected error") case !testParam.expectingError && testParam.actualError != nil: t.Error(testParam.actualError) } if !testParam.expCreated { if testParam.actualCreated { t.Errorf("Expected object not to be created") } } statusOut, err := runtime.Decode(testapi.Default.Codec(), body) if testParam.testBody { if testParam.testBodyErrorIsNotNil { if err == nil { t.Errorf("Expected Error") } } } if testParam.expStatus != nil { if !reflect.DeepEqual(testParam.expStatus, statusOut) { t.Errorf("Unexpected mis-match. Expected %#v. Saw %#v", testParam.expStatus, statusOut) } } fakeHandler.ValidateRequest(t, "/"+registered.GroupOrDie(api.GroupName).GroupVersion.String()+"/test", "GET", nil) }
// Get returns the result as an object. func (r Result) Get() (runtime.Object, error) { if r.err != nil { return nil, r.err } if r.decoder == nil { return nil, fmt.Errorf("serializer for %s doesn't exist", r.contentType) } return runtime.Decode(r.decoder, r.body) }
// TestSerializer makes sure that you're always able to decode an unversioned API object func TestSerializer(t *testing.T) { contentConfig := ContentConfig{ ContentType: "application/json", GroupVersion: &unversioned.GroupVersion{Group: "other", Version: runtime.APIVersionInternal}, NegotiatedSerializer: api.Codecs, } serializer, err := createSerializers(contentConfig) if err != nil { t.Fatal(err) } // bytes based on actual return from API server when encoding an "unversioned" object obj, err := runtime.Decode(serializer.Decoder, []byte(`{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Success"}`)) t.Log(obj) if err != nil { t.Fatal(err) } }
// Decode blocks until it can return the next object in the reader. Returns an error // if the reader is closed or an object can't be decoded. func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) { var got Event res, _, err := d.decoder.Decode(nil, &got) if err != nil { return "", nil, err } if res != &got { return "", nil, fmt.Errorf("unable to decode to versioned.Event") } switch got.Type { case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error): default: return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type) } obj, err := runtime.Decode(d.embeddedDecoder, got.Object.Raw) if err != nil { return "", nil, fmt.Errorf("unable to decode watch event: %v", err) } return watch.EventType(got.Type), obj, nil }