Skip to content

Commit adf9fb2

Browse files
authored
Merge pull request #5337 from gofogo/chore-bump-backoff-deps
chore(code-quality): webhook increase code coverage
2 parents a6243cf + 72a761c commit adf9fb2

File tree

4 files changed

+256
-24
lines changed

4 files changed

+256
-24
lines changed

provider/webhook/api/httpapi.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ import (
3333
const (
3434
MediaTypeFormatAndVersion = "application/external.dns.webhook+json;version=1"
3535
ContentTypeHeader = "Content-Type"
36+
UrlAdjustEndpoints = "/adjustendpoints"
37+
UrlApplyChanges = "/applychanges"
38+
UrlRecords = "/records"
3639
)
3740

3841
type WebhookServer struct {
@@ -121,8 +124,8 @@ func StartHTTPApi(provider provider.Provider, startedChan chan struct{}, readTim
121124

122125
m := http.NewServeMux()
123126
m.HandleFunc("/", p.NegotiateHandler)
124-
m.HandleFunc("/records", p.RecordsHandler)
125-
m.HandleFunc("/adjustendpoints", p.AdjustEndpointsHandler)
127+
m.HandleFunc(UrlRecords, p.RecordsHandler)
128+
m.HandleFunc(UrlAdjustEndpoints, p.AdjustEndpointsHandler)
126129

127130
s := &http.Server{
128131
Addr: providerPort,

provider/webhook/api/httpapi_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func TestMain(m *testing.M) {
7777
}
7878

7979
func TestRecordsHandlerRecords(t *testing.T) {
80-
req := httptest.NewRequest(http.MethodGet, "/records", nil)
80+
req := httptest.NewRequest(http.MethodGet, UrlRecords, nil)
8181
w := httptest.NewRecorder()
8282

8383
providerAPIServer := &WebhookServer{
@@ -99,7 +99,7 @@ func TestRecordsHandlerRecords(t *testing.T) {
9999
}
100100

101101
func TestRecordsHandlerRecordsWithErrors(t *testing.T) {
102-
req := httptest.NewRequest(http.MethodGet, "/records", nil)
102+
req := httptest.NewRequest(http.MethodGet, UrlRecords, nil)
103103
w := httptest.NewRecorder()
104104

105105
providerAPIServer := &WebhookServer{
@@ -139,7 +139,7 @@ func TestRecordsHandlerApplyChangesWithValidRequest(t *testing.T) {
139139

140140
reader := bytes.NewReader(j)
141141

142-
req := httptest.NewRequest(http.MethodPost, "/applychanges", reader)
142+
req := httptest.NewRequest(http.MethodPost, UrlApplyChanges, reader)
143143
w := httptest.NewRecorder()
144144

145145
providerAPIServer := &WebhookServer{
@@ -165,7 +165,7 @@ func TestRecordsHandlerApplyChangesWithErrors(t *testing.T) {
165165

166166
reader := bytes.NewReader(j)
167167

168-
req := httptest.NewRequest(http.MethodPost, "/applychanges", reader)
168+
req := httptest.NewRequest(http.MethodPost, UrlApplyChanges, reader)
169169
w := httptest.NewRecorder()
170170

171171
providerAPIServer := &WebhookServer{
@@ -191,7 +191,7 @@ func TestRecordsHandlerWithWrongHTTPMethod(t *testing.T) {
191191
}
192192

193193
func TestAdjustEndpointsHandlerWithInvalidRequest(t *testing.T) {
194-
req := httptest.NewRequest(http.MethodPost, "/adjustendpoints", nil)
194+
req := httptest.NewRequest(http.MethodPost, UrlAdjustEndpoints, nil)
195195
w := httptest.NewRecorder()
196196

197197
providerAPIServer := &WebhookServer{
@@ -201,7 +201,7 @@ func TestAdjustEndpointsHandlerWithInvalidRequest(t *testing.T) {
201201
res := w.Result()
202202
require.Equal(t, http.StatusBadRequest, res.StatusCode)
203203

204-
req = httptest.NewRequest(http.MethodGet, "/adjustendpoints", nil)
204+
req = httptest.NewRequest(http.MethodGet, UrlAdjustEndpoints, nil)
205205

206206
providerAPIServer.AdjustEndpointsHandler(w, req)
207207
res = w.Result()
@@ -222,7 +222,7 @@ func TestAdjustEndpointsHandlerWithValidRequest(t *testing.T) {
222222
require.NoError(t, err)
223223

224224
reader := bytes.NewReader(j)
225-
req := httptest.NewRequest(http.MethodPost, "/adjustendpoints", reader)
225+
req := httptest.NewRequest(http.MethodPost, UrlAdjustEndpoints, reader)
226226
w := httptest.NewRecorder()
227227

228228
providerAPIServer := &WebhookServer{
@@ -248,7 +248,7 @@ func TestAdjustEndpointsHandlerWithError(t *testing.T) {
248248
require.NoError(t, err)
249249

250250
reader := bytes.NewReader(j)
251-
req := httptest.NewRequest(http.MethodPost, "/adjustendpoints", reader)
251+
req := httptest.NewRequest(http.MethodPost, UrlAdjustEndpoints, reader)
252252
w := httptest.NewRecorder()
253253

254254
providerAPIServer := &WebhookServer{

provider/webhook/webhook.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func NewWebhookProvider(u string) (*WebhookProvider, error) {
113113
}
114114

115115
// negotiate API information
116-
req, err := http.NewRequest("GET", u, nil)
116+
req, err := http.NewRequest(http.MethodGet, u, nil)
117117
if err != nil {
118118
return nil, err
119119
}
@@ -128,8 +128,8 @@ func NewWebhookProvider(u string) (*WebhookProvider, error) {
128128
return err
129129
}
130130
// we currently only use 200 as success, but considering okay all 2XX for future usage
131-
if resp.StatusCode >= 300 && resp.StatusCode < 500 {
132-
return backoff.Permanent(fmt.Errorf("status code < 500"))
131+
if resp.StatusCode >= http.StatusMultipleChoices && resp.StatusCode < http.StatusInternalServerError {
132+
return backoff.Permanent(fmt.Errorf("status code < %d", http.StatusInternalServerError))
133133
}
134134
return nil
135135
}, backoff.WithMaxRetries(backoff.NewExponentialBackOff(), maxRetries))
@@ -164,7 +164,7 @@ func (p WebhookProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, err
164164
recordsRequestsGauge.Gauge.Inc()
165165
u := p.remoteServerURL.JoinPath("records").String()
166166

167-
req, err := http.NewRequest("GET", u, nil)
167+
req, err := http.NewRequest(http.MethodGet, u, nil)
168168
if err != nil {
169169
recordsErrorsGauge.Gauge.Inc()
170170
log.Debugf("Failed to create request: %s", err.Error())
@@ -189,7 +189,7 @@ func (p WebhookProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, err
189189
return nil, err
190190
}
191191

192-
endpoints := []*endpoint.Endpoint{}
192+
var endpoints []*endpoint.Endpoint
193193
if err := json.NewDecoder(resp.Body).Decode(&endpoints); err != nil {
194194
recordsErrorsGauge.Gauge.Inc()
195195
log.Debugf("Failed to decode response body: %s", err.Error())
@@ -201,7 +201,7 @@ func (p WebhookProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, err
201201
// ApplyChanges will make a POST to remoteServerURL/records with the changes
202202
func (p WebhookProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error {
203203
applyChangesRequestsGauge.Gauge.Inc()
204-
u := p.remoteServerURL.JoinPath("records").String()
204+
u := p.remoteServerURL.JoinPath(webhookapi.UrlRecords).String()
205205

206206
b := new(bytes.Buffer)
207207
if err := json.NewEncoder(b).Encode(changes); err != nil {
@@ -210,7 +210,7 @@ func (p WebhookProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
210210
return err
211211
}
212212

213-
req, err := http.NewRequest("POST", u, b)
213+
req, err := http.NewRequest(http.MethodPost, u, b)
214214
if err != nil {
215215
applyChangesErrorsGauge.Gauge.Inc()
216216
log.Debugf("Failed to create request: %s", err.Error())
@@ -225,6 +225,7 @@ func (p WebhookProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
225225
log.Debugf("Failed to perform request: %s", err.Error())
226226
return err
227227
}
228+
228229
defer resp.Body.Close()
229230

230231
if resp.StatusCode != http.StatusNoContent {
@@ -240,12 +241,12 @@ func (p WebhookProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
240241
}
241242

242243
// AdjustEndpoints will call the provider doing a POST on `/adjustendpoints` which will return a list of modified endpoints
243-
// based on a provider specific requirement.
244+
// based on a provider-specific requirement.
244245
// This method returns an empty slice in case there is a technical error on the provider's side so that no endpoints will be considered.
245246
func (p WebhookProvider) AdjustEndpoints(e []*endpoint.Endpoint) ([]*endpoint.Endpoint, error) {
246247
adjustEndpointsRequestsGauge.Gauge.Inc()
247-
endpoints := []*endpoint.Endpoint{}
248-
u, err := url.JoinPath(p.remoteServerURL.String(), "adjustendpoints")
248+
var endpoints []*endpoint.Endpoint
249+
u, err := url.JoinPath(p.remoteServerURL.String(), webhookapi.UrlAdjustEndpoints)
249250
if err != nil {
250251
adjustEndpointsErrorsGauge.Gauge.Inc()
251252
log.Debugf("Failed to join path, %s", err)
@@ -259,7 +260,7 @@ func (p WebhookProvider) AdjustEndpoints(e []*endpoint.Endpoint) ([]*endpoint.En
259260
return nil, err
260261
}
261262

262-
req, err := http.NewRequest("POST", u, b)
263+
req, err := http.NewRequest(http.MethodPost, u, b)
263264
if err != nil {
264265
adjustEndpointsErrorsGauge.Gauge.Inc()
265266
log.Debugf("Failed to create new HTTP request, %s", err)

0 commit comments

Comments
 (0)