Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
7.5 kB ยท 206 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207package assertions
import ( "testing"
"github.com/openstatushq/openstatus/apps/checker/request")
func TestIntTarget_IntEvaluate(t *testing.T) { type fields struct { AssertionType request.AssertionType Comparator request.NumberComparator Target int64 } type args struct { value int64 } tests := []struct { name string fields fields args args want bool }{ { name: "Equals true", fields: fields{Comparator: request.NumberEquals, Target: 200}, args: args{value: 200}, want: true, }, { name: "Equals false", fields: fields{Comparator: request.NumberEquals, Target: 200}, args: args{value: 201}, want: false, }, { name: "Not Equals true", fields: fields{Comparator: request.NumberNotEquals, Target: 200}, args: args{value: 201}, want: true, }, { name: "Not Equals false", fields: fields{Comparator: request.NumberNotEquals, Target: 200}, args: args{value: 200}, want: false, }, { name: "greater than true", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 201}, want: true, }, { name: "greater than false 1", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 200}, want: false, }, { name: "greater than false", fields: fields{Comparator: request.NumberGreaterThan, Target: 200}, args: args{value: 199}, want: false, }, { name: "greater than equal true", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 201}, want: true, }, { name: "greater than equal true 1", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 200}, want: true, }, { name: "greater than equal false", fields: fields{Comparator: request.NumberGreaterThanEqual, Target: 200}, args: args{value: 199}, want: false, }, { name: "lower than true", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 199}, want: true, }, { name: "lower than false 1", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 200}, want: false, }, { name: "lower than false", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 201}, want: false, }, { name: "lower than Equal true", fields: fields{Comparator: request.NumberLowerThanEqual, Target: 200}, args: args{value: 199}, want: true, }, { name: "lower than equal true 1", fields: fields{Comparator: request.NumberLowerThanEqual, Target: 200}, args: args{value: 200}, want: true, }, { name: "lower than equal false", fields: fields{Comparator: request.NumberLowerThan, Target: 200}, args: args{value: 201}, want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { target := StatusTarget{ AssertionType: tt.fields.AssertionType, Comparator: tt.fields.Comparator, Target: tt.fields.Target, } if got := target.StatusEvaluate(tt.args.value); got != tt.want { t.Errorf("IntTarget.IntEvaluate() = %v, want %v", got, tt.want) } }) }}
func TestHeaderTarget_HeaderEvaluate(t *testing.T) { type fields struct { AssertionType request.AssertionType Comparator request.StringComparator Target string Key string } type args struct { s string } tests := []struct { name string fields fields args args want bool }{ {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}, {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}, {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}, {name: "Lowercase assertion key", fields: fields{Comparator: request.StringEquals, Target: "application/json", Key: "content-type"}, args: args{s: `{"Content-Type":"application/json"}`}, want: true}, {name: "Mixed-case assertion and lowercase header", fields: fields{Comparator: request.StringEquals, Target: "application/json", Key: "CoNtEnT-TyPe"}, args: args{s: `{"content-type":"application/json"}`}, want: true}, {name: "Case-sensitive header value", fields: fields{Comparator: request.StringEquals, Target: "application/json", Key: "content-type"}, args: args{s: `{"Content-Type":"application/JSON"}`}, want: false}, {name: "Negative assertion uses actual header value", fields: fields{Comparator: request.StringNotEquals, Target: "application/json", Key: "content-type"}, args: args{s: `{"Content-Type":"application/json"}`}, want: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { target := HeaderTarget{ AssertionType: tt.fields.AssertionType, Comparator: tt.fields.Comparator, Target: tt.fields.Target, Key: tt.fields.Key, } if got := target.HeaderEvaluate(tt.args.s); got != tt.want { t.Errorf("HeaderTarget.HeaderEvaluate() = %v, want %v", got, tt.want) } }) }}
func TestRecordTarget_RecordEvaluate(t *testing.T) { type fields struct { Comparator request.RecordComparator Target string } type args struct { s []string } tests := []struct { name string fields fields args args want bool }{ { name: "RecordEquals true", fields: fields{Comparator: request.RecordEquals, Target: "foo"}, args: args{s: []string{"foo", "bar"}}, want: true, }, { name: "RecordEquals false", fields: fields{Comparator: request.RecordEquals, Target: "baz"}, args: args{s: []string{"foo", "bar"}}, want: false, }, { name: "RecordNotEquals true", fields: fields{Comparator: request.RecordNotEquals, Target: "baz"}, args: args{s: []string{"foo", "bar"}}, want: true, }, { name: "RecordNotEquals false", fields: fields{Comparator: request.RecordNotEquals, Target: "foo"}, args: args{s: []string{"foo", "bar"}}, want: false, }, { name: "RecordContains true", fields: fields{Comparator: request.RecordContains, Target: "ba"}, args: args{s: []string{"foo", "bar"}}, want: true, }, { name: "RecordContains false", fields: fields{Comparator: request.RecordContains, Target: "baz"}, args: args{s: []string{"foo", "bar"}}, want: false, }, { name: "RecordNotContains true", fields: fields{Comparator: request.RecordNotContains, Target: "baz"}, args: args{s: []string{"foo", "bar"}}, want: true, }, { name: "RecordNotContains false", fields: fields{Comparator: request.RecordNotContains, Target: "ba"}, args: args{s: []string{"foo", "bar"}}, want: false, }, { name: "Empty slice", fields: fields{Comparator: request.RecordEquals, Target: "foo"}, args: args{s: []string{}}, want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { target := RecordTarget{ Comparator: tt.fields.Comparator, Target: tt.fields.Target, } if got := target.RecordEvaluate(tt.args.s); got != tt.want { t.Errorf("RecordTarget.RecordEvaluate() = %v, want %v", got, tt.want) } }) }}