status-go/rpc/route_test.go

50 lines
1.5 KiB
Go

package rpc
import (
"testing"
"github.com/stretchr/testify/require"
)
// localMethods are methods that should be executed locally.
var localTestMethods = []string{"some_weirdo_method", "shh_newMessageFilter", "eth_accounts"}
func TestRouteWithUpstream(t *testing.T) {
router := newRouter(true)
for _, method := range remoteMethods {
require.True(t, router.routeRemote(method), "method "+method+" should routed to remote") // nolint: goconst
}
for _, method := range localTestMethods {
t.Run(method, func(t *testing.T) {
require.False(t, router.routeRemote(method), "method "+method+" should routed to local") // nolint: goconst
})
}
}
func TestRouteWithoutUpstream(t *testing.T) {
router := newRouter(false)
for _, method := range remoteMethods {
require.False(t, router.routeRemote(method), "method "+method+" should routed to locally without UpstreamEnabled") // nolint: goconst
}
for _, method := range localTestMethods {
require.False(t, router.routeRemote(method), "method "+method+" should routed to local") // nolint: goconst
}
}
func TestBlockedRoutes(t *testing.T) {
// Be explicit as any change to `blockedMethods`
// should be confirmed with a unit test fail.
expectedBlockedMethods := [...]string{"shh_getPrivateKey"}
require.Equal(t, expectedBlockedMethods, blockedMethods)
require.Equal(t, expectedBlockedMethods[:], BlockedMethods())
router := newRouter(false)
for _, method := range blockedMethods {
require.True(t, router.routeBlocked(method))
}
}