status-im/status-go

View on GitHub
rpc/route_test.go

Summary

Maintainability
A
0 mins
Test Coverage
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")
    }

    for _, method := range localTestMethods {
        t.Run(method, func(t *testing.T) {
            require.False(t, router.routeRemote(method), "method "+method+" should routed to local")
        })
    }
}

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")
    }

    for _, method := range localTestMethods {
        require.False(t, router.routeRemote(method), "method "+method+" should routed to local")
    }
}

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))
    }
}