@@ -23,7 +23,10 @@ import (
23
23
24
24
"github.com/hyperledger/fabric/common/policies"
25
25
"github.com/hyperledger/fabric/orderer/common/bootstrap/provisional"
26
+ "github.com/hyperledger/fabric/orderer/common/sharedconfig"
26
27
"github.com/hyperledger/fabric/orderer/localconfig"
28
+ mockpolicies "github.com/hyperledger/fabric/orderer/mocks/policies"
29
+ mocksharedconfig "github.com/hyperledger/fabric/orderer/mocks/sharedconfig"
27
30
"github.com/hyperledger/fabric/orderer/rawledger"
28
31
"github.com/hyperledger/fabric/orderer/rawledger/ramledger"
29
32
cb "github.com/hyperledger/fabric/protos/common"
@@ -81,11 +84,13 @@ func (mm *mockSupportManager) GetChain(chainID string) (Support, bool) {
81
84
}
82
85
83
86
type mockSupport struct {
84
- ledger rawledger.ReadWriter
87
+ ledger rawledger.ReadWriter
88
+ sharedConfig * mocksharedconfig.Manager
89
+ policyManager * mockpolicies.Manager
85
90
}
86
91
87
92
func (mcs * mockSupport ) PolicyManager () policies.Manager {
88
- panic ( "Unimplemented" )
93
+ return mcs . policyManager
89
94
}
90
95
91
96
func (mcs * mockSupport ) Reader () rawledger.Reader {
@@ -99,13 +104,19 @@ func NewRAMLedger() rawledger.ReadWriter {
99
104
return rl
100
105
}
101
106
107
+ func (mcs * mockSupport ) SharedConfig () sharedconfig.Manager {
108
+ return mcs .sharedConfig
109
+ }
110
+
102
111
func newMockMultichainManager () * mockSupportManager {
103
112
rl := NewRAMLedger ()
104
113
mm := & mockSupportManager {
105
114
chains : make (map [string ]* mockSupport ),
106
115
}
107
- mm .chains [string (systemChainID )] = & mockSupport {
108
- ledger : rl ,
116
+ mm .chains [systemChainID ] = & mockSupport {
117
+ ledger : rl ,
118
+ sharedConfig : & mocksharedconfig.Manager {},
119
+ policyManager : & mockpolicies.Manager {Policy : & mockpolicies.Policy {}},
109
120
}
110
121
return mm
111
122
}
@@ -134,7 +145,7 @@ func makeSeek(chainID string, seekInfo *ab.SeekInfo) *cb.Envelope {
134
145
func TestOldestSeek (t * testing.T ) {
135
146
mm := newMockMultichainManager ()
136
147
for i := 1 ; i < ledgerSize ; i ++ {
137
- ledger := mm .chains [string ( systemChainID ) ].ledger
148
+ ledger := mm .chains [systemChainID ].ledger
138
149
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
139
150
}
140
151
@@ -173,7 +184,7 @@ func TestOldestSeek(t *testing.T) {
173
184
func TestNewestSeek (t * testing.T ) {
174
185
mm := newMockMultichainManager ()
175
186
for i := 1 ; i < ledgerSize ; i ++ {
176
- ledger := mm .chains [string ( systemChainID ) ].ledger
187
+ ledger := mm .chains [systemChainID ].ledger
177
188
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
178
189
}
179
190
@@ -205,7 +216,7 @@ func TestNewestSeek(t *testing.T) {
205
216
func TestSpecificSeek (t * testing.T ) {
206
217
mm := newMockMultichainManager ()
207
218
for i := 1 ; i < ledgerSize ; i ++ {
208
- ledger := mm .chains [string ( systemChainID ) ].ledger
219
+ ledger := mm .chains [systemChainID ].ledger
209
220
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
210
221
}
211
222
@@ -240,10 +251,36 @@ func TestSpecificSeek(t *testing.T) {
240
251
}
241
252
}
242
253
254
+ func TestUnauthorizedSeek (t * testing.T ) {
255
+ mm := newMockMultichainManager ()
256
+ for i := 1 ; i < ledgerSize ; i ++ {
257
+ ledger := mm .chains [systemChainID ].ledger
258
+ ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
259
+ }
260
+ mm .chains [systemChainID ].policyManager .Policy .Err = fmt .Errorf ("Fail to evaluate policy" )
261
+
262
+ m := newMockD ()
263
+ defer close (m .recvChan )
264
+ ds := NewHandlerImpl (mm )
265
+
266
+ go ds .Handle (m )
267
+
268
+ m .recvChan <- makeSeek (systemChainID , & ab.SeekInfo {Start : seekSpecified (uint64 (0 )), Stop : seekSpecified (uint64 (0 )), Behavior : ab .SeekInfo_BLOCK_UNTIL_READY })
269
+
270
+ select {
271
+ case deliverReply := <- m .sendChan :
272
+ if deliverReply .GetStatus () != cb .Status_FORBIDDEN {
273
+ t .Fatalf ("Received wrong error on the reply channel" )
274
+ }
275
+ case <- time .After (time .Second ):
276
+ t .Fatalf ("Timed out waiting to get all blocks" )
277
+ }
278
+ }
279
+
243
280
func TestBadSeek (t * testing.T ) {
244
281
mm := newMockMultichainManager ()
245
282
for i := 1 ; i < ledgerSize ; i ++ {
246
- ledger := mm .chains [string ( systemChainID ) ].ledger
283
+ ledger := mm .chains [systemChainID ].ledger
247
284
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
248
285
}
249
286
@@ -268,7 +305,7 @@ func TestBadSeek(t *testing.T) {
268
305
func TestFailFastSeek (t * testing.T ) {
269
306
mm := newMockMultichainManager ()
270
307
for i := 1 ; i < ledgerSize ; i ++ {
271
- ledger := mm .chains [string ( systemChainID ) ].ledger
308
+ ledger := mm .chains [systemChainID ].ledger
272
309
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
273
310
}
274
311
@@ -302,7 +339,7 @@ func TestFailFastSeek(t *testing.T) {
302
339
func TestBlockingSeek (t * testing.T ) {
303
340
mm := newMockMultichainManager ()
304
341
for i := 1 ; i < ledgerSize ; i ++ {
305
- ledger := mm .chains [string ( systemChainID ) ].ledger
342
+ ledger := mm .chains [systemChainID ].ledger
306
343
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , i ))}}))
307
344
}
308
345
@@ -329,7 +366,7 @@ func TestBlockingSeek(t *testing.T) {
329
366
case <- time .After (50 * time .Millisecond ):
330
367
}
331
368
332
- ledger := mm .chains [string ( systemChainID ) ].ledger
369
+ ledger := mm .chains [systemChainID ].ledger
333
370
ledger .Append (rawledger .CreateNextBlock (ledger , []* cb.Envelope {& cb.Envelope {Payload : []byte (fmt .Sprintf ("%d" , ledgerSize + 1 ))}}))
334
371
335
372
select {
0 commit comments