Openstatus
www.openstatus.dev
1package assertions
2
3import (
4 "testing"
5
6 "github.com/openstatushq/openstatus/apps/checker/request"
7)
8
9func TestIntTarget_IntEvaluate(t *testing.T) {
10 type fields struct {
11 AssertionType request.AssertionType
12 Comparator request.NumberComparator
13 Target int64
14 }
15 type args struct {
16 value int64
17 }
18 tests := []struct {
19 name string
20 fields fields
21 args args
22 want bool
23 }{
24 {
25 name: "Equals true", fields: fields{Comparator: request.NumberEquals, Target: 200}, args: args{value: 200}, want: true,
26 },
27 {
28 name: "Equals false", fields: fields{Comparator: request.NumberEquals, Target: 200}, args: args{value: 201}, want: false,
29 },
30 {
31 name: "Not Equals true", fields: fields{Comparator: request.NumberNotEquals, Target: 200}, args: args{value: 201}, want: true,
32 },
33 {
34 name: "Not Equals false", fields: fields{Comparator: request.NumberNotEquals, Target: 200}, args: args{value: 200}, want: false,
35 },
36 {
37 name: "greater than true", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 201}, want: true,
38 },
39 {
40 name: "greater than false 1", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 200}, want: false,
41 },
42 {
43 name: "greater than false", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 199}, want: false,
44 },
45 {
46 name: "greater than equal true", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 201}, want: true,
47 },
48 {
49 name: "greater than equal true 1", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 200}, want: true,
50 },
51 {
52 name: "greater than equal false", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 199}, want: false,
53 },
54 {
55 name: "lower than true", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 199}, want: true,
56 },
57 {
58 name: "lower than false 1", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 200}, want: false,
59 },
60 {
61 name: "lower than false", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 201}, want: false,
62 },
63 {
64 name: "lower than Equal true", fields: fields{Comparator: request.NumberLowerThanEqual, Target: 200}, args: args{value: 199}, want: true,
65 },
66 {
67 name: "lower than equal true 1", fields: fields{Comparator: request.NumberLowerThanEqual, Target: 200}, args: args{value: 200}, want: true,
68 },
69 {
70 name: "lower than equal false", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 201}, want: false,
71 },
72 }
73 for _, tt := range tests {
74 t.Run(tt.name, func(t *testing.T) {
75 target := StatusTarget{
76 AssertionType: tt.fields.AssertionType,
77 Comparator: tt.fields.Comparator,
78 Target: tt.fields.Target,
79 }
80 if got := target.StatusEvaluate(tt.args.value); got != tt.want {
81 t.Errorf("IntTarget.IntEvaluate() = %v, want %v", got, tt.want)
82 }
83 })
84 }
85}
86
87func TestHeaderTarget_HeaderEvaluate(t *testing.T) {
88 type fields struct {
89 AssertionType request.AssertionType
90 Comparator request.StringComparator
91 Target string
92 Key string
93 }
94 type args struct {
95 s string
96 }
97 tests := []struct {
98 name string
99 fields fields
100 args args
101 want bool
102 }{
103 {name: "Header 1", fields: fields{Comparator: request.StringEmpty, Target: "", Key: "headers1"}, args: args{s: `{"Content-Type":"text/plain;charset=UTF-8","Strict-Transport-Security":"max-age=3153600000","Vary":"Accept-Encoding"}`}, want: false},
104 {name: "Header 2", fields: fields{Comparator: request.StringNotEmpty, Target: "", Key: "headers1"}, args: args{s: `{"Content-Type":"text/plain;charset=UTF-8","Strict-Transport-Security":"max-age=3153600000","headers1":"Accept-Encoding"}`}, want: true},
105 {name: "it should return false if it can not decode the headers", fields: fields{Comparator: request.StringContains, Target: "Accept-Encoding", Key: "Vary"}, args: args{s: `}`}, want: false},
106 }
107 for _, tt := range tests {
108 t.Run(tt.name, func(t *testing.T) {
109 target := HeaderTarget{
110 AssertionType: tt.fields.AssertionType,
111 Comparator: tt.fields.Comparator,
112 Target: tt.fields.Target,
113 Key: tt.fields.Key,
114 }
115 if got := target.HeaderEvaluate(tt.args.s); got != tt.want {
116 t.Errorf("HeaderTarget.HeaderEvaluate() = %v, want %v", got, tt.want)
117 }
118 })
119 }
120}
121
122func TestRecordTarget_RecordEvaluate(t *testing.T) {
123 type fields struct {
124 Comparator request.RecordComparator
125 Target string
126 }
127 type args struct {
128 s []string
129 }
130 tests := []struct {
131 name string
132 fields fields
133 args args
134 want bool
135 }{
136 {
137 name: "RecordEquals true",
138 fields: fields{Comparator: request.RecordEquals, Target: "foo"},
139 args: args{s: []string{"foo", "bar"}},
140 want: true,
141 },
142 {
143 name: "RecordEquals false",
144 fields: fields{Comparator: request.RecordEquals, Target: "baz"},
145 args: args{s: []string{"foo", "bar"}},
146 want: false,
147 },
148 {
149 name: "RecordNotEquals true",
150 fields: fields{Comparator: request.RecordNotEquals, Target: "baz"},
151 args: args{s: []string{"foo", "bar"}},
152 want: true,
153 },
154 {
155 name: "RecordNotEquals false",
156 fields: fields{Comparator: request.RecordNotEquals, Target: "foo"},
157 args: args{s: []string{"foo", "bar"}},
158 want: false,
159 },
160 {
161 name: "RecordContains true",
162 fields: fields{Comparator: request.RecordContains, Target: "ba"},
163 args: args{s: []string{"foo", "bar"}},
164 want: true,
165 },
166 {
167 name: "RecordContains false",
168 fields: fields{Comparator: request.RecordContains, Target: "baz"},
169 args: args{s: []string{"foo", "bar"}},
170 want: false,
171 },
172 {
173 name: "RecordNotContains true",
174 fields: fields{Comparator: request.RecordNotContains, Target: "baz"},
175 args: args{s: []string{"foo", "bar"}},
176 want: true,
177 },
178 {
179 name: "RecordNotContains false",
180 fields: fields{Comparator: request.RecordNotContains, Target: "ba"},
181 args: args{s: []string{"foo", "bar"}},
182 want: false,
183 },
184 {
185 name: "Empty slice",
186 fields: fields{Comparator: request.RecordEquals, Target: "foo"},
187 args: args{s: []string{}},
188 want: false,
189 },
190 }
191 for _, tt := range tests {
192 t.Run(tt.name, func(t *testing.T) {
193 target := RecordTarget{
194 Comparator: tt.fields.Comparator,
195 Target: tt.fields.Target,
196 }
197 if got := target.RecordEvaluate(tt.args.s); got != tt.want {
198 t.Errorf("RecordTarget.RecordEvaluate() = %v, want %v", got, tt.want)
199 }
200 })
201 }
202}