github.com/smartcontractkit/chainlink-testing-framework/libs@v0.0.0-20240227141906-ec710b4eb1a3/networks/network_config_helpers_test.go (about)

     1  package networks
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/pelletier/go-toml/v2"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/smartcontractkit/chainlink-testing-framework/libs/config"
    11  	"github.com/smartcontractkit/chainlink-testing-framework/libs/logging"
    12  )
    13  
    14  func getTestBaseToml() string {
    15  	return `[OCR2]
    16  Enabled = true
    17  
    18  [P2P]
    19  [P2P.V2]
    20  AnnounceAddresses = ["0.0.0.0:6690"]
    21  ListenAddresses = ["0.0.0.0:6690"]`
    22  }
    23  
    24  func TestAddNetworksConfigCaseInsensitive(t *testing.T) {
    25  	netowrkTOML := `
    26  	selected_networks = ["sIMulated"]
    27  	`
    28  
    29  	l := logging.GetTestLogger(t)
    30  	networkCfg := config.NetworkConfig{}
    31  	err := config.BytesToAnyTomlStruct(l, "test", "", &networkCfg, []byte(netowrkTOML))
    32  	require.NoError(t, err, "error reading network config")
    33  
    34  	s := AddNetworksConfig(getTestBaseToml(), &config.PyroscopeConfig{}, MustGetSelectedNetworkConfig(&networkCfg)[0])
    35  	require.Contains(t, s, "[[EVM.Nodes]]")
    36  	require.NotContains(t, s, "[Pyroscope]")
    37  }
    38  
    39  func TestAddNetworksConfigNoPyroscope(t *testing.T) {
    40  	netowrkTOML := `
    41  	selected_networks = ["SIMULATED"]
    42  	`
    43  
    44  	l := logging.GetTestLogger(t)
    45  	networkCfg := config.NetworkConfig{}
    46  	err := config.BytesToAnyTomlStruct(l, "test", "", &networkCfg, []byte(netowrkTOML))
    47  	require.NoError(t, err, "error reading network config")
    48  
    49  	s := AddNetworksConfig(getTestBaseToml(), &config.PyroscopeConfig{}, MustGetSelectedNetworkConfig(&networkCfg)[0])
    50  	require.Contains(t, s, "[[EVM.Nodes]]")
    51  	require.NotContains(t, s, "[Pyroscope]")
    52  }
    53  
    54  func TestAddNetworksConfigWithPyroscopeEnabled(t *testing.T) {
    55  	netowrkTOML := `
    56  	selected_networks = ["SIMULATED"]
    57  	`
    58  	peryscopeTOML := `
    59  	enabled = true
    60  	server_url = "pyroServer"
    61  	environment = "pyroEnv"
    62  	`
    63  
    64  	l := logging.GetTestLogger(t)
    65  	networkCfg := config.NetworkConfig{}
    66  	err := config.BytesToAnyTomlStruct(l, "test", "", &networkCfg, []byte(netowrkTOML))
    67  	require.NoError(t, err, "error reading network config")
    68  
    69  	pyroCfg, err := readPyroscopeConfig(peryscopeTOML)
    70  	require.NoError(t, err, "error reading pyroscope config")
    71  
    72  	s := AddNetworksConfig(getTestBaseToml(), &pyroCfg, MustGetSelectedNetworkConfig(&networkCfg)[0])
    73  	require.Contains(t, s, "[[EVM.Nodes]]")
    74  	require.Contains(t, s, "[Pyroscope]")
    75  	require.Contains(t, s, "pyroServer")
    76  	require.Contains(t, s, "pyroEnv")
    77  }
    78  
    79  func TestAddNetworksConfigWithPyroscopeDisabled(t *testing.T) {
    80  	netowrkTOML := `
    81  	selected_networks = ["SIMULATED"]
    82  	`
    83  	peryscopeTOML := `
    84  	enabled = false
    85  	server_url = "pyroServer"
    86  	environment = "pyroEnv"
    87  	`
    88  
    89  	l := logging.GetTestLogger(t)
    90  	networkCfg := config.NetworkConfig{}
    91  	err := config.BytesToAnyTomlStruct(l, "test", "", &networkCfg, []byte(netowrkTOML))
    92  	require.NoError(t, err, "error reading network config")
    93  
    94  	pyroCfg, err := readPyroscopeConfig(peryscopeTOML)
    95  	require.NoError(t, err, "error reading pyroscope config")
    96  
    97  	s := AddNetworksConfig(getTestBaseToml(), &pyroCfg, MustGetSelectedNetworkConfig(&networkCfg)[0])
    98  	require.Contains(t, s, "[[EVM.Nodes]]")
    99  	require.NotContains(t, s, "[Pyroscope]")
   100  }
   101  
   102  func TestAddSecretTomlConfig(t *testing.T) {
   103  	s := AddSecretTomlConfig("url", "name", "pass")
   104  	require.Contains(t, s, fmt.Sprintf("URL = '%s'", "url"))
   105  	require.Contains(t, s, fmt.Sprintf("Username = '%s'", "name"))
   106  	require.Contains(t, s, fmt.Sprintf("Password = '%s'", "pass"))
   107  }
   108  
   109  func readPyroscopeConfig(configDecoded string) (config.PyroscopeConfig, error) {
   110  	var cfg config.PyroscopeConfig
   111  	err := toml.Unmarshal([]byte(configDecoded), &cfg)
   112  	if err != nil {
   113  		return config.PyroscopeConfig{}, fmt.Errorf("error unmarshaling pyroscope config: %w", err)
   114  	}
   115  
   116  	return cfg, nil
   117  }