acme: implement authorization revocation
As with other methods of the Client, this is an implementation
for the v2 version of the spec.
Change-Id: I7fa7e0b700212992125de32524801048b56ac5d0
Reviewed-on: https://go-review.googlesource.com/28593
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/acme/acme_test.go b/acme/acme_test.go
index c85a689..10e72c4 100644
--- a/acme/acme_test.go
+++ b/acme/acme_test.go
@@ -552,6 +552,40 @@
}
}
+func TestRevokeAuthorization(t *testing.T) {
+ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ if r.Method == "HEAD" {
+ w.Header().Set("replay-nonce", "nonce")
+ return
+ }
+ switch r.URL.Path {
+ case "/1":
+ var req struct {
+ Resource string
+ Delete bool
+ }
+ decodeJWSRequest(t, &req, r)
+ if req.Resource != "authz" {
+ t.Errorf("req.Resource = %q; want authz", req.Resource)
+ }
+ if !req.Delete {
+ t.Errorf("req.Delete is false")
+ }
+ case "/2":
+ w.WriteHeader(http.StatusInternalServerError)
+ }
+ }))
+ defer ts.Close()
+ client := &Client{Key: testKey}
+ ctx := context.Background()
+ if err := client.RevokeAuthorization(ctx, ts.URL+"/1"); err != nil {
+ t.Errorf("err = %v", err)
+ }
+ if client.RevokeAuthorization(ctx, ts.URL+"/2") == nil {
+ t.Error("nil error")
+ }
+}
+
func TestPollChallenge(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {