@@ -104,6 +104,59 @@ func TestCreateLeaveChainMessage(t *testing.T) {
104
104
assert .True (t , len (msg .Envelope .Signature ) > 0 )
105
105
}
106
106
107
+ func TestRemoveMemberWithChain (t * testing.T ) {
108
+ gossipSvc1 , err := CreateGossipServer ([]string {"localhost:9058" }, "localhost:9058" , 0 )
109
+ require .NoError (t , err )
110
+ defer gossipSvc1 .Stop ()
111
+
112
+ gossipSvc2 , err := CreateGossipServer ([]string {"localhost:9058" }, "localhost:10058" , 1 )
113
+ require .NoError (t , err )
114
+ defer gossipSvc2 .Stop ()
115
+
116
+ mac := channel .GenerateMAC (gossipSvc1 .SelfPKIid (), "channel3" )
117
+ _ , err = gossipSvc1 .CreateChain (mac , "channel3" , []common.FileSyncInfo {})
118
+ assert .NoError (t , err )
119
+
120
+ _ , err = gossipSvc1 .AddMemberToChain (mac , gossipSvc2 .SelfPKIid ())
121
+ assert .NoError (t , err )
122
+
123
+ time .Sleep (5 * time .Second )
124
+ chainState := gossipSvc2 .SelfChainInfo ("channel3" )
125
+ assert .NotNil (t , chainState )
126
+
127
+ gossipSvc3 , err := CreateGossipServer ([]string {"localhost:9058" }, "localhost:8058" , 2 )
128
+ require .NoError (t , err )
129
+ defer gossipSvc3 .Stop ()
130
+
131
+ _ , err = gossipSvc1 .AddMemberToChain (mac , gossipSvc3 .SelfPKIid ())
132
+ assert .NoError (t , err )
133
+
134
+ time .Sleep (5 * time .Second )
135
+ chainState = gossipSvc3 .SelfChainInfo ("channel3" )
136
+ assert .NotNil (t , chainState )
137
+
138
+ chainState , err = gossipSvc1 .RemoveMemberWithChain (mac , []byte {0 })
139
+ assert .NoError (t , err )
140
+ chainInfo , err := chainState .GetChainStateInfo ()
141
+ assert .NoError (t , err )
142
+ assert .Len (t , chainInfo .Properties .Members , 3 )
143
+
144
+ _ , err = gossipSvc2 .RemoveMemberWithChain (mac , gossipSvc3 .SelfPKIid ())
145
+ assert .Error (t , err )
146
+ assert .Contains (t , err .Error (), "Failed verifying ChainStateInfo message" )
147
+
148
+ chainState , err = gossipSvc1 .RemoveMemberWithChain (mac , gossipSvc3 .SelfPKIid ())
149
+ assert .NoError (t , err )
150
+ chainInfo , err = chainState .GetChainStateInfo ()
151
+ assert .NoError (t , err )
152
+ assert .Len (t , chainInfo .Properties .Members , 2 )
153
+
154
+ time .Sleep (5 * time .Second )
155
+
156
+ chainState = gossipSvc3 .SelfChainInfo ("channel3" )
157
+ assert .Nil (t , chainState )
158
+ }
159
+
107
160
func secureDialOpts () []grpc.DialOption {
108
161
var dialOpts []grpc.DialOption
109
162
dialOpts = append (dialOpts , grpc .WithDefaultCallOptions (
0 commit comments