boulder/test/integration/wfe_test.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()
}