Проблема находится по адресу ordercontrollertest службы заказа. GET status = 404 as Authenticate/Login принадлежит службе Auth. /> Как это исправить?
Код: Выделить всё
JWTResponse response = restTemplate.postForObject("http://localhost:7777/authenticate/login", loginRequest, JWTResponse.class);
JWTResponse response = restTemplate.postForObject("http://AUTH-SERVICE:7777/authenticate/login", loginRequest, JWTResponse.class);
< /code>
Что мне делать? < /p>
Вот метод испытания. < /p>
@Test
@DisplayName("Place Order -- Success Scenario")
@WithMockUser(username = "User", authorities = { "ROLE_USER" })
void test_When_placeOrder_DoPayment_Success() throws Exception {
OrderRequest orderRequest = getMockOrderRequest();
String jwt = getJWTTokenForRoleUser();
MvcResult mvcResult
= mockMvc.perform(MockMvcRequestBuilders.post("/order/placeorder")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.header("Authorization", "Bearer " + jwt)
.content(objectMapper.writeValueAsString(orderRequest)))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String orderId = mvcResult.getResponse().getContentAsString();
Optional order = orderRepository.findById(Long.valueOf(orderId));
assertTrue(order.isPresent());
Order o = order.get();
assertEquals(Long.parseLong(orderId), o.getId());
assertEquals("PLACED", o.getOrderStatus());
assertEquals(orderRequest.getTotalAmount(), o.getAmount());
assertEquals(orderRequest.getQuantity(), o.getQuantity());
}
< /code>
Вот метод getjwttokenforroleuser, показанный ниже. < /p>
private String getJWTTokenForRoleUser() throws Exception {
var loginRequest = new LoginRequest("User","User");
// HERE IS THE PROBLEM
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/authenticate/login")
.contentType(MediaType.APPLICATION_JSON)
.content(asJsonString(loginRequest)))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String content = result.getResponse().getContentAsString();
var loggedUser = objectMapper.readValue(content, JWTResponse.class);
String jwt = jwtUtils.getUserNameFromJwtToken(loggedUser.getToken());
return jwt;
}
Код: Выделить всё
public String getUserNameFromJwtToken(String token) {
if(token.startsWith("Bearer")){
token = token.substring(7);
}
String username= Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody().getSubject();
return username;
}
, чтобы запустить приложение,
1) Запуск сервисного регистрации (сервер eureka)
2) Запуск конфигурации
3). />
Код: Выделить всё
docker run -d -p 9411:9411 openzipkin/zipkin
docker run -d --name redis -p 6379:6379 redis
5) Запустите другие службы
Подробнее здесь: https://stackoverflow.com/questions/747 ... another-mo