From 2c2075d2f07d53b0721485304f5e912147e68a3e Mon Sep 17 00:00:00 2001 From: Romain Fliedel Date: Wed, 22 Jul 2015 20:15:21 +0200 Subject: [PATCH 1/2] Add missing link headers for registration resource update. --- wfe/web-front-end.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wfe/web-front-end.go b/wfe/web-front-end.go index e3b4a3189..aa36837cf 100644 --- a/wfe/web-front-end.go +++ b/wfe/web-front-end.go @@ -863,6 +863,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) } From 7a3c061576f89ccbf9600a7787d801ea13ffc2af Mon Sep 17 00:00:00 2001 From: Romain Fliedel Date: Thu, 23 Jul 2015 18:13:41 +0200 Subject: [PATCH 2/2] Add new test to ensure Link headers are correctly set in Registration/NewRegistration reply. --- wfe/web-front-end_test.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/wfe/web-front-end_test.go b/wfe/web-front-end_test.go index 0220fadf1..d6b4b34a0 100644 --- a/wfe/web-front-end_test.go +++ b/wfe/web-front-end_test.go @@ -378,7 +378,7 @@ func TestHandleFunc(t *testing.T) { {[]string{"GET", "POST"}, "POST", true}, {[]string{"GET"}, "", false}, {[]string{"GET"}, "POST", false}, - {[]string{"GET"}, "OPTIONS", false}, // TODO, #469 + {[]string{"GET"}, "OPTIONS", false}, // TODO, #469 {[]string{"GET"}, "MAKE-COFFEE", false}, // 405, or 418? } { runWrappedHandler(&http.Request{Method: c.reqMethod}, c.allowed...) @@ -767,6 +767,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\"") @@ -986,6 +990,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 := wfe.Handler() @@ -1087,6 +1100,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() }