Skip to content

Commit aa9e94b

Browse files
committed
add test
1 parent 046101e commit aa9e94b

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

x/circuit/keeper/msg_server_test.go

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,3 +373,74 @@ func TestResetCircuitBreakerSomeMsgs(t *testing.T) {
373373
require.NoError(t, err)
374374
require.True(t, allowed, "circuit breaker should be reset")
375375
}
376+
377+
func TestResetCircuitBreakerEmptyMsgs(t *testing.T) {
378+
ft := initFixture(t)
379+
authority, err := ft.ac.BytesToString(ft.mockAddr)
380+
require.NoError(t, err)
381+
382+
srv := keeper.NewMsgServerImpl(ft.keeper)
383+
384+
// admin resets circuit breaker
385+
url := msgSend
386+
url2 := "the_only_message_acc2_can_trip_and_reset"
387+
388+
// add acc2 as an authorized account for only url2
389+
authmsg := &types.MsgAuthorizeCircuitBreaker{
390+
Granter: authority,
391+
Grantee: addresses[2],
392+
Permissions: &types.Permissions{
393+
Level: types.Permissions_LEVEL_SOME_MSGS,
394+
LimitTypeUrls: []string{url2},
395+
},
396+
}
397+
_, err = srv.AuthorizeCircuitBreaker(ft.ctx, authmsg)
398+
require.NoError(t, err)
399+
400+
// admin trips circuit breaker
401+
admintrip := &types.MsgTripCircuitBreaker{Authority: authority, MsgTypeUrls: []string{url, url2}}
402+
_, err = srv.TripCircuitBreaker(ft.ctx, admintrip)
403+
require.NoError(t, err)
404+
405+
// sanity check, both messages should be tripped
406+
allowed, err := ft.keeper.IsAllowed(ft.ctx, url)
407+
require.NoError(t, err)
408+
require.False(t, allowed, "circuit breaker should be tripped")
409+
410+
allowed, err = ft.keeper.IsAllowed(ft.ctx, url2)
411+
require.NoError(t, err)
412+
require.False(t, allowed, "circuit breaker should be tripped")
413+
414+
// now let's try to reset url using acc2 (should fail)
415+
acc2Reset := &types.MsgResetCircuitBreaker{Authority: addresses[2], MsgTypeUrls: []string{url}}
416+
_, err = srv.ResetCircuitBreaker(ft.ctx, acc2Reset)
417+
require.Error(t, err)
418+
419+
// now let's try to reset url2 with an empty url using acc2 (should pass)
420+
acc2Reset = &types.MsgResetCircuitBreaker{Authority: addresses[2], MsgTypeUrls: []string{}}
421+
_, err = srv.ResetCircuitBreaker(ft.ctx, acc2Reset)
422+
require.NoError(t, err)
423+
424+
// Only url2 should be reset, url should still be tripped
425+
allowed, err = ft.keeper.IsAllowed(ft.ctx, url)
426+
require.NoError(t, err)
427+
require.False(t, allowed, "circuit breaker should be tripped")
428+
429+
allowed, err = ft.keeper.IsAllowed(ft.ctx, url2)
430+
require.NoError(t, err)
431+
require.True(t, allowed, "circuit breaker should be reset")
432+
433+
// now let's try to reset url with empty url using an authorized account (should pass)
434+
authAccReset := &types.MsgResetCircuitBreaker{Authority: authority, MsgTypeUrls: []string{}}
435+
_, err = srv.ResetCircuitBreaker(ft.ctx, authAccReset)
436+
require.NoError(t, err)
437+
438+
// Both 2 url should be reset
439+
allowed, err = ft.keeper.IsAllowed(ft.ctx, url)
440+
require.NoError(t, err)
441+
require.True(t, allowed, "circuit breaker should be reset")
442+
443+
allowed, err = ft.keeper.IsAllowed(ft.ctx, url2)
444+
require.NoError(t, err)
445+
require.True(t, allowed, "circuit breaker should be reset")
446+
}

0 commit comments

Comments
 (0)