github.com/hyperledger/aries-framework-go@v0.3.2/pkg/didcomm/protocol/mediator/util_test.go (about) 1 /* 2 Copyright SecureKey Technologies Inc. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package mediator 8 9 import ( 10 "errors" 11 "testing" 12 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestGetRouterConfig(t *testing.T) { 17 t.Run("test get router config - ro router configured", func(t *testing.T) { 18 endpoint, routingKeys, err := GetRouterConfig(&mockRouteSvc{}, "conn", ENDPOINT) 19 require.NoError(t, err) 20 require.Equal(t, ENDPOINT, endpoint) 21 require.Equal(t, 0, len(routingKeys)) 22 }) 23 24 t.Run("test get router config - router configured", func(t *testing.T) { 25 routeKeys := []string{"abc", "xyz"} 26 endpoint, routingKeys, err := GetRouterConfig( 27 &mockRouteSvc{ 28 RouterEndpoint: ENDPOINT, 29 RoutingKeys: routeKeys, 30 }, 31 "conn", 32 "http://override-url.com", 33 ) 34 require.NoError(t, err) 35 require.Equal(t, ENDPOINT, endpoint) 36 require.Equal(t, routeKeys, routingKeys) 37 }) 38 39 t.Run("test get router config - router error", func(t *testing.T) { 40 endpoint, routingKeys, err := GetRouterConfig( 41 &mockRouteSvc{ 42 ConfigErr: errors.New("router error"), 43 }, 44 "conn", 45 ENDPOINT, 46 ) 47 require.Error(t, err) 48 require.Contains(t, err.Error(), "fetch router config") 49 require.Empty(t, endpoint) 50 require.Nil(t, routingKeys) 51 }) 52 } 53 54 func TestAddKeyToRouter(t *testing.T) { 55 t.Run("test add key to router - success", func(t *testing.T) { 56 err := AddKeyToRouter(&mockRouteSvc{}, "conn", ENDPOINT) 57 require.NoError(t, err) 58 }) 59 60 t.Run("test add key to router - router not registered", func(t *testing.T) { 61 err := AddKeyToRouter(&mockRouteSvc{ 62 AddKeyErr: ErrRouterNotRegistered, 63 }, "conn", ENDPOINT) 64 require.NoError(t, err) 65 }) 66 67 t.Run("test add key to router - router error", func(t *testing.T) { 68 err := AddKeyToRouter(&mockRouteSvc{ 69 AddKeyErr: errors.New("router error"), 70 }, "conn", ENDPOINT) 71 require.EqualError(t, err, "addKey: router error") 72 }) 73 } 74 75 type mockRouteSvc struct { 76 Connections []string 77 ConnectionsErr error 78 RouterEndpoint string 79 RoutingKeys []string 80 ConfigErr error 81 AddKeyErr error 82 } 83 84 // AddKey adds agents recKey to the router. 85 func (m *mockRouteSvc) AddKey(connID, recKey string) error { 86 return m.AddKeyErr 87 } 88 89 // AddKey adds agents recKey to the router. 90 func (m *mockRouteSvc) GetConnections(...ConnectionOption) ([]string, error) { 91 return m.Connections, m.ConnectionsErr 92 } 93 94 // Config gives back the router configuration. 95 func (m *mockRouteSvc) Config(connID string) (*Config, error) { 96 if m.ConfigErr != nil { 97 return nil, m.ConfigErr 98 } 99 100 // default, route not registered error 101 if m.RouterEndpoint == "" || m.RoutingKeys == nil { 102 return nil, ErrRouterNotRegistered 103 } 104 105 return NewConfig(m.RouterEndpoint, m.RoutingKeys), nil 106 }