github.com/hellobchain/third_party@v0.0.0-20230331131523-deb0478a2e52/hyperledger/fabric-config/protolator/dynamic_test.go (about) 1 /* 2 Copyright IBM Corp. 2017 All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package protolator 8 9 import ( 10 "bytes" 11 "github.com/hellobchain/third_party/hyperledger/fabric-config/protolator/testprotos" 12 "testing" 13 14 . "github.com/onsi/gomega" 15 ) 16 17 func TestPlainDynamicMsg(t *testing.T) { 18 gt := NewGomegaWithT(t) 19 20 fromPrefix := "from" 21 toPrefix := "to" 22 tppff := &testProtoPlainFieldFactory{ 23 fromPrefix: fromPrefix, 24 toPrefix: toPrefix, 25 } 26 27 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}} 28 29 pfValue := "foo" 30 startMsg := &testprotos.DynamicMsg{ 31 DynamicType: "SimpleMsg", 32 PlainDynamicField: &testprotos.ContextlessMsg{ 33 OpaqueField: protoMarshalOrPanic(&testprotos.SimpleMsg{ 34 PlainField: pfValue, 35 }), 36 }, 37 } 38 39 var buffer bytes.Buffer 40 err := DeepMarshalJSON(&buffer, startMsg) 41 gt.Expect(err).NotTo(HaveOccurred()) 42 newMsg := &testprotos.DynamicMsg{} 43 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 44 gt.Expect(err).NotTo(HaveOccurred()) 45 gt.Expect(extractSimpleMsgPlainField(newMsg.PlainDynamicField.OpaqueField)).NotTo(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.PlainDynamicField.OpaqueField))) 46 47 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}, dynamicFieldFactory{}} 48 49 buffer.Reset() 50 err = DeepMarshalJSON(&buffer, startMsg) 51 gt.Expect(err).NotTo(HaveOccurred()) 52 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 53 gt.Expect(err).NotTo(HaveOccurred()) 54 gt.Expect(extractSimpleMsgPlainField(newMsg.PlainDynamicField.OpaqueField)).To(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.PlainDynamicField.OpaqueField))) 55 } 56 57 func TestMapDynamicMsg(t *testing.T) { 58 gt := NewGomegaWithT(t) 59 60 fromPrefix := "from" 61 toPrefix := "to" 62 tppff := &testProtoPlainFieldFactory{ 63 fromPrefix: fromPrefix, 64 toPrefix: toPrefix, 65 } 66 67 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}} 68 69 pfValue := "foo" 70 mapKey := "bar" 71 startMsg := &testprotos.DynamicMsg{ 72 DynamicType: "SimpleMsg", 73 MapDynamicField: map[string]*testprotos.ContextlessMsg{ 74 mapKey: { 75 OpaqueField: protoMarshalOrPanic(&testprotos.SimpleMsg{ 76 PlainField: pfValue, 77 }), 78 }, 79 }, 80 } 81 82 var buffer bytes.Buffer 83 err := DeepMarshalJSON(&buffer, startMsg) 84 gt.Expect(err).NotTo(HaveOccurred()) 85 newMsg := &testprotos.DynamicMsg{} 86 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 87 gt.Expect(err).NotTo(HaveOccurred()) 88 gt.Expect(extractSimpleMsgPlainField(newMsg.MapDynamicField[mapKey].OpaqueField)).NotTo(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.MapDynamicField[mapKey].OpaqueField))) 89 90 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}, dynamicMapFieldFactory{}} 91 92 buffer.Reset() 93 err = DeepMarshalJSON(&buffer, startMsg) 94 gt.Expect(err).NotTo(HaveOccurred()) 95 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 96 gt.Expect(err).NotTo(HaveOccurred()) 97 gt.Expect(extractSimpleMsgPlainField(newMsg.MapDynamicField[mapKey].OpaqueField)).To(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.MapDynamicField[mapKey].OpaqueField))) 98 } 99 100 func TestSliceDynamicMsg(t *testing.T) { 101 gt := NewGomegaWithT(t) 102 103 fromPrefix := "from" 104 toPrefix := "to" 105 tppff := &testProtoPlainFieldFactory{ 106 fromPrefix: fromPrefix, 107 toPrefix: toPrefix, 108 } 109 110 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}} 111 112 pfValue := "foo" 113 startMsg := &testprotos.DynamicMsg{ 114 DynamicType: "SimpleMsg", 115 SliceDynamicField: []*testprotos.ContextlessMsg{ 116 { 117 OpaqueField: protoMarshalOrPanic(&testprotos.SimpleMsg{ 118 PlainField: pfValue, 119 }), 120 }, 121 }, 122 } 123 124 var buffer bytes.Buffer 125 err := DeepMarshalJSON(&buffer, startMsg) 126 gt.Expect(err).NotTo(HaveOccurred()) 127 newMsg := &testprotos.DynamicMsg{} 128 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 129 gt.Expect(err).NotTo(HaveOccurred()) 130 gt.Expect(extractSimpleMsgPlainField(newMsg.SliceDynamicField[0].OpaqueField)).NotTo(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.SliceDynamicField[0].OpaqueField))) 131 132 fieldFactories = []protoFieldFactory{tppff, variablyOpaqueFieldFactory{}, dynamicSliceFieldFactory{}} 133 134 buffer.Reset() 135 err = DeepMarshalJSON(&buffer, startMsg) 136 gt.Expect(err).NotTo(HaveOccurred()) 137 err = DeepUnmarshalJSON(bytes.NewReader(buffer.Bytes()), newMsg) 138 gt.Expect(err).NotTo(HaveOccurred()) 139 gt.Expect(extractSimpleMsgPlainField(newMsg.SliceDynamicField[0].OpaqueField)).To(Equal(fromPrefix + toPrefix + extractSimpleMsgPlainField(startMsg.SliceDynamicField[0].OpaqueField))) 140 }