From c623d72426f58770cffc30fe4005c0ef36d5f98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Mon, 1 May 2017 14:21:24 +0200 Subject: [PATCH] Order returns an error document --- .../src/main/java/org/shredzone/acme4j/Order.java | 11 +++++++++++ .../src/test/java/org/shredzone/acme4j/OrderTest.java | 4 ++++ .../src/test/resources/json/updateOrderResponse.json | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Order.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Order.java index 1c3534ba..e7d5964c 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Order.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Order.java @@ -39,6 +39,7 @@ public class Order extends AcmeResource { private byte[] csr; private Instant notBefore; private Instant notAfter; + private Problem error; private List authorizations; private Certificate certificate; private boolean loaded = false; @@ -69,6 +70,14 @@ public class Order extends AcmeResource { return status; } + /** + * Returns a {@link Problem} document if the order failed. + */ + public Problem getError() { + load(); + return error; + } + /** * Gets the expiry date of the authorization, if set by the server. */ @@ -163,6 +172,8 @@ public class Order extends AcmeResource { URL certUrl = json.get("certificate").asURL(); certificate = certUrl != null ? Certificate.bind(getSession(), certUrl) : null; + this.error = json.get("error").asProblem(); + this.authorizations = json.get("authorizations").asArray().stream() .map(JSON.Value::asURL) .collect(toList()); diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/OrderTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/OrderTest.java index 63465dd1..0abf4a78 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/OrderTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/OrderTest.java @@ -75,6 +75,10 @@ public class OrderTest { assertThat(order.getCertificate().getLocation(), is(url("https://example.com/acme/cert/1234"))); assertThat(order.getCsr(), is(csr)); + assertThat(order.getError(), is(notNullValue())); + assertThat(order.getError().getType(), is("urn:ietf:params:acme:error:connection")); + assertThat(order.getError().getDetail(), is("connection refused")); + List auths = order.getAuthorizations(); assertThat(auths.size(), is(2)); assertThat(auths.stream().map(Authorization::getLocation)::iterator, diff --git a/acme4j-client/src/test/resources/json/updateOrderResponse.json b/acme4j-client/src/test/resources/json/updateOrderResponse.json index 5718f002..de6a8dca 100644 --- a/acme4j-client/src/test/resources/json/updateOrderResponse.json +++ b/acme4j-client/src/test/resources/json/updateOrderResponse.json @@ -8,5 +8,9 @@ "https://example.com/acme/authz/1234", "https://example.com/acme/authz/2345" ], - "certificate": "https://example.com/acme/cert/1234" + "certificate": "https://example.com/acme/cert/1234", + "error": { + "type": "urn:ietf:params:acme:error:connection", + "detail": "connection refused" + } }