... | ... |
@@ -70,8 +70,16 @@ func DecodeNestedRawExtensionOrUnknown(d runtime.Decoder, ext *runtime.RawExtens |
70 | 70 |
} |
71 | 71 |
obj, gvk, err := d.Decode(ext.Raw, nil, nil) |
72 | 72 |
if err != nil { |
73 |
- // TODO: record mime-type with the object |
|
74 | 73 |
unk := &runtime.Unknown{Raw: ext.Raw} |
74 |
+ if runtime.IsNotRegisteredError(err) { |
|
75 |
+ if _, gvk, err := d.Decode(ext.Raw, nil, unk); err == nil { |
|
76 |
+ unk.APIVersion = gvk.GroupVersion().String() |
|
77 |
+ unk.Kind = gvk.Kind |
|
78 |
+ ext.Object = unk |
|
79 |
+ return |
|
80 |
+ } |
|
81 |
+ } |
|
82 |
+ // TODO: record mime-type with the object |
|
75 | 83 |
if gvk != nil { |
76 | 84 |
unk.APIVersion = gvk.GroupVersion().String() |
77 | 85 |
unk.Kind = gvk.Kind |
... | ... |
@@ -144,7 +144,7 @@ func fuzzInternalObject(t *testing.T, forVersion unversioned.GroupVersion, item |
144 | 144 |
case 0: |
145 | 145 |
j.AttributeRestrictions = &authorizationapi.IsPersonalSubjectAccessReview{} |
146 | 146 |
case 1: |
147 |
- j.AttributeRestrictions = &runtime.Unknown{TypeMeta: runtime.TypeMeta{Kind: "Type", APIVersion: "other"}, Raw: []byte(`{"apiVersion":"other","kind":"Type"}`)} |
|
147 |
+ j.AttributeRestrictions = &runtime.Unknown{TypeMeta: runtime.TypeMeta{Kind: "Type", APIVersion: "other"}, ContentType: "application/json", Raw: []byte(`{"apiVersion":"other","kind":"Type"}`)} |
|
148 | 148 |
default: |
149 | 149 |
j.AttributeRestrictions = nil |
150 | 150 |
} |
... | ... |
@@ -380,7 +380,7 @@ func TestSpecificRoundTrips(t *testing.T) { |
380 | 380 |
Raw: []byte(`{"kind":"LDAPSyncConfig","apiVersion":"v1","bindDN":"second"}`), |
381 | 381 |
}}, |
382 | 382 |
"test3": {Configuration: runtime.RawExtension{ |
383 |
- Object: &runtime.Unknown{TypeMeta: runtime.TypeMeta{Kind: "Unknown", APIVersion: "some/version"}, Raw: []byte(`{"kind":"Unknown","apiVersion":"some/version"}`)}, |
|
383 |
+ Object: &runtime.Unknown{TypeMeta: runtime.TypeMeta{Kind: "Unknown", APIVersion: "some/version"}, ContentType: "application/json", Raw: []byte(`{"kind":"Unknown","apiVersion":"some/version"}`)}, |
|
384 | 384 |
Raw: []byte(`{"kind":"Unknown","apiVersion":"some/version"}`), |
385 | 385 |
}}, |
386 | 386 |
"test4": {}, |
... | ... |
@@ -437,7 +437,8 @@ func fuzzerFor(t *testing.T, version unversioned.GroupVersion, src rand.Source) |
437 | 437 |
APIVersion: "unknown.group/unknown", |
438 | 438 |
Kind: "Something", |
439 | 439 |
}, |
440 |
- Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), |
|
440 |
+ ContentType: "application/json", |
|
441 |
+ Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), |
|
441 | 442 |
} |
442 | 443 |
}, |
443 | 444 |
func(j *unversioned.TypeMeta, c fuzz.Continue) { |