Openstatus www.openstatus.dev
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 147 lines 3.9 kB view raw
1package job_test 2 3import ( 4 "context" 5 "testing" 6 7 "github.com/openstatushq/openstatus/apps/checker/pkg/job" 8 v1 "github.com/openstatushq/openstatus/apps/checker/proto/private_location/v1" 9 "github.com/openstatushq/openstatus/apps/checker/request" 10 "github.com/stretchr/testify/assert" 11) 12 13// Save original checker.Http for restoration 14 15func TestHTTPJob_Success(t *testing.T) { 16 17 // Mock checker.Http to simulate success 18 19 monitor := &v1.HTTPMonitor{ 20 Url: "https://openstat.us", 21 Method: "GET", 22 Timeout: 10000, 23 Retry: 2, 24 } 25 26 data, err := job.NewJobRunner().HTTPJob(context.Background(), monitor) 27 if err != nil { 28 t.Fatalf("expected no error, got %v", err) 29 } 30 if data.RequestStatus != "success" { 31 t.Errorf("expected RequestStatus 'success', got '%s'", data.RequestStatus) 32 } 33 if data.Error != 0 { 34 t.Errorf("expected Error 0, got %d", data.Error) 35 } 36} 37 38func TestHTTPJob_Failure(t *testing.T) { 39 40 monitor := &v1.HTTPMonitor{ 41 Url: "https://localhost:1234", 42 Method: "GET", 43 Timeout: 1000, 44 Retry: 1, 45 } 46 47 data, err := job.NewJobRunner().HTTPJob(context.Background(), monitor) 48 if err == nil { 49 t.Fatalf("expected error, got nil") 50 } 51 if data != nil { 52 t.Errorf("expected data to be nil on error, got %+v", data) 53 } 54} 55 56func TestProtoStringAssertionToComparator(t *testing.T) { 57 tests := []struct { 58 name string 59 input v1.StringComparator 60 want request.StringComparator 61 expectErr bool 62 }{ 63 { 64 name: "Contains", 65 input: v1.StringComparator_STRING_COMPARATOR_CONTAINS, 66 want: request.StringContains, 67 expectErr: false, 68 }, 69 { 70 name: "NotContains", 71 input: v1.StringComparator_STRING_COMPARATOR_NOT_CONTAINS, 72 want: request.StringNotContains, 73 expectErr: false, 74 }, 75 { 76 name: "Equals", 77 input: v1.StringComparator_STRING_COMPARATOR_EQUAL, 78 want: request.StringEquals, 79 expectErr: false, 80 }, 81 { 82 name: "NotEquals", 83 input: v1.StringComparator_STRING_COMPARATOR_NOT_EQUAL, 84 want: request.StringNotEquals, 85 expectErr: false, 86 }, 87 { 88 name: "Empty", 89 input: v1.StringComparator_STRING_COMPARATOR_EMPTY, 90 want: request.StringEmpty, 91 expectErr: false, 92 }, 93 { 94 name: "NotEmpty", 95 input: v1.StringComparator_STRING_COMPARATOR_NOT_EMPTY, 96 want: request.StringNotEmpty, 97 expectErr: false, 98 }, 99 { 100 name: "Unknown", 101 input: v1.StringComparator(999), 102 want: "", 103 expectErr: true, 104 }, 105 } 106 107 for _, tt := range tests { 108 t.Run(tt.name, func(t *testing.T) { 109 got, err := job.ProtoStringAssertionToComparator(tt.input) 110 if tt.expectErr { 111 assert.Error(t, err) 112 } else { 113 assert.NoError(t, err) 114 assert.Equal(t, tt.want, got) 115 } 116 }) 117 } 118} 119 120func TestProtoNumberAssertionToComparator(t *testing.T) { 121 tests := []struct { 122 name string 123 input v1.NumberComparator 124 want request.NumberComparator 125 expectErr bool 126 }{ 127 {"Equal", v1.NumberComparator_NUMBER_COMPARATOR_EQUAL, request.NumberEquals, false}, 128 {"NotEqual", v1.NumberComparator_NUMBER_COMPARATOR_NOT_EQUAL, request.NumberNotEquals, false}, 129 {"GreaterThan", v1.NumberComparator_NUMBER_COMPARATOR_GREATER_THAN, request.NumberGreaterThan, false}, 130 {"GreaterThanOrEqual", v1.NumberComparator_NUMBER_COMPARATOR_GREATER_THAN_OR_EQUAL, request.NumberGreaterThanEqual, false}, 131 {"LessThan", v1.NumberComparator_NUMBER_COMPARATOR_LESS_THAN, request.NumberLowerThan, false}, 132 {"LessThanOrEqual", v1.NumberComparator_NUMBER_COMPARATOR_LESS_THAN_OR_EQUAL, request.NumberLowerThanEqual, false}, 133 {"Unknown", v1.NumberComparator(999), "", true}, 134 } 135 136 for _, tt := range tests { 137 t.Run(tt.name, func(t *testing.T) { 138 got, err := job.ProtoNumberAssertionToComparator(tt.input) 139 if tt.expectErr { 140 assert.Error(t, err) 141 } else { 142 assert.NoError(t, err) 143 assert.Equal(t, tt.want, got) 144 } 145 }) 146 } 147}