forked from TrueCloudLab/distribution
1d33874951
Go 1.13 and up enforce import paths to be versioned if a project contains a go.mod and has released v2 or up. The current v2.x branches (and releases) do not yet have a go.mod, and therefore are still allowed to be imported with a non-versioned import path (go modules add a `+incompatible` annotation in that case). However, now that this project has a `go.mod` file, incompatible import paths will not be accepted by go modules, and attempting to use code from this repository will fail. This patch uses `v3` for the import-paths (not `v2`), because changing import paths itself is a breaking change, which means that the next release should increment the "major" version to comply with SemVer (as go modules dictate). Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/distribution/distribution/v3/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.")
|
|
}
|
|
}
|