From 19921cbf0de03cd6a822b6e16e371c0d45cb7c20 Mon Sep 17 00:00:00 2001 From: Ben Luddy Date: Fri, 10 May 2024 10:57:17 -0400 Subject: [PATCH] Add CBOR decoder unit test that accepts tag 55799. Tag 55799 (self-described CBOR) imparts no special semantics on the item it encloses. The CBOR encoder always encloses its output in this tag so that the prefix 0xd9d9f7 can be used to mechanically distinguish encoded CBOR from encoded JSON, and the decoder must be able to accept any sequence of bytes that the encoder can produce. --- .../pkg/runtime/serializer/cbor/cbor_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor_test.go b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor_test.go index 06b44ccf096..31d5470386e 100644 --- a/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor_test.go @@ -181,6 +181,24 @@ func TestDecode(t *testing.T) { expectedGVK *schema.GroupVersionKind assertOnError func(*testing.T, error) }{ + { + name: "self-described cbor tag accepted", + data: []byte("\xd9\xd9\xf7\xa3\x4aapiVersion\x41v\x44kind\x41k\x48metadata\xa1\x44name\x43foo"), // 55799({'apiVersion': 'v', 'kind': 'k', 'metadata': {'name': 'foo'}}) + gvk: &schema.GroupVersionKind{}, + metaFactory: &defaultMetaFactory{}, + typer: stubTyper{gvks: []schema.GroupVersionKind{{Version: "v", Kind: "k"}}}, + into: &metav1.PartialObjectMetadata{}, + expectedObj: &metav1.PartialObjectMetadata{ + TypeMeta: metav1.TypeMeta{APIVersion: "v", Kind: "k"}, + ObjectMeta: metav1.ObjectMeta{Name: "foo"}, + }, + expectedGVK: &schema.GroupVersionKind{Version: "v", Kind: "k"}, + assertOnError: func(t *testing.T, err error) { + if err != nil { + t.Errorf("expected nil error, got: %v", err) + } + }, + }, { name: "error determining gvk", metaFactory: stubMetaFactory{err: errors.New("test")},