package com.ewolff.microservice.bonus; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertThat; import java.util.Arrays; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.client.RestTemplate; @ExtendWith(SpringExtension.class) @SpringBootTest(classes = BonusTestApp.class, webEnvironment = WebEnvironment.DEFINED_PORT) @ActiveProfiles("test") public class BonusWebIntegrationTest { @LocalServerPort private int serverPort; private RestTemplate restTemplate = new RestTemplate(); @Test public void isHTMLReturned() { String body = getForMediaType(String.class, MediaType.TEXT_HTML, bonusURL()); assertThat(body, containsString("<div")); } private String bonusURL() { return "http://localhost:" + serverPort; } private <T> T getForMediaType(Class<T> value, MediaType mediaType, String url) { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(mediaType)); HttpEntity<String> entity = new HttpEntity<String>("parameters", headers); ResponseEntity<T> resultEntity = restTemplate.exchange(url, HttpMethod.GET, entity, value); return resultEntity.getBody(); } }