-
Notifications
You must be signed in to change notification settings - Fork 149
/
Copy pathxrayignorerule_test.go
124 lines (106 loc) · 3.17 KB
/
xrayignorerule_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package tests
import (
"fmt"
"testing"
"time"
"github.com/jfrog/jfrog-client-go/xray/services/utils"
"github.com/stretchr/testify/assert"
)
func TestXrayIgnoreRule(t *testing.T) {
initXrayTest(t)
t.Run("createCveIgnoreRule", createCveIgnoreRule)
t.Run("createVulnerabilitesAndLicensesIgnoreRule", createVulnerabilitesAndLicensesIgnoreRule)
t.Run("createIgnoreRuleOnWatch", createIgnoreRuleOnWatch)
}
func deleteIgnoreRule(t *testing.T, ignoreRuleId string) {
err := testsXrayIgnoreRuleService.Delete(ignoreRuleId)
assert.NoError(t, err)
}
func createCveIgnoreRule(t *testing.T) {
var ignoreRuleId string
defer func() {
deleteIgnoreRule(t, ignoreRuleId)
}()
component := utils.IgnoreFilterNameVersion{
Name: "gav://org.postgresql:postgresql",
Version: "42.2.3.jre7",
}
components := []utils.IgnoreFilterNameVersion{component}
cve := []string{"CVE-2022-31197"}
ignoreRuleFilter := utils.IgnoreFilters{
CVEs: cve,
Components: components,
}
ignoreRuleId = createIgnoreRule(t, ignoreRuleFilter)
assert.NotEmpty(t, ignoreRuleId)
}
func createVulnerabilitesAndLicensesIgnoreRule(t *testing.T) {
var ignoreRuleId string
defer func() {
deleteIgnoreRule(t, ignoreRuleId)
}()
vulnerabilities := []string{"any"}
licenses := []string{"any"}
releaseBundle := utils.IgnoreFilterNameVersion{
Name: "testRB",
}
releaseBundles := []utils.IgnoreFilterNameVersion{releaseBundle}
ignoreRuleFilter := utils.IgnoreFilters{
Vulnerabilities: vulnerabilities,
Licenses: licenses,
ReleaseBundles: releaseBundles,
}
ignoreRuleId = createIgnoreRule(t, ignoreRuleFilter)
assert.NotEmpty(t, ignoreRuleId)
}
func createIgnoreRuleOnWatch(t *testing.T) {
cve := []string{"CVE-2022-31197"}
policyName := fmt.Sprintf("%s-%s", "test-policy-for-dummy-watch", getRunId())
watchName := fmt.Sprintf("%s-%s", "test-watch-for-ignore-rule", getRunId())
err := createDummyWatch(policyName, watchName)
defer func() {
assert.NoError(t, testsXrayWatchService.Delete(watchName))
assert.NoError(t, testsXrayPolicyService.Delete(policyName))
}()
assert.NoError(t, err)
watches := []string{watchName}
var ignoreRuleId string
defer func() {
deleteIgnoreRule(t, ignoreRuleId)
}()
ignoreRuleFilter := utils.IgnoreFilters{
CVEs: cve,
Watches: watches,
}
ignoreRuleId = createIgnoreRule(t, ignoreRuleFilter)
assert.NotEmpty(t, ignoreRuleId)
}
func createIgnoreRule(t *testing.T, ignoreRuleFilter utils.IgnoreFilters) (ignoreRuleId string) {
ignoreRuleParams := utils.IgnoreRuleParams{
Notes: "Create new ignore rule" + getRunId(),
ExpiresAt: time.Now().AddDate(0, 0, 1),
IgnoreFilters: ignoreRuleFilter,
}
ignoreRuleId, err := testsXrayIgnoreRuleService.Create(ignoreRuleParams)
assert.NoError(t, err)
return ignoreRuleId
}
func createDummyWatch(policyName string, watchName string) error {
if err := createDummyPolicy(policyName); err != nil {
return err
}
params := utils.WatchParams{
Name: watchName,
Active: true,
Repositories: utils.WatchRepositoriesParams{
Type: utils.WatchRepositoriesAll,
},
Policies: []utils.AssignedPolicy{
{
Name: policyName,
Type: "security",
},
},
}
return testsXrayWatchService.Create(params)
}