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  }