Java Code Examples for org.springframework.http.ResponseEntity#getHeaders()

The following examples show how to use org.springframework.http.ResponseEntity#getHeaders() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
@Test
public void testExceedingCapacity() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceB", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceB_127.0.0.1";
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());

    for (int i = 0; i < 2; i++) {
        response = this.restTemplate.getForEntity("/serviceB", String.class);
    }

    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());
    assertNotEquals(SpringDataApplication.ServiceController.RESPONSE_BODY, response.getBody());

    await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
        final ResponseEntity<String> responseAfterReset = this.restTemplate
            .getForEntity("/serviceB", String.class);
        final HttpHeaders headersAfterReset = responseAfterReset.getHeaders();
        assertHeaders(headersAfterReset, key, false, false);
        assertEquals(OK, responseAfterReset.getStatusCode());
    });
}
 
Example 2
@Test
public void testExceedingCapacity() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceB", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceB_127.0.0.1";
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());

    for (int i = 0; i < 2; i++) {
        response = this.restTemplate.getForEntity("/serviceB", String.class);
    }

    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());
    assertNotEquals(ConsulApplication.ServiceController.RESPONSE_BODY, response.getBody());

    await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
        final ResponseEntity<String> responseAfterReset = this.restTemplate
            .getForEntity("/serviceB", String.class);
        final HttpHeaders headersAfterReset = responseAfterReset.getHeaders();
        assertHeaders(headersAfterReset, key, false, false);
        assertEquals(OK, responseAfterReset.getStatusCode());
    });
}
 
Example 3
@Test
public void testExceedingCapacity() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceB", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceB_127.0.0.1";
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());

    for (int i = 0; i < 2; i++) {
        response = this.restTemplate.getForEntity("/serviceB", String.class);
    }

    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());
    assertNotEquals(RedisApplication.ServiceController.RESPONSE_BODY, response.getBody());

    await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
        final ResponseEntity<String> responseAfterReset = this.restTemplate
            .getForEntity("/serviceB", String.class);
        final HttpHeaders headersAfterReset = responseAfterReset.getHeaders();
        assertHeaders(headersAfterReset, key, false, false);
        assertEquals(OK, responseAfterReset.getStatusCode());
    });
}
 
Example 4
@Test
public void testMultipleUrls() {
    String randomPath = UUID.randomUUID().toString();

    for (int i = 0; i < 12; i++) {

        if (i % 2 == 0) {
            randomPath = UUID.randomUUID().toString();
        }

        ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceD/" + randomPath, String.class);
        HttpHeaders headers = response.getHeaders();
        assertHeaders(headers, "rate-limit-application_serviceD_serviceD_" + randomPath, false, false);
        assertEquals(OK, response.getStatusCode());
    }
}
 
Example 5
@Test
public void testNoRateLimit() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceC", String.class);
    HttpHeaders headers = response.getHeaders();
    assertHeaders(headers, "rate-limit-application_serviceC", true, false);
    assertEquals(OK, response.getStatusCode());
}
 
Example 6
@Test
public void testUsingBreakOnMatchSpecificCase() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceF", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceF_127.0.0.1_127.0.0.1";
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());

    response = this.restTemplate.getForEntity("/serviceF", String.class);
    headers = response.getHeaders();
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());
}
 
Example 7
Source Project: tutorials   File: ResponseHeaderLiveTest.java    License: MIT License 5 votes vote down vote up
@Test
public void whenFilterWithExtraHeaderRequest_thenObtainResponseWithCorrectHeaders() {
    final String requestUrl = "/extra-header";
    ResponseEntity<String> response = template.getForEntity(FILTER_BASE_URL + requestUrl, String.class);
    HttpHeaders responseHeaders = response.getHeaders();

    assertThat(responseHeaders).isNotEmpty();
    assertThat(responseHeaders).containsEntry(SERVICE_FILTER_RESPONSE_HEADER, Arrays.asList("Value-Filter"));
    assertThat(responseHeaders).containsEntry(SERVICE_SINGLE_RESPONSE_HEADER, Arrays.asList("Value-ExtraHeader"));
}
 
Example 8
Source Project: cubeai   File: ExceptionTranslator.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * Post-process Problem payload to add the message key for front-end if needed
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null || entity.getBody() == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with("path", request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with("violations", ((ConstraintViolationProblem) problem).getViolations())
            .with("message", ErrorConstants.ERR_VALIDATION);
        return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey("message") && problem.getStatus() != null) {
            builder.with("message", "error.http." + problem.getStatus().getStatusCode());
        }
        return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
    }
}
 
