use of com.ingenico.connect.gateway.sdk.java.Response in project connect-sdk-java by Ingenico-ePayments.
the class PaymentsClientTest method testCreateInternalServerErrorWithoutBody.
/**
* Tests that a 500 response with a JSON response with no body will throw a {@link GlobalCollectException} and not a {@link NullPointerException}.
*/
@Test
@SuppressWarnings("resource")
public void testCreateInternalServerErrorWithoutBody() {
Client client = Factory.createClient(session);
String responseBody = null;
whenPost().thenReturn(new Response(500, responseBody, Arrays.asList(new ResponseHeader("content-type", "text/html"))));
CreatePaymentRequest body = createRequest();
try {
client.merchant("merchantId").payments().create(body);
Assert.fail("Expected GlobalCollectException");
} catch (GlobalCollectException e) {
Assert.assertEquals(responseBody, e.getResponseBody());
Assert.assertNull(e.getErrorId());
Assert.assertEquals(0, e.getErrors().size());
}
}
use of com.ingenico.connect.gateway.sdk.java.Response in project connect-sdk-java by Ingenico-ePayments.
the class PaymentsClientTest method testCreateReferenceError.
/**
* Tests that a 409 failure response with a duplicate request code but without an idempotence key will throw a
* {@link ReferenceException}.
*/
@Test
@SuppressWarnings("resource")
public void testCreateReferenceError() {
Client client = Factory.createClient(session);
String responseBody = getResource("duplicate_request.json");
whenPost().thenReturn(new Response(409, responseBody, null));
CreatePaymentRequest body = createRequest();
try {
client.merchant("merchantId").payments().create(body);
Assert.fail("Expected ApiException");
} catch (ReferenceException e) {
Assert.assertTrue(e.toString().contains(responseBody));
}
}
use of com.ingenico.connect.gateway.sdk.java.Response in project connect-sdk-java by Ingenico-ePayments.
the class PaymentsClientTest method testCreateInvalidAuthorization.
/**
* Tests that a 401 failure response without a payment result will throw a {@link ApiException}.
*/
@Test
@SuppressWarnings("resource")
public void testCreateInvalidAuthorization() {
Client client = Factory.createClient(session);
String responseBody = getResource("invalid_authorization.json");
whenPost().thenReturn(new Response(401, responseBody, null));
CreatePaymentRequest body = createRequest();
try {
client.merchant("merchantId").payments().create(body);
Assert.fail("Expected ApiException");
} catch (ApiException e) {
Assert.assertTrue(e.toString().contains(responseBody));
}
}
use of com.ingenico.connect.gateway.sdk.java.Response in project connect-sdk-java by Ingenico-ePayments.
the class PaymentsClientTest method testCreateIdempotenceError.
/**
* Tests that a 409 failure response with a duplicate request code and an idempotence key will throw an {@link IdempotenceException}.
*/
@Test
@SuppressWarnings("resource")
public void testCreateIdempotenceError() {
Client client = Factory.createClient(session);
String responseBody = getResource("duplicate_request.json");
whenPost().thenReturn(new Response(409, responseBody, null));
CreatePaymentRequest body = createRequest();
CallContext context = new CallContext().withIdempotenceKey("key");
try {
client.merchant("merchantId").payments().create(body, context);
Assert.fail("Expected ApiException");
} catch (IdempotenceException e) {
Assert.assertTrue(e.toString().contains(responseBody));
Assert.assertEquals(context.getIdempotenceKey(), e.getIdempotenceKey());
}
}
use of com.ingenico.connect.gateway.sdk.java.Response in project connect-sdk-java by Ingenico-ePayments.
the class DefaultConnection method executeRequest.
@SuppressWarnings("resource")
protected Response executeRequest(HttpUriRequest request) {
final String requestId = UUID.randomUUID().toString();
final long startTime = System.currentTimeMillis();
HttpContext context = new BasicHttpContext();
context.setAttribute(REQUEST_ID_ATTRIBUTE, requestId);
context.setAttribute(START_TIMME_ATTRIBUTE, startTime);
try {
CloseableHttpResponse httpResponse = httpClient.execute(request, context);
HttpEntity entity = httpResponse.getEntity();
try {
int statusCode = httpResponse.getStatusLine().getStatusCode();
String body = entity == null ? null : EntityUtils.toString(entity, CHARSET);
List<ResponseHeader> headers = getHeaders(httpResponse);
return new Response(statusCode, body, headers);
} finally {
/*
* Ensure that the entity content is fully consumed and the
* content stream, if exists, is closed so the connection can be
* reused. Do not close the httpResponse because that will
* prevent the connection from being reused.
*/
EntityUtils.consume(entity);
}
} catch (ClientProtocolException e) {
logError(requestId, e, startTime, communicatorLogger);
throw new CommunicationException(e);
} catch (IOException e) {
logError(requestId, e, startTime, communicatorLogger);
throw new CommunicationException(e);
} catch (RuntimeException e) {
logError(requestId, e, startTime, communicatorLogger);
throw e;
}
}
Aggregations