driftctl/pkg/resource/aws/aws_security_group_rule_tes...

116 lines
2.7 KiB
Go

package aws
import (
"testing"
"github.com/aws/aws-sdk-go/aws"
)
func TestAwsSecurityGroupRule_String(t *testing.T) {
tests := []struct {
name string
rule AwsSecurityGroupRule
want string
}{
{
name: "Test stringer on ingress rule",
rule: AwsSecurityGroupRule{
CidrBlocks: &[]string{"0.0.0.0/0", "1.2.3.4/32"},
FromPort: aws.Int(22),
Protocol: aws.String("tcp"),
SecurityGroupId: aws.String("sg-12345"),
ToPort: aws.Int(22),
Type: aws.String("ingress"),
},
want: "Type: ingress, SecurityGroup: sg-12345, Protocol: tcp, Ports: 22, Source: 0.0.0.0/0, 1.2.3.4/32",
},
{
name: "Test stringer on egress rule",
rule: AwsSecurityGroupRule{
CidrBlocks: &[]string{"0.0.0.0/0", "1.2.3.4/32"},
FromPort: aws.Int(22),
Protocol: aws.String("tcp"),
SecurityGroupId: aws.String("sg-12345"),
ToPort: aws.Int(22),
Type: aws.String("egress"),
},
want: "Type: egress, SecurityGroup: sg-12345, Protocol: tcp, Ports: 22, Destination: 0.0.0.0/0, 1.2.3.4/32",
},
{
name: "Test protocol display 'All' and empty cidr",
rule: AwsSecurityGroupRule{
Protocol: aws.String("-1"),
},
want: "Protocol: All",
},
{
name: "Test port range",
rule: AwsSecurityGroupRule{
FromPort: aws.Int(22),
ToPort: aws.Int(25),
},
want: "Ports: 22-25",
},
{
name: "Test port range show all",
rule: AwsSecurityGroupRule{
FromPort: aws.Int(0),
ToPort: aws.Int(0),
},
want: "Ports: All",
},
{
name: "Test empty cidr",
rule: AwsSecurityGroupRule{
CidrBlocks: &[]string{},
},
want: "",
},
{
name: "Test empty cidrv6",
rule: AwsSecurityGroupRule{
Ipv6CidrBlocks: &[]string{},
},
want: "",
},
{
name: "Test cidr v6",
rule: AwsSecurityGroupRule{
Ipv6CidrBlocks: &[]string{"::/0"},
Type: aws.String("ingress"),
},
want: "Type: ingress, Source: ::/0",
},
{
name: "Test empty prefix list",
rule: AwsSecurityGroupRule{
PrefixListIds: &[]string{},
},
want: "",
},
{
name: "Test prefix list",
rule: AwsSecurityGroupRule{
PrefixListIds: &[]string{"pl-12345"},
Type: aws.String("egress"),
},
want: "Type: egress, Destination: pl-12345",
},
{
name: "Test source security group id",
rule: AwsSecurityGroupRule{
SourceSecurityGroupId: aws.String("sg-1234"),
Type: aws.String("egress"),
},
want: "Type: egress, Destination: sg-1234",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tt.rule.String(); got != tt.want {
t.Errorf("String() = %v, want %v", got, tt.want)
}
})
}
}