-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove discovery filters parameter from Discover and solely rely on f…
…ilters from AwsConnection. Signed-off-by: Vasil Sirakov <sirakov97@gmail.com>
- Loading branch information
1 parent
77779d0
commit 9247bf5
Showing
7 changed files
with
227 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
package connection | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
// testParseOptsToFilters accepts a map which doesn't guarantee a deterministic iteration order. this means that slices | ||
// in the parsed filters need to be compared individually ensuring their elements match regardless of their order. | ||
func compareFilters(t *testing.T, expected, actual DiscoveryFilters) { | ||
require.ElementsMatch(t, expected.Ec2DiscoveryFilters.Regions, actual.Ec2DiscoveryFilters.Regions) | ||
require.ElementsMatch(t, expected.Ec2DiscoveryFilters.ExcludeRegions, actual.Ec2DiscoveryFilters.ExcludeRegions) | ||
|
||
require.ElementsMatch(t, expected.Ec2DiscoveryFilters.InstanceIds, actual.Ec2DiscoveryFilters.InstanceIds) | ||
require.ElementsMatch(t, expected.Ec2DiscoveryFilters.ExcludeInstanceIds, actual.Ec2DiscoveryFilters.ExcludeInstanceIds) | ||
|
||
require.Equal(t, expected.Ec2DiscoveryFilters.Tags, actual.Ec2DiscoveryFilters.Tags) | ||
require.Equal(t, expected.Ec2DiscoveryFilters.ExcludeTags, actual.Ec2DiscoveryFilters.ExcludeTags) | ||
|
||
require.Equal(t, expected.EcsDiscoveryFilters, actual.EcsDiscoveryFilters) | ||
|
||
require.Equal(t, expected.EcrDiscoveryFilters.Tags, actual.EcrDiscoveryFilters.Tags) | ||
|
||
require.ElementsMatch(t, expected.GeneralDiscoveryFilters.Regions, actual.GeneralDiscoveryFilters.Regions) | ||
require.Equal(t, expected.GeneralDiscoveryFilters.Tags, actual.GeneralDiscoveryFilters.Tags) | ||
} | ||
|
||
func TestParseOptsToFilters(t *testing.T) { | ||
t.Run("all opts are mapped to discovery filters correctly", func(t *testing.T) { | ||
opts := map[string]string{ | ||
// Ec2DiscoveryFilters.Tags | ||
"ec2:tag:key1": "val1", | ||
"ec2:tag:key2": "val2", | ||
// Ec2DiscoveryFilters.ExcludeTags | ||
"exclude:ec2:tag:key1": "val1", | ||
"exclude:ec2:tag:key2": "val2", | ||
// Ec2DiscoveryFilters.Regions | ||
"ec2:region:us-east-1": "us-east-1", | ||
"ec2:region:us-west-1": "us-west-1", | ||
// Ec2DiscoveryFilters.ExcludeRegions | ||
"exclude:ec2:region:us-east-1": "us-east-1", | ||
"exclude:ec2:region:us-west-1": "us-west-1", | ||
// Ec2DiscoveryFilters.InstanceIds | ||
"instance-id:iid-1": "iid-1", | ||
"instance-id:iid-2": "iid-2", | ||
// Ec2DiscoveryFilters.ExcludeInstanceIds | ||
"exclude:instance-id:iid-1": "iid-1", | ||
"exclude:instance-id:iid-2": "iid-2", | ||
// TODO: @vasil - include others? | ||
} | ||
expected := DiscoveryFilters{ | ||
Ec2DiscoveryFilters: Ec2DiscoveryFilters{ | ||
Regions: []string{ | ||
"us-east-1", "us-west-1", | ||
}, | ||
ExcludeRegions: []string{ | ||
"us-east-1", "us-west-1", | ||
}, | ||
InstanceIds: []string{ | ||
"iid-1", "iid-2", | ||
}, | ||
ExcludeInstanceIds: []string{ | ||
"iid-1", "iid-2", | ||
}, | ||
Tags: map[string]string{ | ||
"key1": "val1", | ||
"key2": "val2", | ||
}, | ||
ExcludeTags: map[string]string{ | ||
"key1": "val1", | ||
"key2": "val2", | ||
}, | ||
}, | ||
EcsDiscoveryFilters: EcsDiscoveryFilters{}, | ||
EcrDiscoveryFilters: EcrDiscoveryFilters{Tags: []string{}}, | ||
GeneralDiscoveryFilters: GeneralResourceDiscoveryFilters{Tags: map[string]string{}}, | ||
} | ||
|
||
actual := parseOptsToFilters(opts) | ||
compareFilters(t, expected, actual) | ||
}) | ||
|
||
t.Run("empty opts are mapped to discovery filters correctly", func(t *testing.T) { | ||
expected := DiscoveryFilters{ | ||
Ec2DiscoveryFilters: Ec2DiscoveryFilters{Tags: map[string]string{}, ExcludeTags: map[string]string{}}, | ||
EcsDiscoveryFilters: EcsDiscoveryFilters{}, | ||
EcrDiscoveryFilters: EcrDiscoveryFilters{Tags: []string{}}, | ||
GeneralDiscoveryFilters: GeneralResourceDiscoveryFilters{Tags: map[string]string{}}, | ||
} | ||
|
||
actual := parseOptsToFilters(map[string]string{}) | ||
compareFilters(t, expected, actual) | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package resources | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/aws/aws-sdk-go-v2/aws" | ||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types" | ||
"github.com/stretchr/testify/require" | ||
"go.mondoo.com/cnquery/v11/providers/aws/connection" | ||
) | ||
|
||
func TestShouldExcludeInstance(t *testing.T) { | ||
instance := ec2types.Instance{ | ||
InstanceId: aws.String("iid"), | ||
Tags: []ec2types.Tag{ | ||
{ | ||
Key: aws.String("key-1"), | ||
Value: aws.String("val-1"), | ||
}, | ||
{ | ||
Key: aws.String("key-2"), | ||
Value: aws.String("val-2"), | ||
}, | ||
}, | ||
} | ||
|
||
t.Run("should exclude instance by id", func(t *testing.T) { | ||
filters := connection.Ec2DiscoveryFilters{ | ||
ExcludeInstanceIds: []string{ | ||
"iid", | ||
}, | ||
ExcludeTags: map[string]string{ | ||
"key-3": "val3", | ||
}, | ||
} | ||
require.True(t, shouldExcludeInstance(instance, filters)) | ||
}) | ||
|
||
t.Run("should exclude instance by matching tag", func(t *testing.T) { | ||
filters := connection.Ec2DiscoveryFilters{ | ||
ExcludeInstanceIds: []string{ | ||
"iid-2", | ||
}, | ||
ExcludeTags: map[string]string{ | ||
"key-2": "val2", | ||
}, | ||
} | ||
require.False(t, shouldExcludeInstance(instance, filters)) | ||
}) | ||
|
||
t.Run("should not exclude instance with only a matching tag key", func(t *testing.T) { | ||
filters := connection.Ec2DiscoveryFilters{ | ||
ExcludeInstanceIds: []string{ | ||
"iid-2", | ||
}, | ||
ExcludeTags: map[string]string{ | ||
"key-2": "val3", | ||
"key-3": "val3", | ||
}, | ||
} | ||
require.False(t, shouldExcludeInstance(instance, filters)) | ||
}) | ||
|
||
t.Run("should not exclude instance when instance id and tags don't match", func(t *testing.T) { | ||
filters := connection.Ec2DiscoveryFilters{ | ||
ExcludeInstanceIds: []string{ | ||
"iid-2", | ||
}, | ||
ExcludeTags: map[string]string{ | ||
"key-3": "val3", | ||
}, | ||
} | ||
require.False(t, shouldExcludeInstance(instance, filters)) | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.