diff --git a/pkg/inventory/ecs_test.go b/pkg/inventory/ecs_test.go index 271abe5..8b642a9 100644 --- a/pkg/inventory/ecs_test.go +++ b/pkg/inventory/ecs_test.go @@ -4,70 +4,9 @@ import ( "testing" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ecs" - "github.com/aws/aws-sdk-go/service/ecs/ecsiface" "github.com/stretchr/testify/assert" ) -type mockECSClient struct { - ecsiface.ECSAPI -} - -func (m *mockECSClient) ListClusters(*ecs.ListClustersInput) (*ecs.ListClustersOutput, error) { - return &ecs.ListClustersOutput{ - ClusterArns: []*string{ - aws.String("arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1"), - aws.String("arn:aws:ecs:us-east-1:123456789012:cluster/cluster-2"), - }, - }, nil -} - -func (m *mockECSClient) ListTasks(*ecs.ListTasksInput) (*ecs.ListTasksOutput, error) { - return &ecs.ListTasksOutput{ - TaskArns: []*string{ - aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-000000000000"), - aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-111111111111"), - }, - }, nil -} - -func (m *mockECSClient) DescribeTasks(*ecs.DescribeTasksInput) (*ecs.DescribeTasksOutput, error) { - return &ecs.DescribeTasksOutput{ - Tasks: []*ecs.Task{ - { - TaskArn: aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-000000000000"), - Containers: []*ecs.Container{ - { - Name: aws.String("container-1"), - Image: aws.String("image-1"), - ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678901111"), - }, - { - Name: aws.String("container-2"), - Image: aws.String("image-2"), - ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678902222"), - }, - }, - }, - { - TaskArn: aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-111111111111"), - Containers: []*ecs.Container{ - { - Name: aws.String("container-3"), - Image: aws.String("image-3"), - ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678903333"), - }, - { - Name: aws.String("container-4-(same-image-as-3)"), - Image: aws.String("image-3"), - ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678903333"), - }, - }, - }, - }, - }, nil -} - func TestFetchClusters(t *testing.T) { mockSvc := &mockECSClient{} diff --git a/pkg/inventory/mock_ecs_test.go b/pkg/inventory/mock_ecs_test.go new file mode 100644 index 0000000..a806cff --- /dev/null +++ b/pkg/inventory/mock_ecs_test.go @@ -0,0 +1,66 @@ +package inventory + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ecs" + "github.com/aws/aws-sdk-go/service/ecs/ecsiface" +) + +type mockECSClient struct { + ecsiface.ECSAPI +} + +func (m *mockECSClient) ListClusters(*ecs.ListClustersInput) (*ecs.ListClustersOutput, error) { + return &ecs.ListClustersOutput{ + ClusterArns: []*string{ + aws.String("arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1"), + aws.String("arn:aws:ecs:us-east-1:123456789012:cluster/cluster-2"), + }, + }, nil +} + +func (m *mockECSClient) ListTasks(*ecs.ListTasksInput) (*ecs.ListTasksOutput, error) { + return &ecs.ListTasksOutput{ + TaskArns: []*string{ + aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-000000000000"), + aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-111111111111"), + }, + }, nil +} + +func (m *mockECSClient) DescribeTasks(*ecs.DescribeTasksInput) (*ecs.DescribeTasksOutput, error) { + return &ecs.DescribeTasksOutput{ + Tasks: []*ecs.Task{ + { + TaskArn: aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-000000000000"), + Containers: []*ecs.Container{ + { + Name: aws.String("container-1"), + Image: aws.String("image-1"), + ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678901111"), + }, + { + Name: aws.String("container-2"), + Image: aws.String("image-2"), + ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678902222"), + }, + }, + }, + { + TaskArn: aws.String("arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-111111111111"), + Containers: []*ecs.Container{ + { + Name: aws.String("container-3"), + Image: aws.String("image-3"), + ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678903333"), + }, + { + Name: aws.String("container-4-(same-image-as-3)"), + Image: aws.String("image-3"), + ImageDigest: aws.String("sha256:1234567890123456789012345678901234567890123456789012345678903333"), + }, + }, + }, + }, + }, nil +} diff --git a/pkg/inventory/report_test.go b/pkg/inventory/report_test.go new file mode 100644 index 0000000..94bf871 --- /dev/null +++ b/pkg/inventory/report_test.go @@ -0,0 +1,27 @@ +package inventory + +import ( + "testing" + + "github.com/anchore/anchore-ecs-inventory/internal/logger" + "github.com/stretchr/testify/assert" +) + +func setupLogger() { + // TODO(bradjones) Setting up logging for tests like this isn't great so will change this later + logConfig := logger.LogConfig{ + Level: "debug", + } + logger.InitLogger(logConfig) +} + +func TestGetInventoryReportForCluster(t *testing.T) { + setupLogger() + + mockSvc := &mockECSClient{} + + report, err := GetInventoryReportForCluster("cluster-1", mockSvc) + + assert.NoError(t, err) + assert.Equal(t, 3, len(report.Results[0].Images)) +}