Search in sources :

Example 1 with ResponseHeader

use of com.ingenico.connect.gateway.sdk.java.ResponseHeader in project connect-sdk-java by Ingenico-ePayments.

the class PaymentsClientTest method testCreateNotFound.

/**
 * Tests that a 404 response with a non-JSON response will throw a {@link NotFoundException}.
 */
@Test
@SuppressWarnings("resource")
public void testCreateNotFound() {
    Client client = Factory.createClient(session);
    String responseBody = getResource("not_found.html");
    whenPost().thenReturn(new Response(404, responseBody, Arrays.asList(new ResponseHeader("content-type", "text/html"))));
    CreatePaymentRequest body = createRequest();
    try {
        client.merchant("merchantId").payments().create(body);
        Assert.fail("Expected NotFoundException");
    } catch (NotFoundException e) {
        Assert.assertNotNull(e.getCause());
        Assert.assertEquals(ResponseException.class, e.getCause().getClass());
        Assert.assertTrue(e.getCause().toString().contains(responseBody));
    }
}
Also used : Response(com.ingenico.connect.gateway.sdk.java.Response) CreatePaymentResponse(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse) ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) ResponseException(com.ingenico.connect.gateway.sdk.java.ResponseException) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) NotFoundException(com.ingenico.connect.gateway.sdk.java.NotFoundException) Client(com.ingenico.connect.gateway.sdk.java.Client) Test(org.junit.Test)

Example 2 with ResponseHeader

use of com.ingenico.connect.gateway.sdk.java.ResponseHeader in project connect-sdk-java by Ingenico-ePayments.

the class PaymentsClientTest method testCreateMethodNotAllowed.

/**
 * Tests that a 405 response with a non-JSON response will throw a {@link CommunicationException}.
 */
@Test
@SuppressWarnings("resource")
public void testCreateMethodNotAllowed() {
    Client client = Factory.createClient(session);
    String responseBody = getResource("method_not_allowed.html");
    whenPost().thenReturn(new Response(405, responseBody, Arrays.asList(new ResponseHeader("content-type", "text/html"))));
    CreatePaymentRequest body = createRequest();
    try {
        client.merchant("merchantId").payments().create(body);
        Assert.fail("Expected CommunicationException");
    } catch (CommunicationException e) {
        Assert.assertNotNull(e.getCause());
        Assert.assertEquals(ResponseException.class, e.getCause().getClass());
        Assert.assertTrue(e.getCause().toString().contains(responseBody));
    }
}
Also used : Response(com.ingenico.connect.gateway.sdk.java.Response) CreatePaymentResponse(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse) ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) CommunicationException(com.ingenico.connect.gateway.sdk.java.CommunicationException) ResponseException(com.ingenico.connect.gateway.sdk.java.ResponseException) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) Test(org.junit.Test)

Example 3 with ResponseHeader

use of com.ingenico.connect.gateway.sdk.java.ResponseHeader 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());
    }
}
Also used : Response(com.ingenico.connect.gateway.sdk.java.Response) CreatePaymentResponse(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse) ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) GlobalCollectException(com.ingenico.connect.gateway.sdk.java.GlobalCollectException) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) Test(org.junit.Test)

Example 4 with ResponseHeader

use of com.ingenico.connect.gateway.sdk.java.ResponseHeader in project connect-sdk-java by Ingenico-ePayments.

the class DefaultConnection method getHeaders.

protected List<ResponseHeader> getHeaders(HttpResponse httpResponse) {
    Header[] headers = httpResponse.getAllHeaders();
    List<ResponseHeader> result = new ArrayList<ResponseHeader>(headers.length);
    for (Header header : headers) {
        result.add(new ResponseHeader(header.getName(), header.getValue()));
    }
    return result;
}
Also used : ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) Header(org.apache.http.Header) ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) RequestHeader(com.ingenico.connect.gateway.sdk.java.RequestHeader) BasicHeader(org.apache.http.message.BasicHeader) ArrayList(java.util.ArrayList)

Example 5 with ResponseHeader

use of com.ingenico.connect.gateway.sdk.java.ResponseHeader 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;
    }
}
Also used : ResponseHeader(com.ingenico.connect.gateway.sdk.java.ResponseHeader) HttpEntity(org.apache.http.HttpEntity) BufferedHttpEntity(org.apache.http.entity.BufferedHttpEntity) CommunicationException(com.ingenico.connect.gateway.sdk.java.CommunicationException) BasicHttpContext(org.apache.http.protocol.BasicHttpContext) BasicHttpContext(org.apache.http.protocol.BasicHttpContext) HttpContext(org.apache.http.protocol.HttpContext) IOException(java.io.IOException) ClientProtocolException(org.apache.http.client.ClientProtocolException) Response(com.ingenico.connect.gateway.sdk.java.Response) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) HttpResponse(org.apache.http.HttpResponse) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse)

Aggregations

ResponseHeader (com.ingenico.connect.gateway.sdk.java.ResponseHeader)5 Response (com.ingenico.connect.gateway.sdk.java.Response)4 Client (com.ingenico.connect.gateway.sdk.java.Client)3 CreatePaymentRequest (com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest)3 CreatePaymentResponse (com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse)3 Test (org.junit.Test)3 CommunicationException (com.ingenico.connect.gateway.sdk.java.CommunicationException)2 ResponseException (com.ingenico.connect.gateway.sdk.java.ResponseException)2 GlobalCollectException (com.ingenico.connect.gateway.sdk.java.GlobalCollectException)1 NotFoundException (com.ingenico.connect.gateway.sdk.java.NotFoundException)1 RequestHeader (com.ingenico.connect.gateway.sdk.java.RequestHeader)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Header (org.apache.http.Header)1 HttpEntity (org.apache.http.HttpEntity)1 HttpResponse (org.apache.http.HttpResponse)1 ClientProtocolException (org.apache.http.client.ClientProtocolException)1 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)1 BufferedHttpEntity (org.apache.http.entity.BufferedHttpEntity)1 BasicHeader (org.apache.http.message.BasicHeader)1