Added tests
This commit is contained in:
parent
d91f4b8c44
commit
a5e4924eb7
|
@ -0,0 +1,62 @@
|
|||
package de.twomartens.templateservice;
|
||||
|
||||
import de.twomartens.templateservice.entity.Greeting;
|
||||
import de.twomartens.templateservice.interceptors.RequestTypeInterceptor;
|
||||
import de.twomartens.templateservice.interceptors.TraceIdInterceptor;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.web.server.LocalServerPort;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
|
||||
|
||||
@SpringJUnitConfig
|
||||
@SpringBootTest(webEnvironment = RANDOM_PORT)
|
||||
class TemplateServiceRestTests {
|
||||
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
@LocalServerPort
|
||||
int randomServerPort;
|
||||
|
||||
@Autowired
|
||||
private RequestTypeInterceptor requestTypeInterceptor;
|
||||
|
||||
@Autowired
|
||||
private TraceIdInterceptor traceIdInterceptor;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
traceIdInterceptor.createNewTraceId();
|
||||
requestTypeInterceptor.markAsIntegrationTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testRestService() {
|
||||
ResponseEntity<Greeting> result = restTemplate.getForEntity(getEndpoint(), Greeting.class);
|
||||
assertThat(result.getStatusCode().is2xxSuccessful()).isTrue();
|
||||
assertThat(result.getBody()).isNotNull();
|
||||
assertThat(result.getBody().getMessage()).isEqualTo("Hello RestCheck!");
|
||||
}
|
||||
|
||||
/*
|
||||
* This method is so complicated because it uses the local-grpc-server configuration for grpc to create
|
||||
* a correct link for the rest endpoints in the cloud
|
||||
*/
|
||||
private String getEndpoint() {
|
||||
String hostNameForGrpcServer = "127.0.0.1";
|
||||
int port = randomServerPort;
|
||||
String protocol = "http";
|
||||
|
||||
return String.format("%s://%s:%d/greeting?name=RestCheck",
|
||||
protocol,
|
||||
hostNameForGrpcServer,
|
||||
port);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package de.twomartens.templateservice.control;
|
||||
|
||||
import de.twomartens.templateservice.service.GreetingService;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.BDDMockito;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
|
||||
|
||||
@WebMvcTest(GreetingController.class)
|
||||
class GreetingControllerTests {
|
||||
|
||||
@Autowired
|
||||
private MockMvc mvc;
|
||||
|
||||
@MockBean
|
||||
private GreetingService service;
|
||||
|
||||
@Test
|
||||
void testGreetingRest() throws Exception {
|
||||
BDDMockito.given(service.createGreeting("Template"))
|
||||
.willReturn("Hello Template!");
|
||||
|
||||
mvc.perform(MockMvcRequestBuilders.get("/greeting")
|
||||
.param("name", "Template")
|
||||
.contentType(MediaType.APPLICATION_JSON))
|
||||
.andExpect(MockMvcResultMatchers.status().isOk())
|
||||
.andExpect(MockMvcResultMatchers.jsonPath("$", Matchers.aMapWithSize(1)))
|
||||
.andExpect(MockMvcResultMatchers.jsonPath("$.message", Matchers.is("Hello Template!")))
|
||||
.andReturn();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package de.twomartens.templateservice.service;
|
||||
|
||||
import de.twomartens.templateservice.configs.TemplateServiceProperties;
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class GreetingServiceTest {
|
||||
|
||||
private GreetingService service;
|
||||
|
||||
@Mock
|
||||
private TemplateServiceProperties properties;
|
||||
|
||||
@Mock
|
||||
private TemplateServiceProperties.Template template;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
given(template.getGreeting()).willReturn("Hello %s");
|
||||
given(properties.getTemplate()).willReturn(template);
|
||||
service = new GreetingService(new SimpleMeterRegistry(), properties);
|
||||
}
|
||||
|
||||
@Test
|
||||
void createGreeting() {
|
||||
String result = service.createGreeting("Test");
|
||||
Assertions.assertThat(result).isEqualTo("Hello Test");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue