X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=internal%2Fcli%2Fget_test.go;h=66bc115c9b1163400ab1116e2eed5fab18117e2f;hb=59c60ebc4ca8edd65fd9cdc1e833309f3e8bc8fe;hp=759ab114d6ad3115cf7319881c92b0e2259c0f98;hpb=273d032db02901dba8deeb692f92ed2366dc6ee5;p=ric-plt%2Fsdlgo.git diff --git a/internal/cli/get_test.go b/internal/cli/get_test.go index 759ab11..66bc115 100644 --- a/internal/cli/get_test.go +++ b/internal/cli/get_test.go @@ -26,14 +26,55 @@ import ( "bytes" "errors" "gerrit.o-ran-sc.org/r/ric-plt/sdlgo/internal/cli" + "gerrit.o-ran-sc.org/r/ric-plt/sdlgo/internal/mocks" "github.com/stretchr/testify/assert" "testing" ) +var getMocks *GetMocks + +type GetMocks struct { + sdlIface *mocks.MockSdlApi + ns string + keys []string + result map[string]interface{} + ret error +} + +func setupGetMock(ns string, keys []string, result map[string]interface{}, ret error) { + getMocks = new(GetMocks) + getMocks.ns = ns + getMocks.keys = keys + getMocks.result = result + getMocks.ret = ret +} + +func newSdlGetApiMock() cli.ISyncStorage { + getMocks.sdlIface = new(mocks.MockSdlApi) + getMocks.sdlIface.On("Get", getMocks.ns, getMocks.keys).Return(getMocks.result, getMocks.ret) + return getMocks.sdlIface +} + +func runGetCmdCli() (string, string, error) { + bufOut := new(bytes.Buffer) + bufErr := new(bytes.Buffer) + + cmd := cli.NewGetCmdForTest(newSdlGetApiMock) + cmd.SetOut(bufOut) + cmd.SetErr(bufErr) + args := []string{getMocks.ns} + args = append(args, getMocks.keys...) + cmd.SetArgs(args) + err := cmd.Execute() + + return bufOut.String(), bufErr.String(), err +} + func TestGetCmdShowHelp(t *testing.T) { var expOkErr error - expHelp := "Display one or many resources.\n\nPrints important information about the specified resources." - expExamples := "Examples:\n # List keys in the given namespace." + expHelp := "Display one or many resources.\n\nPrints namespaces, keys or keys data in the given namespace." + expHelpUsage := "Usage:\n get [ ... ] [flags]" + expArgsErr := errors.New("accepts command or arguments, received 0") expNokErr := errors.New("unknown flag: --ff") tests := []struct { args []string @@ -42,13 +83,13 @@ func TestGetCmdShowHelp(t *testing.T) { }{ {args: []string{"-h"}, expErr: expOkErr, expOut: expHelp}, {args: []string{"--help"}, expErr: expOkErr, expOut: expHelp}, - {args: []string{}, expErr: expOkErr, expOut: expHelp}, - {args: []string{"--ff"}, expErr: expNokErr, expOut: expExamples}, + {args: []string{}, expErr: expArgsErr, expOut: expHelpUsage}, + {args: []string{"--ff"}, expErr: expNokErr, expOut: expHelpUsage}, } for _, test := range tests { buf := new(bytes.Buffer) - cmd := cli.NewGetCmdForTest() + cmd := cli.NewGetCmdForTest(newSdlGetApiMock) cmd.SetOut(buf) cmd.SetErr(buf) cmd.SetArgs(test.args) @@ -59,3 +100,40 @@ func TestGetCmdShowHelp(t *testing.T) { assert.Contains(t, result, test.expOut) } } + +func TestGetCmdSuccess(t *testing.T) { + + tests := []struct { + ns string + keys []string + result map[string]interface{} + expOut string + expErr error + }{ + {ns: "testns", keys: []string{"key1"}, result: map[string]interface{}{}, expOut: "", expErr: nil}, + {ns: "testns", keys: []string{"key1"}, result: map[string]interface{}{"key1": "1"}, expOut: "key1:1\n", expErr: nil}, + {ns: "testns", keys: []string{"key1 key2"}, result: map[string]interface{}{"key1": "1", "key2": "2"}, expOut: "key1:1\nkey2:2\n", expErr: nil}, + {ns: "testns", keys: []string{"key1 key3 key2"}, result: map[string]interface{}{"key1": "1", "key3": "3", "key2": "2"}, expOut: "key1:1\nkey2:2\nkey3:3\n", expErr: nil}, + {ns: "testns", keys: []string{"key1 keyDoesNotExist"}, result: map[string]interface{}{"key1": "1"}, expOut: "key1:1\n", expErr: nil}, + } + for _, test := range tests { + setupGetMock(test.ns, test.keys, test.result, test.expErr) + stdout, stderr, err := runGetCmdCli() + + assert.Nil(t, err) + assert.Equal(t, test.expOut, stdout) + assert.Equal(t, "", stderr) + getMocks.sdlIface.AssertExpectations(t) + } +} + +func TestGetCmdFails(t *testing.T) { + expErr := errors.New("Boom!") + + setupGetMock("testns", []string{"key1"}, map[string]interface{}{}, expErr) + _, stderr, err := runGetCmdCli() + + assert.Equal(t, expErr, err) + assert.Contains(t, stderr, expErr.Error()) + getMocks.sdlIface.AssertExpectations(t) +}