Skip to content

Commit

Permalink
add test for connectors ls
Browse files Browse the repository at this point in the history
  • Loading branch information
raulb committed Jan 29, 2025
1 parent 0e3f794 commit 309d7a2
Show file tree
Hide file tree
Showing 3 changed files with 166 additions and 8 deletions.
6 changes: 3 additions & 3 deletions cmd/conduit/internal/testutils/mock_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"google.golang.org/protobuf/types/known/timestamppb"
)

func getDateTime() *timestamppb.Timestamp {
func GetDateTime() *timestamppb.Timestamp {
parsedTime, _ := time.Parse(time.RFC3339, "1970-01-01T00:00:00Z")
return timestamppb.New(parsedTime)
}
Expand All @@ -43,8 +43,8 @@ func MockGetPipeline(mockService *mock.MockPipelineService, pipelineID string, c
},
ConnectorIds: connectorIds,
ProcessorIds: processorIds,
CreatedAt: getDateTime(),
UpdatedAt: getDateTime(),
CreatedAt: GetDateTime(),
UpdatedAt: GetDateTime(),
},
}, nil).Times(1)
}
Expand Down
16 changes: 11 additions & 5 deletions cmd/conduit/root/connectors/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,20 @@ var (
_ ecdysis.CommandWithAliases = (*ListCommand)(nil)
_ ecdysis.CommandWithDocs = (*ListCommand)(nil)
_ ecdysis.CommandWithFlags = (*ListCommand)(nil)
_ ecdysis.CommandWithOutput = (*ListCommand)(nil)
)

type ListFlags struct {
PipelineID string `long:"pipeline-id" usage:"filter connectors by pipeline ID"`
}

type ListCommand struct {
flags ListFlags
flags ListFlags
output ecdysis.Output
}

func (c *ListCommand) Output(output ecdysis.Output) {
c.output = output
}

func (c *ListCommand) Flags() []ecdysis.Flag {
Expand Down Expand Up @@ -71,14 +77,14 @@ func (c *ListCommand) ExecuteWithClient(ctx context.Context, client *api.Client)
return resp.Connectors[i].Id < resp.Connectors[j].Id
})

displayConnectors(resp.Connectors)
c.output.Stdout(getConnectorsTable(resp.Connectors))

return nil
}

func displayConnectors(connectors []*apiv1.Connector) {
func getConnectorsTable(connectors []*apiv1.Connector) string {
if len(connectors) == 0 {
return
return ""
}

table := simpletable.New()
Expand All @@ -105,5 +111,5 @@ func displayConnectors(connectors []*apiv1.Connector) {
}
table.Body.Cells = append(table.Body.Cells, r)
}
fmt.Println(table.String())
return table.String()
}
152 changes: 152 additions & 0 deletions cmd/conduit/root/connectors/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@
package connectors

import (
"bytes"
"context"
"strings"
"testing"

"github.com/conduitio/conduit/cmd/conduit/api"
"github.com/conduitio/conduit/cmd/conduit/api/mock"
"github.com/conduitio/conduit/cmd/conduit/internal/testutils"
apiv1 "github.com/conduitio/conduit/proto/api/v1"
"github.com/conduitio/ecdysis"
"github.com/matryer/is"
"github.com/spf13/pflag"
"go.uber.org/mock/gomock"
)

func TestConnectorsListCommandFlags(t *testing.T) {
Expand Down Expand Up @@ -54,3 +62,147 @@ func TestConnectorsListCommandFlags(t *testing.T) {
is.Equal(cf.Usage, f.usage)
}
}

func TestListCommandExecuteWithClient_WithConnectorsAndNoFlags(t *testing.T) {
is := is.New(t)

buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)

ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockService := mock.NewMockConnectorService(ctrl)

testutils.MockGetListConnectors(mockService, "", []*apiv1.Connector{
{
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
{
Id: "conn2",
Type: apiv1.Connector_TYPE_DESTINATION,
Plugin: "plugin2",
PipelineId: "pipeline2",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
})

client := &api.Client{
ConnectorServiceClient: mockService,
}

cmd := &ListCommand{}
cmd.Output(out)

err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)

output := buf.String()
is.True(len(output) > 0)

is.True(strings.Contains(output, "ID"))
is.True(strings.Contains(output, "PLUGIN"))
is.True(strings.Contains(output, "TYPE"))
is.True(strings.Contains(output, "PIPELINE_ID"))
is.True(strings.Contains(output, "CREATED"))
is.True(strings.Contains(output, "LAST_UPDATED"))

is.True(strings.Contains(output, "conn1"))
is.True(strings.Contains(output, "plugin1"))
is.True(strings.Contains(output, "pipeline1"))
is.True(strings.Contains(output, "conn2"))
is.True(strings.Contains(output, "plugin2"))
is.True(strings.Contains(output, "destination"))
is.True(strings.Contains(output, "pipeline2"))

is.True(strings.Contains(output, "1970-01-01T00:00:00Z"))
}

func TestListCommandExecuteWithClient_WithConnectorsAndFlags(t *testing.T) {
is := is.New(t)

buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)

ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockService := mock.NewMockConnectorService(ctrl)

client := &api.Client{
ConnectorServiceClient: mockService,
}

cmd := &ListCommand{
flags: ListFlags{PipelineID: "pipeline1"},
}
cmd.Output(out)

testutils.MockGetListConnectors(mockService, cmd.flags.PipelineID, []*apiv1.Connector{
{
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
})

err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)

output := buf.String()
is.True(len(output) > 0)

is.True(strings.Contains(output, "ID"))
is.True(strings.Contains(output, "PLUGIN"))
is.True(strings.Contains(output, "TYPE"))
is.True(strings.Contains(output, "PIPELINE_ID"))
is.True(strings.Contains(output, "CREATED"))
is.True(strings.Contains(output, "LAST_UPDATED"))

is.True(strings.Contains(output, "conn1"))
is.True(strings.Contains(output, "plugin1"))
is.True(strings.Contains(output, "pipeline1"))

is.True(strings.Contains(output, "1970-01-01T00:00:00Z"))
}

func TestListCommandExecuteWithClient_EmptyResponse(t *testing.T) {
is := is.New(t)

buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)

ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockService := mock.NewMockConnectorService(ctrl)

testutils.MockGetListConnectors(mockService, "", []*apiv1.Connector{})
client := &api.Client{ConnectorServiceClient: mockService}

cmd := &ListCommand{}
cmd.Output(out)

err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)

output := buf.String()
is.True(len(output) == 0)
}

0 comments on commit 309d7a2

Please sign in to comment.