package dev.lions.unionflow.server.resource; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.*; import io.quarkus.test.junit.QuarkusTest; import io.restassured.http.ContentType; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @QuarkusTest class HealthResourceTest { @Test @DisplayName("GET /api/status retourne 200 avec status UP") void getStatus_returns200AndUp() { given() .when() .get("/api/status") .then() .statusCode(200) .contentType(ContentType.JSON) .body("status", equalTo("UP")) .body("service", equalTo("UnionFlow Server")) .body("version", equalTo("1.0.0")) .body("timestamp", notNullValue()) .body("message", equalTo("Serveur opérationnel")); } @Test @DisplayName("GET /api/status avec Accept inconnu retourne 200 (endpoint toujours accessible)") void getStatus_acceptHeaderDifferent_returns200() { given() .header("Accept", "application/json") .when() .get("/api/status") .then() .statusCode(200) .body("status", equalTo("UP")); } @Test @DisplayName("GET /api/status/inexistant retourne 404") void getStatusInexistant_returns404() { given() .when() .get("/api/status/inexistant") .then() .statusCode(404); } @Test @DisplayName("POST /api/status retourne 405 (méthode non autorisée)") void postStatus_returns405() { given() .contentType(ContentType.JSON) .body("{}") .when() .post("/api/status") .then() .statusCode(405); } }