87 lines
2.1 KiB
Go
87 lines
2.1 KiB
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/docker/distribution/health"
|
||
|
)
|
||
|
|
||
|
// TestGETDownHandlerDoesNotChangeStatus ensures that calling the endpoint
|
||
|
// /debug/health/down with METHOD GET returns a 404
|
||
|
func TestGETDownHandlerDoesNotChangeStatus(t *testing.T) {
|
||
|
recorder := httptest.NewRecorder()
|
||
|
|
||
|
req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/down", nil)
|
||
|
if err != nil {
|
||
|
t.Errorf("Failed to create request.")
|
||
|
}
|
||
|
|
||
|
DownHandler(recorder, req)
|
||
|
|
||
|
if recorder.Code != 404 {
|
||
|
t.Errorf("Did not get a 404.")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TestGETUpHandlerDoesNotChangeStatus ensures that calling the endpoint
|
||
|
// /debug/health/down with METHOD GET returns a 404
|
||
|
func TestGETUpHandlerDoesNotChangeStatus(t *testing.T) {
|
||
|
recorder := httptest.NewRecorder()
|
||
|
|
||
|
req, err := http.NewRequest("GET", "https://fakeurl.com/debug/health/up", nil)
|
||
|
if err != nil {
|
||
|
t.Errorf("Failed to create request.")
|
||
|
}
|
||
|
|
||
|
DownHandler(recorder, req)
|
||
|
|
||
|
if recorder.Code != 404 {
|
||
|
t.Errorf("Did not get a 404.")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TestPOSTDownHandlerChangeStatus ensures the endpoint /debug/health/down changes
|
||
|
// the status code of the response to 503
|
||
|
// This test is order dependent, and should come before TestPOSTUpHandlerChangeStatus
|
||
|
func TestPOSTDownHandlerChangeStatus(t *testing.T) {
|
||
|
recorder := httptest.NewRecorder()
|
||
|
|
||
|
req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/down", nil)
|
||
|
if err != nil {
|
||
|
t.Errorf("Failed to create request.")
|
||
|
}
|
||
|
|
||
|
DownHandler(recorder, req)
|
||
|
|
||
|
if recorder.Code != 200 {
|
||
|
t.Errorf("Did not get a 200.")
|
||
|
}
|
||
|
|
||
|
if len(health.CheckStatus()) != 1 {
|
||
|
t.Errorf("DownHandler didn't add an error check.")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TestPOSTUpHandlerChangeStatus ensures the endpoint /debug/health/up changes
|
||
|
// the status code of the response to 200
|
||
|
func TestPOSTUpHandlerChangeStatus(t *testing.T) {
|
||
|
recorder := httptest.NewRecorder()
|
||
|
|
||
|
req, err := http.NewRequest("POST", "https://fakeurl.com/debug/health/up", nil)
|
||
|
if err != nil {
|
||
|
t.Errorf("Failed to create request.")
|
||
|
}
|
||
|
|
||
|
UpHandler(recorder, req)
|
||
|
|
||
|
if recorder.Code != 200 {
|
||
|
t.Errorf("Did not get a 200.")
|
||
|
}
|
||
|
|
||
|
if len(health.CheckStatus()) != 0 {
|
||
|
t.Errorf("UpHandler didn't remove the error check.")
|
||
|
}
|
||
|
}
|