Example 9
/**
 * Posts data to the url given.
 *
    * @param url the URL the POST request is sent
 * @param postData list of input data for the POST requests
 * @param numberOfTimes the number of POST requests
 * @param cookies the cookies to set on the request, optional - null is a valid value
 * @return the a list of HTTP Responses
 * @throws IOException, InterruptedException 
 */
public List<HttpResponse> post(String url, List<HttpPostData> postData, int numberOfTimes, List<HttpCookie> cookies) throws IOException, InterruptedException{
	Assert.hasLength(url, "URL cannot be null");
	Assert.notEmpty(postData,"POST request cannot have empty post data");
	Assert.isTrue(numberOfTimes > 0, "numberOfTimes cannot be 0");

	List<HttpResponse> responses = new ArrayList<HttpResponse>(numberOfTimes);

       RestTemplate restTemplate = new RestTemplate();
       HttpHeaders headers = new HttpHeaders();

       for (HttpCookie cookie : cookies) {
           headers.add("Cookie", cookie.getKey()+"="+cookie.getValue());
       }


       for (int i = 0; i < numberOfTimes; i++) {
           HttpEntity<String> entity = new HttpEntity<String>(addParameters(postData), headers);

           ResponseEntity<String> response = restTemplate.exchange(url,
                   HttpMethod.POST, entity, String.class);

           HttpResponse httpResponse = new HttpResponse(response.getStatusCode(),response.getBody(),response.getHeaders());
           responses.add(httpResponse);
       }


	return responses;
}
 
Example 10
Source Project: tutorials   File: GreetingControllerUnitTest.java    License: MIT License 5 votes vote down vote up
@Test
public void whenRequestExceedingCapacity_thenReturnTooManyRequestsResponse() throws InterruptedException {
    ResponseEntity<String> response = this.restTemplate.getForEntity(ADVANCED_GREETING, String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceAdvanced_127.0.0.1";
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());

    for (int i = 0; i < 2; i++) {
        response = this.restTemplate.getForEntity(ADVANCED_GREETING, String.class);
    }

    headers = response.getHeaders();
    String limit = headers.getFirst(HEADER_LIMIT + key);
    String remaining = headers.getFirst(HEADER_REMAINING + key);
    String reset = headers.getFirst(HEADER_RESET + key);

    assertEquals(limit, "1");
    assertEquals(remaining, "0");
    assertNotEquals(reset, "2000");

    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());

    TimeUnit.SECONDS.sleep(2);

    response = this.restTemplate.getForEntity(ADVANCED_GREETING, String.class);
    headers = response.getHeaders();
    assertHeaders(headers, key, false, false);
    assertEquals(OK, response.getStatusCode());
}
 
