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 }