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 }