Example 11
Source Project: tutorials   File: ExceptionTranslator.java    License: MIT License 5 votes vote down vote up
/**
 * Post-process the Problem payload to add the message key for the front-end if needed
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with("path", request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with("violations", ((ConstraintViolationProblem) problem).getViolations())
            .with("message", ErrorConstants.ERR_VALIDATION);
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey("message") && problem.getStatus() != null) {
            builder.with("message", "error.http." + problem.getStatus().getStatusCode());
        }
    }
    return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
}
 
Example 12
@Test
public void testExceedingQuotaCapacityRequest() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceE", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceE_127.0.0.1";
    assertHeaders(headers, key, false, true);
    assertEquals(OK, response.getStatusCode());

    response = this.restTemplate.getForEntity("/serviceE", String.class);
    headers = response.getHeaders();
    assertHeaders(headers, key, false, true);
    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());
}
 
Example 13
Source Project: cubeai   File: ExceptionTranslator.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * Post-process Problem payload to add the message key for front-end if needed
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null || entity.getBody() == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with("path", request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with("violations", ((ConstraintViolationProblem) problem).getViolations())
            .with("message", ErrorConstants.ERR_VALIDATION);
        return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey("message") && problem.getStatus() != null) {
            builder.with("message", "error.http." + problem.getStatus().getStatusCode());
        }
        return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
    }
}
 
Example 14
@Test
public void testExceedingQuotaCapacityRequest() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceE", String.class);
    HttpHeaders headers = response.getHeaders();
    String key = "rate-limit-application_serviceE_127.0.0.1";
    assertHeaders(headers, key, false, true);
    assertEquals(OK, response.getStatusCode());

    response = this.restTemplate.getForEntity("/serviceE", String.class);
    headers = response.getHeaders();
    assertHeaders(headers, key, false, true);
    assertEquals(TOO_MANY_REQUESTS, response.getStatusCode());
}
 
Example 15
/**
 * Post-process the Problem payload to add the message key for the front-end if needed
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with("path", request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with("violations", ((ConstraintViolationProblem) problem).getViolations())
            .with("message", ErrorConstants.ERR_VALIDATION);
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey("message") && problem.getStatus() != null) {
            builder.with("message", "error.http." + problem.getStatus().getStatusCode());
        }
    }
    return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
}
 
Example 16
@Test
public void testNotExceedingCapacityRequest() {
    ResponseEntity<String> response = this.restTemplate.getForEntity("/serviceA", String.class);
    HttpHeaders headers = response.getHeaders();
    assertHeaders(headers, "rate-limit-application_serviceA_127.0.0.1", false, false);
    assertEquals(OK, response.getStatusCode());
}
 
Example 17
/**
 * Post-process the Problem payload to add the message key for the front-end if needed.
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with(PATH_KEY, request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with(VIOLATIONS_KEY, ((ConstraintViolationProblem) problem).getViolations())
            .with(MESSAGE_KEY, ErrorConstants.ERR_VALIDATION);
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey(MESSAGE_KEY) && problem.getStatus() != null) {
            builder.with(MESSAGE_KEY, "error.http." + problem.getStatus().getStatusCode());
        }
    }
    return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
}
 
Example 18
/**
 * Post-process the Problem payload to add the message key for the front-end if needed
 */
@Override
public ResponseEntity<Problem> process(@Nullable ResponseEntity<Problem> entity, NativeWebRequest request) {
    if (entity == null) {
        return entity;
    }
    Problem problem = entity.getBody();
    if (!(problem instanceof ConstraintViolationProblem || problem instanceof DefaultProblem)) {
        return entity;
    }
    ProblemBuilder builder = Problem.builder()
        .withType(Problem.DEFAULT_TYPE.equals(problem.getType()) ? ErrorConstants.DEFAULT_TYPE : problem.getType())
        .withStatus(problem.getStatus())
        .withTitle(problem.getTitle())
        .with("path", request.getNativeRequest(HttpServletRequest.class).getRequestURI());

    if (problem instanceof ConstraintViolationProblem) {
        builder
            .with("violations", ((ConstraintViolationProblem) problem).getViolations())
            .with("message", ErrorConstants.ERR_VALIDATION);
    } else {
        builder
            .withCause(((DefaultProblem) problem).getCause())
            .withDetail(problem.getDetail())
            .withInstance(problem.getInstance());
        problem.getParameters().forEach(builder::with);
        if (!problem.getParameters().containsKey("message") && problem.getStatus() != null) {
            builder.with("message", "error.http." + problem.getStatus().getStatusCode());
        }
    }
    return new ResponseEntity<>(builder.build(), entity.getHeaders(), entity.getStatusCode());
}
 
Example 19
Source Project: tutorials   File: ResponseHeaderLiveTest.java    License: MIT License 5 votes vote down vote up
@Test
public void whenResponseEntityConstructorAndMultipleHeadersRequest_thenObtainResponseWithCorrectHeaders() {
    final String requestUrl = "/response-entity-contructor-multiple-headers";
    ResponseEntity<String> response = template.getForEntity(SINGLE_BASE_URL + requestUrl, String.class);
    HttpHeaders responseHeaders = response.getHeaders();

    assertThat(responseHeaders).isNotEmpty();
    assertThat(responseHeaders).containsEntry(SERVICE_SINGLE_RESPONSE_HEADER, Arrays.asList("Value-ResponseEntityConstructorAndHeaders"));
    assertThat(responseHeaders).containsEntry("Accept", Arrays.asList(MediaType.APPLICATION_JSON.toString()));
}
 
Example 20
public RestTemplateResponse(ResponseEntity<String> response) {
    this.body = response.getBody();
    this.status = response.getStatusCodeValue();
    this.message = response.getStatusCode().getReasonPhrase();
    this.headers = response.getHeaders();
}