Skip to content

Commit 14833d1

Browse files
committed
Clean up API client CLI commands
Signed-off-by: Nicko Guyer <[email protected]>
1 parent 884dc80 commit 14833d1

File tree

19 files changed

+240
-109
lines changed

19 files changed

+240
-109
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ lint: ${LINT}
2020
GOGC=20 $(LINT) run -v --timeout 5m
2121

2222
${MOCKERY}:
23-
$(VGO) install github.com/vektra/mockery/cmd/mockery@latest
23+
$(VGO) install github.com/vektra/mockery/v2@latest
2424
${LINT}:
25-
$(VGO) install github.com/golangci/golangci-lint/cmd/[email protected].0
25+
$(VGO) install github.com/golangci/golangci-lint/cmd/[email protected].3
2626

2727

2828
define makemock

cmd/client.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ var url string
3131
var nameRegex string
3232
var ignoreNotFound bool
3333

34-
func ClientCommand(fftmClientFactory ...func() apiclient.FFTMClient) *cobra.Command {
34+
func ClientCommand() *cobra.Command {
35+
return buildClientCommand(createClient)
36+
}
37+
38+
func buildClientCommand(clientFactory func() apiclient.FFTMClient) *cobra.Command {
3539
clientCmd := &cobra.Command{
3640
Use: "client <subcommand>",
3741
Short: "Make API requests to a blockchain connector instance",
@@ -41,13 +45,6 @@ func ClientCommand(fftmClientFactory ...func() apiclient.FFTMClient) *cobra.Comm
4145
clientCmd.PersistentFlags().BoolVarP(&ignoreNotFound, "ignore-not-found", "", false, "Does not return an error if the resource is not found. Useful for idempotent delete functions.")
4246
clientCmd.PersistentFlags().StringVarP(&url, "url", "", defaultURL, "The URL of the blockchain connector")
4347

44-
var clientFactory func() apiclient.FFTMClient
45-
if len(fftmClientFactory) > 0 && fftmClientFactory[0] != nil {
46-
clientFactory = fftmClientFactory[0]
47-
} else {
48-
clientFactory = createClient
49-
}
50-
5148
clientCmd.AddCommand(clientEventStreamsCommand(clientFactory))
5249
clientCmd.AddCommand(clientListenersCommand(clientFactory))
5350

cmd/client_eventstreams_delete_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828

2929
func TestEventStreamsDeleteByID(t *testing.T) {
3030
mc := apiclientmocks.NewFFTMClient(t)
31-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
31+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
3232
cmd.SetArgs([]string{"eventstreams", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7"})
3333
mc.On("DeleteEventStream", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7").Return(nil)
3434
err := cmd.Execute()
@@ -38,7 +38,7 @@ func TestEventStreamsDeleteByID(t *testing.T) {
3838

3939
func TestEventStreamsDeleteByName(t *testing.T) {
4040
mc := apiclientmocks.NewFFTMClient(t)
41-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
41+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
4242
cmd.SetArgs([]string{"eventstreams", "delete", "--name", "foo"})
4343
mc.On("DeleteEventStreamsByName", mock.Anything, "foo").Return(nil)
4444
err := cmd.Execute()
@@ -48,23 +48,23 @@ func TestEventStreamsDeleteByName(t *testing.T) {
4848

4949
func TestEventStreamsDeleteNoID(t *testing.T) {
5050
mc := apiclientmocks.NewFFTMClient(t)
51-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
51+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
5252
cmd.SetArgs([]string{"eventstreams", "delete"})
5353
err := cmd.Execute()
5454
assert.Regexp(t, "eventstream or name flag must be set", err)
5555
}
5656

5757
func TestEventStreamsDeleteIDandName(t *testing.T) {
5858
mc := apiclientmocks.NewFFTMClient(t)
59-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
59+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
6060
cmd.SetArgs([]string{"eventstreams", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--name", "foo"})
6161
err := cmd.Execute()
6262
assert.Regexp(t, "eventstream and name flags cannot be combined", err)
6363
}
6464

6565
func TestEventStreamsDeleteByNameError(t *testing.T) {
6666
mc := apiclientmocks.NewFFTMClient(t)
67-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
67+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
6868
cmd.SetArgs([]string{"eventstreams", "delete", "--name", "foo"})
6969
mc.On("DeleteEventStreamsByName", mock.Anything, "foo").Return(fmt.Errorf("pop"))
7070
err := cmd.Execute()
@@ -74,7 +74,7 @@ func TestEventStreamsDeleteByNameError(t *testing.T) {
7474

7575
func TestEventStreamsDeleteByIDError(t *testing.T) {
7676
mc := apiclientmocks.NewFFTMClient(t)
77-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
77+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
7878
cmd.SetArgs([]string{"eventstreams", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7"})
7979
mc.On("DeleteEventStream", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7").Return(fmt.Errorf("pop"))
8080
err := cmd.Execute()

cmd/client_eventstreams_list_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929

3030
func TestEventStreamsList(t *testing.T) {
3131
mc := apiclientmocks.NewFFTMClient(t)
32-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
32+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
3333
cmd.SetArgs([]string{"eventstreams", "list"})
3434
mc.On("GetEventStreams", mock.Anything).Return([]apitypes.EventStream{}, nil)
3535
err := cmd.Execute()
@@ -39,7 +39,7 @@ func TestEventStreamsList(t *testing.T) {
3939

4040
func TestEventStreamsListError(t *testing.T) {
4141
mc := apiclientmocks.NewFFTMClient(t)
42-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
42+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
4343
cmd.SetArgs([]string{"eventstreams", "list"})
4444
mc.On("GetEventStreams", mock.Anything).Return(nil, fmt.Errorf("pop"))
4545
err := cmd.Execute()

cmd/client_listeners_delete_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828

2929
func TestListenersDeleteByID(t *testing.T) {
3030
mc := apiclientmocks.NewFFTMClient(t)
31-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
31+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
3232
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--listener", "7db29758-2a5a-4cc5-91ec-72ade16e0dc5"})
3333
mc.On("DeleteListener", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "7db29758-2a5a-4cc5-91ec-72ade16e0dc5").Return(nil)
3434
err := cmd.Execute()
@@ -38,7 +38,7 @@ func TestListenersDeleteByID(t *testing.T) {
3838

3939
func TestListenersDeleteByName(t *testing.T) {
4040
mc := apiclientmocks.NewFFTMClient(t)
41-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
41+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
4242
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--name", "foo"})
4343
mc.On("DeleteListenersByName", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "foo").Return(nil)
4444
err := cmd.Execute()
@@ -48,31 +48,31 @@ func TestListenersDeleteByName(t *testing.T) {
4848

4949
func TestListenersDeleteNoEventStream(t *testing.T) {
5050
mc := apiclientmocks.NewFFTMClient(t)
51-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
51+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
5252
cmd.SetArgs([]string{"listeners", "delete"})
5353
err := cmd.Execute()
5454
assert.Regexp(t, "eventstream flag not set", err)
5555
}
5656

5757
func TestListenersDeleteNoID(t *testing.T) {
5858
mc := apiclientmocks.NewFFTMClient(t)
59-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
59+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
6060
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7"})
6161
err := cmd.Execute()
6262
assert.Regexp(t, "listener or name flag must be set", err)
6363
}
6464

6565
func TestListenersDeleteIDandName(t *testing.T) {
6666
mc := apiclientmocks.NewFFTMClient(t)
67-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
67+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
6868
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--listener", "7db29758-2a5a-4cc5-91ec-72ade16e0dc5", "--name", "foo"})
6969
err := cmd.Execute()
7070
assert.Regexp(t, "listener and name flags cannot be combined", err)
7171
}
7272

7373
func TestListenersDeleteByNameError(t *testing.T) {
7474
mc := apiclientmocks.NewFFTMClient(t)
75-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
75+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
7676
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--name", "foo"})
7777
mc.On("DeleteListenersByName", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "foo").Return(fmt.Errorf("pop"))
7878
err := cmd.Execute()
@@ -82,7 +82,7 @@ func TestListenersDeleteByNameError(t *testing.T) {
8282

8383
func TestListenersDeleteByIDError(t *testing.T) {
8484
mc := apiclientmocks.NewFFTMClient(t)
85-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
85+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
8686
cmd.SetArgs([]string{"listeners", "delete", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "--listener", "7db29758-2a5a-4cc5-91ec-72ade16e0dc5"})
8787
mc.On("DeleteListener", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7", "7db29758-2a5a-4cc5-91ec-72ade16e0dc5").Return(fmt.Errorf("pop"))
8888
err := cmd.Execute()

cmd/client_listeners_list_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929

3030
func TestListenersList(t *testing.T) {
3131
mc := apiclientmocks.NewFFTMClient(t)
32-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
32+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
3333
cmd.SetArgs([]string{"listeners", "list", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7"})
3434
mc.On("GetListeners", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7").Return([]apitypes.Listener{}, nil)
3535
err := cmd.Execute()
@@ -39,15 +39,15 @@ func TestListenersList(t *testing.T) {
3939

4040
func TestListenersListNoEventStream(t *testing.T) {
4141
mc := apiclientmocks.NewFFTMClient(t)
42-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
42+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
4343
cmd.SetArgs([]string{"listeners", "list"})
4444
err := cmd.Execute()
4545
assert.Regexp(t, "eventstream flag not set", err)
4646
}
4747

4848
func TestListenersListError(t *testing.T) {
4949
mc := apiclientmocks.NewFFTMClient(t)
50-
cmd := ClientCommand(func() apiclient.FFTMClient { return mc })
50+
cmd := buildClientCommand(func() apiclient.FFTMClient { return mc })
5151
cmd.SetArgs([]string{"listeners", "list", "--eventstream", "f9506df2-5473-4fd4-9cfb-f835656eaaa7"})
5252
mc.On("GetListeners", mock.Anything, "f9506df2-5473-4fd4-9cfb-f835656eaaa7").Return(nil, fmt.Errorf("pop"))
5353
err := cmd.Execute()

internal/apiclient/eventstreams.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,27 @@ import (
2525
)
2626

2727
func (c *fftmClient) GetEventStreams(ctx context.Context) ([]apitypes.EventStream, error) {
28+
eventStreams := []apitypes.EventStream{}
2829
resp, err := c.client.R().
2930
SetContext(ctx).
30-
SetResult([]apitypes.EventStream{}).
31+
SetResult(&eventStreams).
3132
Get("eventstreams")
3233
if !resp.IsSuccess() {
3334
return nil, fmt.Errorf(string(resp.Body()))
3435
}
35-
return *resp.Result().(*[]apitypes.EventStream), err
36+
return eventStreams, err
3637
}
3738

3839
func (c *fftmClient) GetListeners(ctx context.Context, eventStreamID string) ([]apitypes.Listener, error) {
40+
listeners := []apitypes.Listener{}
3941
resp, err := c.client.R().
4042
SetContext(ctx).
41-
SetResult([]apitypes.Listener{}).
43+
SetResult(&listeners).
4244
Get(fmt.Sprintf("eventstreams/%s/listeners", eventStreamID))
4345
if !resp.IsSuccess() {
4446
return nil, fmt.Errorf(string(resp.Body()))
4547
}
46-
return *resp.Result().(*[]apitypes.Listener), err
48+
return listeners, err
4749
}
4850

4951
func (c *fftmClient) DeleteEventStream(ctx context.Context, eventStreamID string) error {

mocks/apiclientmocks/fftm_client.go

Lines changed: 9 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/confirmationsmocks/manager.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mocks/eventsmocks/stream.go

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)