Openstatus
www.openstatus.dev
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}