Skip to content

Commit

Permalink
Fix exposures tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alexhung committed Aug 28, 2023
1 parent 3b1185f commit efb75b1
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 31 deletions.
21 changes: 17 additions & 4 deletions pkg/xray/resource_xray_repository_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ func resourceXrayRepositoryConfig() *schema.Resource {
Schema: map[string]*schema.Schema{
"scanners_category": {
Type: schema.TypeSet,
Optional: true,
MinItems: 1,
Required: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
Expand Down Expand Up @@ -278,12 +277,21 @@ func resourceXrayRepositoryConfig() *schema.Resource {
exposures := Exposures{}

switch packageType {
case "docker", "maven", "npm", "pypi":
case "docker":
exposures.ScannersCategory = map[string]bool{
"services_scan": category["services"].(bool),
"secrets_scan": category["secrets"].(bool),
"applications_scan": category["applications"].(bool),
}
case "maven":
exposures.ScannersCategory = map[string]bool{
"secrets_scan": category["secrets"].(bool),
}
case "npm", "pypi":
exposures.ScannersCategory = map[string]bool{
"secrets_scan": category["secrets"].(bool),
"applications_scan": category["applications"].(bool),
}
case "terraformbackend":
exposures.ScannersCategory = map[string]bool{
"iac_scan": category["iac"].(bool),
Expand Down Expand Up @@ -335,10 +343,15 @@ func resourceXrayRepositoryConfig() *schema.Resource {
}

switch packageType {
case "docker", "maven", "npm", "pypi":
case "docker":
scannersCategory["services"] = exposures.ScannersCategory["services_scan"]
scannersCategory["secrets"] = exposures.ScannersCategory["secrets_scan"]
scannersCategory["applications"] = exposures.ScannersCategory["applications_scan"]
case "maven":
scannersCategory["secrets"] = exposures.ScannersCategory["secrets_scan"]
case "npm", "pypi":
scannersCategory["secrets"] = exposures.ScannersCategory["secrets_scan"]
scannersCategory["applications"] = exposures.ScannersCategory["applications_scan"]
case "terraformbackend":
scannersCategory["iac"] = exposures.ScannersCategory["iac_scan"]
}
Expand Down
123 changes: 96 additions & 27 deletions pkg/xray/resource_xray_repository_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ func TestAccRepositoryConfigRepoConfigNegative(t *testing.T) {
func TestAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T) {
testCase := []struct {
packageType string
template string
validVersion string
}{
{"docker", "3.67.9"},
{"maven", "3.77.4"},
{"docker", TestDataRepoConfigDockerTemplate, "3.67.9"},
{"maven", TestDataRepoConfigMavenTemplate, "3.77.4"},
}

version, err := sdk.GetXrayVersion(GetTestResty(t))
Expand All @@ -58,11 +59,11 @@ func TestAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T
}

for _, tc := range testCase {
t.Run(tc.packageType, testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t, tc.packageType, tc.validVersion, version))
t.Run(tc.packageType, testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t, tc.packageType, tc.template, tc.validVersion, version))
}
}

func testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T, packageType, validVersion, xrayVersion string) func(t *testing.T) {
func testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T, packageType, template, validVersion, xrayVersion string) func(t *testing.T) {
return func(t *testing.T) {
_, fqrn, resourceName := testutil.MkNames("xray-repo-config-", "xray_repository_config")
var testData = map[string]string{
Expand Down Expand Up @@ -97,7 +98,7 @@ func testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T

Steps: []resource.TestStep{
{
Config: sdk.ExecuteTemplate(fqrn, TestDataRepoConfigTemplate, testData),
Config: sdk.ExecuteTemplate(fqrn, template, testData),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "repo_name", testData["repo_name"]),
resource.TestCheckResourceAttr(fqrn, "config.0.retention_in_days", testData["retention_in_days"]),
Expand All @@ -117,12 +118,54 @@ func testAccRepositoryConfigRepoConfigCreate_VulnContextualAnalysis(t *testing.T
func TestAccRepositoryConfigRepoConfigCreate_Exposure(t *testing.T) {
testCase := []struct {
packageType string
template string
validVersion string
checkFunc func(fqrn string, testData map[string]string) resource.TestCheckFunc
}{
{"docker", "3.67.9"},
{"maven", "3.78.9"},
{"npm", "3.78.9"},
{"pypi", "3.78.9"},
{
"docker",
TestDataRepoConfigDockerTemplate,
"3.67.9",
func(fqrn string, testData map[string]string) resource.TestCheckFunc {
return resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.services", testData["services_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.secrets", testData["secrets_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.applications", testData["applications_scan"]),
)
},
},
{
"maven",
TestDataRepoConfigMavenTemplate,
"3.78.9",
func(fqrn string, testData map[string]string) resource.TestCheckFunc {
return resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.secrets", testData["secrets_scan"]),
)
},
},
{
"npm",
TestDataRepoConfigNpmPyPiTemplate,
"3.78.9",
func(fqrn string, testData map[string]string) resource.TestCheckFunc {
return resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.secrets", testData["secrets_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.applications", testData["applications_scan"]),
)
},
},
{
"pypi",
TestDataRepoConfigNpmPyPiTemplate,
"3.78.9",
func(fqrn string, testData map[string]string) resource.TestCheckFunc {
return resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.secrets", testData["secrets_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.applications", testData["applications_scan"]),
)
},
},
}

version, err := sdk.GetXrayVersion(GetTestResty(t))
Expand All @@ -132,11 +175,11 @@ func TestAccRepositoryConfigRepoConfigCreate_Exposure(t *testing.T) {
}

for _, tc := range testCase {
t.Run(tc.packageType, testAccRepositoryConfigRepoConfigCreate(t, tc.packageType, tc.validVersion, version))
t.Run(tc.packageType, testAccRepositoryConfigRepoConfigCreate(t, tc.packageType, tc.template, tc.validVersion, version, tc.checkFunc))
}
}

func testAccRepositoryConfigRepoConfigCreate(t *testing.T, packageType, validVersion, xrayVersion string) func(t *testing.T) {
func testAccRepositoryConfigRepoConfigCreate(t *testing.T, packageType, template, validVersion, xrayVersion string, checkFunc func(fqrn string, testData map[string]string) resource.TestCheckFunc) func(t *testing.T) {
return func(t *testing.T) {
_, fqrn, resourceName := testutil.MkNames("xray-repo-config-", "xray_repository_config")
var testData = map[string]string{
Expand All @@ -146,7 +189,7 @@ func testAccRepositoryConfigRepoConfigCreate(t *testing.T, packageType, validVer
"vuln_contextual_analysis": "false",
"services_scan": "true",
"secrets_scan": "true",
"applications_scan": "false",
"applications_scan": "true",
}

valid, _ := sdk.CheckVersion(xrayVersion, validVersion)
Expand All @@ -171,15 +214,8 @@ func testAccRepositoryConfigRepoConfigCreate(t *testing.T, packageType, validVer

Steps: []resource.TestStep{
{
Config: sdk.ExecuteTemplate(fqrn, TestDataRepoConfigTemplate, testData),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(fqrn, "repo_name", testData["repo_name"]),
resource.TestCheckResourceAttr(fqrn, "config.0.retention_in_days", testData["retention_in_days"]),
resource.TestCheckResourceAttr(fqrn, "config.0.vuln_contextual_analysis", testData["vuln_contextual_analysis"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.services", testData["services_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.secrets", testData["secrets_scan"]),
resource.TestCheckResourceAttr(fqrn, "config.0.exposures.0.scanners_category.0.applications", testData["applications_scan"]),
),
Config: sdk.ExecuteTemplate(fqrn, template, testData),
Check: checkFunc(fqrn, testData),
},
{
ResourceName: fqrn,
Expand Down Expand Up @@ -371,20 +407,53 @@ resource "xray_repository_config" "{{ .resource_name }}" {
}
}`

const TestDataRepoConfigTemplate = `
const TestDataRepoConfigDockerTemplate = `
resource "xray_repository_config" "{{ .resource_name }}" {
repo_name = "{{ .repo_name }}"
config {
retention_in_days = {{ .retention_in_days }}
vuln_contextual_analysis = {{ .vuln_contextual_analysis }}
exposures {
scanners_category {
services = true
secrets = true
applications = true
}
}
}
}`

const TestDataRepoConfigMavenTemplate = `
resource "xray_repository_config" "{{ .resource_name }}" {
repo_name = "{{ .repo_name }}"
config {
retention_in_days = {{ .retention_in_days }}
exposures {
vuln_contextual_analysis = {{ .vuln_contextual_analysis }}
exposures {
scanners_category {
services = {{ .services_scan }}
secrets = {{ .secrets_scan }}
applications = {{ .applications_scan }}
secrets = true
}
}
}
}
}`

const TestDataRepoConfigNpmPyPiTemplate = `
resource "xray_repository_config" "{{ .resource_name }}" {
repo_name = "{{ .repo_name }}"
config {
retention_in_days = {{ .retention_in_days }}
exposures {
scanners_category {
secrets = true
applications = true
}
}
}
}`

Expand Down

0 comments on commit efb75b1

Please sign in to comment.