Skip to content

Commit 4ca1970

Browse files
committed
ci tests
1 parent bfdf4a6 commit 4ca1970

File tree

1 file changed

+170
-0
lines changed

1 file changed

+170
-0
lines changed

internal/scanners/ci/rules_test.go

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
package ci
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerinstance/armcontainerinstance"
8+
"github.com/Azure/go-autorest/autorest/to"
9+
"github.com/cmendible/azqr/internal/scanners"
10+
)
11+
12+
func TestContainerInstanceScanner_Rules(t *testing.T) {
13+
type fields struct {
14+
rule string
15+
target interface{}
16+
scanContext *scanners.ScanContext
17+
diagnosticsSettings scanners.DiagnosticsSettings
18+
}
19+
type want struct {
20+
broken bool
21+
result string
22+
}
23+
tests := []struct {
24+
name string
25+
fields fields
26+
want want
27+
}{
28+
{
29+
name: "ContainerInstanceScanner Availability Zones",
30+
fields: fields{
31+
rule: "AvailabilityZones",
32+
target: &armcontainerinstance.ContainerGroup{
33+
Zones: []*string{to.StringPtr("1"), to.StringPtr("2"), to.StringPtr("3")},
34+
},
35+
scanContext: &scanners.ScanContext{},
36+
diagnosticsSettings: scanners.DiagnosticsSettings{},
37+
},
38+
want: want{
39+
broken: false,
40+
result: "",
41+
},
42+
},
43+
{
44+
name: "ContainerInstanceScanner SLA",
45+
fields: fields{
46+
rule: "SLA",
47+
target: &armcontainerinstance.ContainerGroup{},
48+
scanContext: &scanners.ScanContext{},
49+
diagnosticsSettings: scanners.DiagnosticsSettings{},
50+
},
51+
want: want{
52+
broken: false,
53+
result: "99.9%",
54+
},
55+
},
56+
{
57+
name: "ContainerInstanceScanner IPAddress not present",
58+
fields: fields{
59+
rule: "Private",
60+
target: &armcontainerinstance.ContainerGroup{
61+
Properties: &armcontainerinstance.ContainerGroupProperties{
62+
IPAddress: nil,
63+
},
64+
},
65+
scanContext: &scanners.ScanContext{},
66+
diagnosticsSettings: scanners.DiagnosticsSettings{},
67+
},
68+
want: want{
69+
broken: true,
70+
result: "",
71+
},
72+
},
73+
{
74+
name: "ContainerInstanceScanner IPAddress Type not present",
75+
fields: fields{
76+
rule: "Private",
77+
target: &armcontainerinstance.ContainerGroup{
78+
Properties: &armcontainerinstance.ContainerGroupProperties{
79+
IPAddress: &armcontainerinstance.IPAddress{
80+
Type: nil,
81+
},
82+
},
83+
},
84+
scanContext: &scanners.ScanContext{},
85+
diagnosticsSettings: scanners.DiagnosticsSettings{},
86+
},
87+
want: want{
88+
broken: true,
89+
result: "",
90+
},
91+
},
92+
{
93+
name: "ContainerInstanceScanner IPAddress Internal",
94+
fields: fields{
95+
rule: "Private",
96+
target: &armcontainerinstance.ContainerGroup{
97+
Properties: &armcontainerinstance.ContainerGroupProperties{
98+
IPAddress: &armcontainerinstance.IPAddress{
99+
Type: getContainerGroupIPAddressTypePrivate(),
100+
},
101+
},
102+
},
103+
scanContext: &scanners.ScanContext{},
104+
diagnosticsSettings: scanners.DiagnosticsSettings{},
105+
},
106+
want: want{
107+
broken: false,
108+
result: "",
109+
},
110+
},
111+
{
112+
name: "APIManagementScanner SKU",
113+
fields: fields{
114+
rule: "SKU",
115+
target: &armcontainerinstance.ContainerGroup{
116+
Properties: &armcontainerinstance.ContainerGroupProperties{
117+
SKU: getStandardSKU(),
118+
},
119+
},
120+
scanContext: &scanners.ScanContext{},
121+
diagnosticsSettings: scanners.DiagnosticsSettings{},
122+
},
123+
want: want{
124+
broken: false,
125+
result: "Standard",
126+
},
127+
},
128+
{
129+
name: "ContainerInstanceScanner CAF",
130+
fields: fields{
131+
rule: "CAF",
132+
target: &armcontainerinstance.ContainerGroup{
133+
Name: to.StringPtr("ci-test"),
134+
},
135+
scanContext: &scanners.ScanContext{},
136+
diagnosticsSettings: scanners.DiagnosticsSettings{},
137+
},
138+
want: want{
139+
broken: false,
140+
result: "",
141+
},
142+
},
143+
}
144+
for _, tt := range tests {
145+
t.Run(tt.name, func(t *testing.T) {
146+
s := &ContainerInstanceScanner{
147+
diagnosticsSettings: tt.fields.diagnosticsSettings,
148+
}
149+
rules := s.GetRules()
150+
b, w := rules[tt.fields.rule].Eval(tt.fields.target, tt.fields.scanContext)
151+
got := want{
152+
broken: b,
153+
result: w,
154+
}
155+
if !reflect.DeepEqual(got, tt.want) {
156+
t.Errorf("ContainerInstanceScanner Rule.Eval() = %v, want %v", got, tt.want)
157+
}
158+
})
159+
}
160+
}
161+
162+
func getContainerGroupIPAddressTypePrivate() *armcontainerinstance.ContainerGroupIPAddressType {
163+
s := armcontainerinstance.ContainerGroupIPAddressTypePrivate
164+
return &s
165+
}
166+
167+
func getStandardSKU() *armcontainerinstance.ContainerGroupSKU {
168+
s := armcontainerinstance.ContainerGroupSKUStandard
169+
return &s
170+
}

0 commit comments

Comments
 (0)