@@ -252,12 +252,19 @@ func TestGetMSPID(t *testing.T) {
252
252
}
253
253
254
254
func TestChaincodeStubHandlers (t * testing.T ) {
255
+ gmkResult := & peer.GetStateMultipleResult {
256
+ Values : [][]byte {[]byte ("myvalue" ), []byte ("myvalue" )},
257
+ }
258
+ getMultipleKeysBytes , err := proto .Marshal (gmkResult )
259
+ assert .NoError (t , err )
260
+
255
261
var tests = []struct {
256
- name string
257
- resType peer.ChaincodeMessage_Type
258
- payload []byte
259
- usePeerWriteBatch bool
260
- testFunc func (* ChaincodeStub , * Handler , * testing.T , []byte )
262
+ name string
263
+ resType peer.ChaincodeMessage_Type
264
+ payload []byte
265
+ usePeerWriteBatch bool
266
+ usePeerGetMultipleKeys bool
267
+ testFunc func (* ChaincodeStub , * Handler , * testing.T , []byte )
261
268
}{
262
269
{
263
270
name : "Simple Response" ,
@@ -730,6 +737,86 @@ func TestChaincodeStubHandlers(t *testing.T) {
730
737
checkWriteBatch (t , s .handler .chatStream , 1 , 2 )
731
738
},
732
739
},
740
+ {
741
+ name : "Get Multiple Keys - peer new" ,
742
+ resType : peer .ChaincodeMessage_RESPONSE ,
743
+ payload : getMultipleKeysBytes ,
744
+ usePeerGetMultipleKeys : true ,
745
+ testFunc : func (s * ChaincodeStub , h * Handler , t * testing.T , payload []byte ) {
746
+ resp , err := s .GetMultipleStates ("key" , "key2" , "key3" , "key4" )
747
+ assert .NoError (t , err )
748
+ assert .Len (t , resp , 4 )
749
+ for _ , r := range resp {
750
+ assert .Equal (t , []byte ("myvalue" ), r )
751
+ }
752
+
753
+ resp , err = s .GetMultiplePrivateData ("col" , "key" , "key2" , "key3" , "key4" )
754
+ assert .NoError (t , err )
755
+ assert .Len (t , resp , 4 )
756
+ for _ , r := range resp {
757
+ assert .Equal (t , []byte ("myvalue" ), r )
758
+ }
759
+ },
760
+ },
761
+ {
762
+ name : "Get Multiple Keys - peer old" ,
763
+ resType : peer .ChaincodeMessage_RESPONSE ,
764
+ payload : []byte ("myvalue" ),
765
+ testFunc : func (s * ChaincodeStub , h * Handler , t * testing.T , payload []byte ) {
766
+ resp , err := s .GetMultipleStates ("key" , "key2" , "key3" , "key4" )
767
+ assert .NoError (t , err )
768
+ assert .Len (t , resp , 4 )
769
+ for _ , r := range resp {
770
+ assert .Equal (t , payload , r )
771
+ }
772
+
773
+ resp , err = s .GetMultiplePrivateData ("col" , "key" , "key2" , "key3" , "key4" )
774
+ assert .NoError (t , err )
775
+ assert .Len (t , resp , 4 )
776
+ for _ , r := range resp {
777
+ assert .Equal (t , payload , r )
778
+ }
779
+ },
780
+ },
781
+ {
782
+ name : "Get Multiple Keys error - peer new" ,
783
+ resType : peer .ChaincodeMessage_ERROR ,
784
+ payload : []byte ("error" ),
785
+ usePeerGetMultipleKeys : true ,
786
+ testFunc : func (s * ChaincodeStub , h * Handler , t * testing.T , payload []byte ) {
787
+ _ , err := s .GetMultipleStates ("key" , "key2" )
788
+ assert .EqualError (t , err , string (payload ))
789
+
790
+ _ , err = s .GetMultiplePrivateData ("col" , "key" , "key2" )
791
+ assert .EqualError (t , err , string (payload ))
792
+ },
793
+ },
794
+ {
795
+ name : "Get Multiple Keys error - peer old" ,
796
+ resType : peer .ChaincodeMessage_ERROR ,
797
+ payload : []byte ("error" ),
798
+ testFunc : func (s * ChaincodeStub , h * Handler , t * testing.T , payload []byte ) {
799
+ _ , err := s .GetMultipleStates ("key" , "key2" )
800
+ assert .EqualError (t , err , string (payload ))
801
+
802
+ _ , err = s .GetMultiplePrivateData ("col" , "key" , "key2" )
803
+ assert .EqualError (t , err , string (payload ))
804
+ },
805
+ },
806
+ {
807
+ name : "Get Multiple Keys - without keys" ,
808
+ resType : peer .ChaincodeMessage_RESPONSE ,
809
+ payload : []byte ("myvalue" ),
810
+ testFunc : func (s * ChaincodeStub , h * Handler , t * testing.T , payload []byte ) {
811
+ resp , err := s .GetMultipleStates ()
812
+ assert .NoError (t , err )
813
+ assert .Len (t , resp , 0 )
814
+
815
+ resp , err = s .GetMultiplePrivateData ("col" )
816
+ assert .NoError (t , err )
817
+ assert .Len (t , resp , 0 )
818
+ },
819
+ },
733
820
}
734
821
735
822
for _ , test := range tests {
@@ -738,11 +825,13 @@ func TestChaincodeStubHandlers(t *testing.T) {
738
825
t .Parallel ()
739
826
740
827
handler := & Handler {
741
- cc : & mockChaincode {},
742
- responseChannels : map [string ]chan * peer.ChaincodeMessage {},
743
- state : ready ,
744
- usePeerWriteBatch : test .usePeerWriteBatch ,
745
- maxSizeWriteBatch : 100 ,
828
+ cc : & mockChaincode {},
829
+ responseChannels : map [string ]chan * peer.ChaincodeMessage {},
830
+ state : ready ,
831
+ usePeerWriteBatch : test .usePeerWriteBatch ,
832
+ maxSizeWriteBatch : 100 ,
833
+ usePeerGetMultipleKeys : test .usePeerGetMultipleKeys ,
834
+ maxSizeGetMultipleKeys : 2 ,
746
835
}
747
836
stub := & ChaincodeStub {
748
837
ChannelID : "channel" ,
0 commit comments