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  }