53 lines
1.9 KiB
Go
53 lines
1.9 KiB
Go
//go:build integration
|
|
|
|
package integration
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/letsencrypt/boulder/test"
|
|
)
|
|
|
|
// TestWFECORS is a small integration test that checks that the
|
|
// Access-Control-Allow-Origin header is returned for a GET request to the
|
|
// directory endpoint that has an Origin request header of "*".
|
|
func TestWFECORS(t *testing.T) {
|
|
// Construct a GET request with an Origin header to sollicit an
|
|
// Access-Control-Allow-Origin response header.
|
|
getReq, _ := http.NewRequest("GET", "http://boulder.service.consul:4001/directory", nil)
|
|
getReq.Header.Set("Origin", "*")
|
|
|
|
// Performing the GET should return status 200.
|
|
client := &http.Client{}
|
|
resp, err := client.Do(getReq)
|
|
test.AssertNotError(t, err, "GET directory")
|
|
test.AssertEquals(t, resp.StatusCode, http.StatusOK)
|
|
|
|
// We expect that the response has the correct Access-Control-Allow-Origin
|
|
// header.
|
|
corsAllowOrigin := resp.Header.Get("Access-Control-Allow-Origin")
|
|
test.AssertEquals(t, corsAllowOrigin, "*")
|
|
}
|
|
|
|
// TestWFEHTTPMetrics verifies that the measured_http metrics we collect
|
|
// for boulder-wfe and boulder-wfe2 are being properly collected. In order
|
|
// to initialize the prometheus metrics we make a call to the /directory
|
|
// endpoint before checking the /metrics endpoint.
|
|
func TestWFEHTTPMetrics(t *testing.T) {
|
|
// Check boulder-wfe2
|
|
resp, err := http.Get("http://boulder.service.consul:4001/directory")
|
|
test.AssertNotError(t, err, "GET boulder-wfe2 directory")
|
|
test.AssertEquals(t, resp.StatusCode, http.StatusOK)
|
|
resp.Body.Close()
|
|
|
|
resp, err = http.Get("http://boulder.service.consul:8013/metrics")
|
|
test.AssertNotError(t, err, "GET boulder-wfe2 metrics")
|
|
test.AssertEquals(t, resp.StatusCode, http.StatusOK)
|
|
body, err := io.ReadAll(resp.Body)
|
|
test.AssertNotError(t, err, "Reading boulder-wfe2 metrics response")
|
|
test.AssertContains(t, string(body), `response_time_count{code="200",endpoint="/directory",method="GET"}`)
|
|
resp.Body.Close()
|
|
}
|