github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/p2p/flags_test.go (about) 1 package p2p 2 3 import ( 4 "testing" 5 6 "github.com/spf13/cobra" 7 flag "github.com/spf13/pflag" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 // TestParseNetwork_matchesByAlias checks to ensure flag parsing 13 // correctly matches the network's alias to the network name. 14 func TestParseNetwork_matchesByAlias(t *testing.T) { 15 cmd := createCmdWithNetworkFlag() 16 17 err := cmd.Flags().Set(networkFlag, "arabica") 18 require.NoError(t, err) 19 20 net, err := ParseNetwork(cmd) 21 require.NoError(t, err) 22 assert.Equal(t, Arabica, net) 23 } 24 25 // TestParseNetwork_matchesByValue checks to ensure flag parsing 26 // correctly matches the network's actual value to the network name. 27 func TestParseNetwork_matchesByValue(t *testing.T) { 28 cmd := createCmdWithNetworkFlag() 29 30 err := cmd.Flags().Set(networkFlag, string(Arabica)) 31 require.NoError(t, err) 32 33 net, err := ParseNetwork(cmd) 34 require.NoError(t, err) 35 assert.Equal(t, Arabica, net) 36 } 37 38 // TestParseNetwork_parsesFromEnv checks to ensure flag parsing 39 // correctly fetches the value from the environment variable. 40 func TestParseNetwork_parsesFromEnv(t *testing.T) { 41 cmd := createCmdWithNetworkFlag() 42 43 t.Setenv(EnvCustomNetwork, "testing") 44 45 net, err := ParseNetwork(cmd) 46 require.NoError(t, err) 47 assert.Equal(t, Network("testing"), net) 48 } 49 50 func TestParsedNetwork_invalidNetwork(t *testing.T) { 51 cmd := createCmdWithNetworkFlag() 52 53 err := cmd.Flags().Set(networkFlag, "invalid") 54 require.NoError(t, err) 55 56 net, err := ParseNetwork(cmd) 57 assert.Error(t, err) 58 assert.Equal(t, Network(""), net) 59 } 60 61 func createCmdWithNetworkFlag() *cobra.Command { 62 cmd := &cobra.Command{} 63 flags := &flag.FlagSet{} 64 flags.String( 65 networkFlag, 66 "", 67 "", 68 ) 69 cmd.Flags().AddFlagSet(flags) 70 return cmd 71 } 72 73 // Set empty network flag and ensure error returned 74 func TestParseNetwork_emptyFlag(t *testing.T) { 75 cmd := createCmdWithNetworkFlag() 76 77 err := cmd.Flags().Set(networkFlag, "") 78 require.NoError(t, err) 79 80 _, err = ParseNetwork(cmd) 81 assert.Error(t, err) 82 83 } 84 85 // Set empty network flag and ensure error returned 86 func TestParseNetwork_emptyEnvEmptyFlag(t *testing.T) { 87 88 t.Setenv(EnvCustomNetwork, "") 89 90 cmd := createCmdWithNetworkFlag() 91 err := cmd.Flags().Set(networkFlag, "") 92 require.NoError(t, err) 93 94 _, err = ParseNetwork(cmd) 95 require.Error(t, err) 96 97 } 98 99 // Env overrides empty flag to take precedence 100 func TestParseNetwork_envOverridesEmptyFlag(t *testing.T) { 101 102 t.Setenv(EnvCustomNetwork, "custom-network") 103 104 cmd := createCmdWithNetworkFlag() 105 err := cmd.Flags().Set(networkFlag, "") 106 require.NoError(t, err) 107 108 network, err := ParseNetwork(cmd) 109 require.NoError(t, err) 110 assert.Equal(t, Network("custom-network"), network) 111 112 } 113 114 // Explicitly set flag but env should still override 115 func TestParseNetwork_envOverridesFlag(t *testing.T) { 116 117 t.Setenv(EnvCustomNetwork, "custom-network") 118 119 cmd := createCmdWithNetworkFlag() 120 err := cmd.Flags().Set(networkFlag, string(Mocha)) 121 require.NoError(t, err) 122 123 network, err := ParseNetwork(cmd) 124 require.NoError(t, err) 125 assert.Equal(t, Network("custom-network"), network) 126 127 }