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

     1  package repositories
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/khulnasoft-lab/defsec/internal/adapters/terraform/tftestutil"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func Test_AdaptDefaults(t *testing.T) {
    13  
    14  	src := `
    15  resource "github_repository" "my-repo" {
    16  	
    17  }
    18  `
    19  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    20  	repositories := Adapt(modules)
    21  	require.Len(t, repositories, 1)
    22  	repo := repositories[0]
    23  
    24  	assert.True(t, repo.Public.IsTrue())
    25  }
    26  
    27  func Test_Adapt_Private(t *testing.T) {
    28  
    29  	src := `
    30  resource "github_repository" "my-repo" {
    31  	private = true
    32  }
    33  `
    34  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    35  	repositories := Adapt(modules)
    36  	require.Len(t, repositories, 1)
    37  	repo := repositories[0]
    38  
    39  	assert.False(t, repo.Public.IsTrue())
    40  	assert.Equal(t, 3, repo.Public.GetMetadata().Range().GetStartLine())
    41  	assert.Equal(t, 3, repo.Public.GetMetadata().Range().GetEndLine())
    42  }
    43  
    44  func Test_Adapt_Public(t *testing.T) {
    45  
    46  	src := `
    47  resource "github_repository" "my-repo" {
    48  	private = false
    49  }
    50  `
    51  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    52  	repositories := Adapt(modules)
    53  	require.Len(t, repositories, 1)
    54  	repo := repositories[0]
    55  
    56  	assert.True(t, repo.Public.IsTrue())
    57  	assert.Equal(t, 3, repo.Public.GetMetadata().Range().GetStartLine())
    58  	assert.Equal(t, 3, repo.Public.GetMetadata().Range().GetEndLine())
    59  }
    60  
    61  func Test_Adapt_VisibilityOverride(t *testing.T) {
    62  
    63  	src := `
    64  resource "github_repository" "my-repo" {
    65  	private = true
    66  	visibility = "public"
    67  }
    68  `
    69  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    70  	repositories := Adapt(modules)
    71  	require.Len(t, repositories, 1)
    72  	repo := repositories[0]
    73  
    74  	assert.True(t, repo.Public.IsTrue())
    75  	assert.Equal(t, 4, repo.Public.GetMetadata().Range().GetStartLine())
    76  	assert.Equal(t, 4, repo.Public.GetMetadata().Range().GetEndLine())
    77  }
    78  
    79  func Test_Adapt_VulnerabilityAlertsEnabled(t *testing.T) {
    80  
    81  	src := `
    82  resource "github_repository" "my-repo" {
    83  	vulnerability_alerts = true
    84  }
    85  `
    86  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
    87  	repositories := Adapt(modules)
    88  	require.Len(t, repositories, 1)
    89  	repo := repositories[0]
    90  
    91  	assert.True(t, repo.VulnerabilityAlerts.IsTrue())
    92  	assert.Equal(t, 3, repo.VulnerabilityAlerts.GetMetadata().Range().GetStartLine())
    93  	assert.Equal(t, 3, repo.VulnerabilityAlerts.GetMetadata().Range().GetEndLine())
    94  }
    95  
    96  func Test_Adapt_VulnerabilityAlertsDisabled(t *testing.T) {
    97  
    98  	src := `
    99  resource "github_repository" "my-repo" {
   100  	vulnerability_alerts = false
   101  }
   102  `
   103  	modules := tftestutil.CreateModulesFromSource(t, src, ".tf")
   104  	repositories := Adapt(modules)
   105  	require.Len(t, repositories, 1)
   106  	repo := repositories[0]
   107  
   108  	assert.False(t, repo.VulnerabilityAlerts.IsTrue())
   109  	assert.Equal(t, 3, repo.VulnerabilityAlerts.GetMetadata().Range().GetStartLine())
   110  	assert.Equal(t, 3, repo.VulnerabilityAlerts.GetMetadata().Range().GetEndLine())
   111  }