github.com/status-im/status-go@v1.1.0/cmd/statusd/flags_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/status-im/status-go/params"
    10  )
    11  
    12  // nolint: deadcode
    13  func TestStatusFlag(t *testing.T) {
    14  	service := "status"
    15  
    16  	scenarios := []struct {
    17  		ipcEnabled  bool
    18  		httpEnabled bool
    19  		flag        string
    20  		err         error
    21  		enabled     bool
    22  		public      bool
    23  	}{
    24  		// no flags
    25  		{},
    26  		// -status=ipc -ipc
    27  		{
    28  			ipcEnabled: true,
    29  			flag:       "ipc",
    30  			enabled:    true,
    31  		},
    32  		// -status=http -http
    33  		{
    34  			httpEnabled: true,
    35  			flag:        "http",
    36  			enabled:     true,
    37  			public:      true,
    38  		},
    39  		// -status=ipc -http -ipc
    40  		{
    41  			httpEnabled: true,
    42  			ipcEnabled:  true,
    43  			flag:        "ipc",
    44  			enabled:     true,
    45  		},
    46  		// -http -ipc
    47  		{
    48  			httpEnabled: true,
    49  			ipcEnabled:  true,
    50  			flag:        "",
    51  		},
    52  		// -status=ipc
    53  		{
    54  			err:  errStatusServiceRequiresIPC,
    55  			flag: "ipc",
    56  		},
    57  		// -status=http
    58  		{
    59  			err:  errStatusServiceRequiresHTTP,
    60  			flag: "http",
    61  		},
    62  		// -status=bad-value
    63  		{
    64  			err:  errStatusServiceInvalidFlag,
    65  			flag: "bad-value",
    66  		},
    67  	}
    68  
    69  	for i, s := range scenarios {
    70  		msg := fmt.Sprintf("scenario %d", i)
    71  
    72  		c, err := params.NewNodeConfig("", 0)
    73  		require.Nil(t, err, msg)
    74  
    75  		c.IPCEnabled = s.ipcEnabled
    76  		c.HTTPEnabled = s.httpEnabled
    77  
    78  		c, err = configureStatusService(s.flag, c)
    79  
    80  		if s.err != nil {
    81  			require.Equal(t, s.err, err, msg)
    82  			require.Nil(t, c, msg)
    83  			continue
    84  		}
    85  
    86  		require.Nil(t, err, msg)
    87  		require.Equal(t, s.enabled, c.EnableStatusService, msg)
    88  
    89  		modules := c.FormatAPIModules()
    90  		if s.public {
    91  			require.Contains(t, modules, service, msg)
    92  		} else {
    93  			require.NotContains(t, modules, service, msg)
    94  		}
    95  	}
    96  }