github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/rpc/flags_test.go (about)

     1  package rpc
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/spf13/cobra"
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestFlags(t *testing.T) {
    13  	flags := Flags()
    14  
    15  	// Test addrFlag
    16  	addr := flags.Lookup(addrFlag)
    17  	require.NotNil(t, addr)
    18  	assert.Equal(t, "", addr.Value.String())
    19  	assert.Equal(t, fmt.Sprintf("Set a custom RPC listen address (default: %s)", defaultBindAddress), addr.Usage)
    20  
    21  	// Test portFlag
    22  	port := flags.Lookup(portFlag)
    23  	require.NotNil(t, port)
    24  	assert.Equal(t, "", port.Value.String())
    25  	assert.Equal(t, fmt.Sprintf("Set a custom RPC port (default: %s)", defaultPort), port.Usage)
    26  }
    27  
    28  // TestParseFlags tests the ParseFlags function in rpc/flags.go
    29  func TestParseFlags(t *testing.T) {
    30  	tests := []struct {
    31  		name     string
    32  		addrFlag string
    33  		portFlag string
    34  		expected *Config
    35  	}{
    36  		{
    37  			name:     "addrFlag is set",
    38  			addrFlag: "127.0.0.1:8080",
    39  			portFlag: "",
    40  			expected: &Config{
    41  				Address: "127.0.0.1:8080",
    42  				Port:    "",
    43  			},
    44  		},
    45  		{
    46  			name:     "portFlag is set",
    47  			addrFlag: "",
    48  			portFlag: "9090",
    49  			expected: &Config{
    50  				Address: "",
    51  				Port:    "9090",
    52  			},
    53  		},
    54  		{
    55  			name:     "both addrFlag and portFlag are set",
    56  			addrFlag: "192.168.0.1:1234",
    57  			portFlag: "5678",
    58  			expected: &Config{
    59  				Address: "192.168.0.1:1234",
    60  				Port:    "5678",
    61  			},
    62  		},
    63  		{
    64  			name:     "neither addrFlag nor portFlag are set",
    65  			addrFlag: "",
    66  			portFlag: "",
    67  			expected: &Config{
    68  				Address: "",
    69  				Port:    "",
    70  			},
    71  		},
    72  	}
    73  
    74  	for _, test := range tests {
    75  		t.Run(test.name, func(t *testing.T) {
    76  			cmd := &cobra.Command{}
    77  			cfg := &Config{}
    78  
    79  			cmd.Flags().AddFlagSet(Flags())
    80  
    81  			err := cmd.Flags().Set(addrFlag, test.addrFlag)
    82  			if err != nil {
    83  				t.Errorf(err.Error())
    84  			}
    85  			err = cmd.Flags().Set(portFlag, test.portFlag)
    86  			if err != nil {
    87  				t.Errorf(err.Error())
    88  			}
    89  
    90  			ParseFlags(cmd, cfg)
    91  			assert.Equal(t, test.expected.Address, cfg.Address)
    92  			assert.Equal(t, test.expected.Port, cfg.Port)
    93  		})
    94  	}
    95  }