github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/nifcloud/computing/security_group_test.go (about)

     1  package computing
     2  
     3  import (
     4  	"testing"
     5  
     6  	defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types"
     7  
     8  	"github.com/khulnasoft-lab/defsec/pkg/providers/nifcloud/computing"
     9  
    10  	"github.com/khulnasoft-lab/defsec/internal/adapters/terraform/tftestutil"
    11  
    12  	"github.com/khulnasoft-lab/defsec/test/testutil"
    13  )
    14  
    15  func Test_adaptSecurityGroups(t *testing.T) {
    16  	tests := []struct {
    17  		name      string
    18  		terraform string
    19  		expected  []computing.SecurityGroup
    20  	}{
    21  		{
    22  			name: "configured",
    23  			terraform: `
    24  			resource "nifcloud_security_group" "example" {
    25  				group_name = "example"
    26  				description = "memo"
    27  			}
    28  			
    29  			resource "nifcloud_security_group_rule" "example" {
    30  				type                 = "IN"
    31  				security_group_names = [nifcloud_security_group.example.group_name]
    32  				from_port            = 22
    33  				to_port              = 22
    34  				protocol             = "TCP"
    35  				description          = "memo"
    36  				cidr_ip              = "1.2.3.4/32"
    37  			}
    38  `,
    39  			expected: []computing.SecurityGroup{{
    40  				Metadata:    defsecTypes.NewTestMetadata(),
    41  				Description: defsecTypes.String("memo", defsecTypes.NewTestMetadata()),
    42  				IngressRules: []computing.SecurityGroupRule{
    43  					{
    44  						Metadata:    defsecTypes.NewTestMetadata(),
    45  						CIDR:        defsecTypes.String("1.2.3.4/32", defsecTypes.NewTestMetadata()),
    46  						Description: defsecTypes.String("memo", defsecTypes.NewTestMetadata()),
    47  					},
    48  				},
    49  			}},
    50  		},
    51  		{
    52  			name: "defaults",
    53  			terraform: `
    54  			resource "nifcloud_security_group" "example" {
    55  			}
    56  			
    57  			resource "nifcloud_security_group_rule" "example" {
    58  				type                 = "IN"
    59  				security_group_names = [nifcloud_security_group.example.group_name]
    60  			}
    61  
    62  `,
    63  
    64  			expected: []computing.SecurityGroup{{
    65  				Metadata:    defsecTypes.NewTestMetadata(),
    66  				Description: defsecTypes.String("", defsecTypes.NewTestMetadata()),
    67  				IngressRules: []computing.SecurityGroupRule{
    68  					{
    69  						Metadata:    defsecTypes.NewTestMetadata(),
    70  						CIDR:        defsecTypes.String("", defsecTypes.NewTestMetadata()),
    71  						Description: defsecTypes.String("", defsecTypes.NewTestMetadata()),
    72  					},
    73  				},
    74  			}},
    75  		},
    76  	}
    77  
    78  	for _, test := range tests {
    79  		t.Run(test.name, func(t *testing.T) {
    80  			modules := tftestutil.CreateModulesFromSource(t, test.terraform, ".tf")
    81  			sgAdapter := sgAdapter{sgRuleIDs: modules.GetChildResourceIDMapByType("nifcloud_security_group_rule")}
    82  			adapted := sgAdapter.adaptSecurityGroups(modules)
    83  			testutil.AssertDefsecEqual(t, test.expected, adapted)
    84  		})
    85  	}
    86  }