Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 202 lines 6.7 kB view raw
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}