diff --git a/ordinis-app/src/test/java/cloud/nstart/terravault/ordinis/app/e2e/WebhookE2ETest.java b/ordinis-app/src/test/java/cloud/nstart/terravault/ordinis/app/e2e/WebhookE2ETest.java index 73149b7..f0cc631 100644 --- a/ordinis-app/src/test/java/cloud/nstart/terravault/ordinis/app/e2e/WebhookE2ETest.java +++ b/ordinis-app/src/test/java/cloud/nstart/terravault/ordinis/app/e2e/WebhookE2ETest.java @@ -191,8 +191,13 @@ class WebhookE2ETest { // Стартуем ALT receiver который всегда 500 HttpServer failing = HttpServer.create(new InetSocketAddress("127.0.0.1", 0), 0); failing.createContext("/fail", exchange -> { - byte[] body = exchange.getRequestBody().readAllBytes(); // drain - assertThat(body.length).isGreaterThan(0); + // Просто drain body и возвращаем 500. Assertion внутри handler + // сломает response chain — клиент получит connection reset вместо + // 500, и тест не сматчит lastStatusCode == 500. + try { + exchange.getRequestBody().readAllBytes(); + } catch (Exception ignored) { + } exchange.sendResponseHeaders(500, -1); exchange.close(); }); @@ -224,8 +229,9 @@ class WebhookE2ETest { .contentType(MediaType.APPLICATION_JSON) .content(om.writeValueAsBytes(recBody))).andExpect(status().is2xxSuccessful()); - // Ждём что delivery с status=retrying появится (HTTP 500 → markFailed) - await().atMost(20, TimeUnit.SECONDS) + // Ждём что delivery с status=retrying появится (HTTP 500 → markFailed). + // Timeout 30s покрывает CI cold start + несколько schedule циклов. + await().atMost(30, TimeUnit.SECONDS) .pollInterval(Duration.ofMillis(300)) .until(() -> deliveryRepo.findBySubscriptionIdOrderByCreatedAtDesc( sub.getId(), org.springframework.data.domain.PageRequest.of(0, 10))