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  }