diff --git a/wfe/web-front-end.go b/wfe/web-front-end.go index eab6f3016..798e3e8f5 100644 --- a/wfe/web-front-end.go +++ b/wfe/web-front-end.go @@ -911,6 +911,10 @@ func (wfe *WebFrontEndImpl) Registration(response http.ResponseWriter, request * return } response.Header().Set("Content-Type", "application/json") + response.Header().Add("Link", link(wfe.NewAuthz, "next")) + if len(wfe.SubscriberAgreementURL) > 0 { + response.Header().Add("Link", link(wfe.SubscriberAgreementURL, "terms-of-service")) + } response.WriteHeader(http.StatusAccepted) response.Write(jsonReply) } diff --git a/wfe/web-front-end_test.go b/wfe/web-front-end_test.go index 98027abee..931094a30 100644 --- a/wfe/web-front-end_test.go +++ b/wfe/web-front-end_test.go @@ -799,6 +799,10 @@ func TestNewRegistration(t *testing.T) { test.AssertEquals( t, responseWriter.Header().Get("Location"), "/acme/reg/0") + links := responseWriter.Header()["Link"] + test.AssertEquals(t, contains(links, ";rel=\"next\""), true) + test.AssertEquals(t, contains(links, "<"+agreementURL+">;rel=\"terms-of-service\""), true) + test.AssertEquals( t, responseWriter.Header().Get("Link"), ";rel=\"next\"") @@ -1019,6 +1023,15 @@ func TestAuthorization(t *testing.T) { test.AssertNotError(t, err, "Couldn't unmarshal returned authorization object") } +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} + func TestRegistration(t *testing.T) { wfe := setupWFE(t) mux, err := wfe.Handler() @@ -1121,6 +1134,10 @@ func TestRegistration(t *testing.T) { URL: path, }) test.AssertNotContains(t, responseWriter.Body.String(), "urn:acme:error") + links := responseWriter.Header()["Link"] + test.AssertEquals(t, contains(links, ";rel=\"next\""), true) + test.AssertEquals(t, contains(links, "<"+agreementURL+">;rel=\"terms-of-service\""), true) + responseWriter.Body.Reset() }