Spring Boot Microservice - тест контроллера JUNIT - не может вызывать URL -адрес другого модуля из одного модуля (StatusJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot Microservice - тест контроллера JUNIT - не может вызывать URL -адрес другого модуля из одного модуля (Status

Сообщение Anonymous »

У меня есть проблема с проведением любого теста службы, касающейся пружинной загрузочной микросервиса.
Проблема находится по адресу 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;
}
Вот getusernamefromjwttoken jwtutils в Service Заказ

Код: Выделить всё

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;
}
Вот repo: link
, чтобы запустить приложение,
1) Запуск сервисного регистрации (сервер eureka)
2) Запуск конфигурации
3). />

Код: Выделить всё

  docker run -d -p 9411:9411 openzipkin/zipkin
docker run -d --name redis -p 6379:6379 redis
4) запустить Api Gateway
5) Запустите другие службы

Подробнее здесь: https://stackoverflow.com/questions/747 ... another-mo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»