feat(version): exposer GET /api/v1/version public sans authentification
CI — Tests & Docker Build / Tests (push) Failing after 5s
CI — Tests & Docker Build / Build & push image Docker (push) Has been skipped

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 10:07:14 +02:00
parent 647f10ff8a
commit e73ecfd379
5 changed files with 72 additions and 11 deletions
+17 -11
View File
@@ -11,22 +11,28 @@ jobs:
test:
name: Tests
runs-on: ubuntu-latest
container:
image: eclipse-temurin:25-jdk
services:
postgres:
image: postgres:16
env:
POSTGRES_DB: olhar_test
POSTGRES_USER: olhar
POSTGRES_PASSWORD: olhar
env:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/olhar_test
SPRING_DATASOURCE_USERNAME: olhar
SPRING_DATASOURCE_PASSWORD: olhar
SPRING_DATASOURCE_DRIVER_CLASS_NAME: org.postgresql.Driver
SECURITY_JWT_SECRET: test-secret-key-for-ci-testing-only-must-be-long-enough
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build image de test
run: docker build -f Dockerfile.test -t olhar-api-test:ci .
- name: Lancer les tests
run: |
docker run --rm \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DOCKER_HOST=unix:///var/run/docker.sock \
-e TESTCONTAINERS_RYUK_DISABLED=true \
olhar-api-test:ci \
./gradlew test --no-daemon
run: ./gradlew test --no-daemon
build-and-push:
name: Build & push image Docker
+4
View File
@@ -70,6 +70,10 @@ tasks.named('test') {
useJUnitPlatform()
}
springBoot {
buildInfo()
}
tasks.named('bootJar') {
archiveFileName = 'olhar-api.jar'
}
@@ -30,6 +30,7 @@ public class SecurityConfig {
.authorizeHttpRequests(auth -> auth
.requestMatchers(
"/api/v1/auth/**",
"/api/v1/version",
"/swagger-ui/**",
"/swagger-ui.html",
"/api-docs/**",
@@ -0,0 +1,26 @@
package com.olhar.olharapi.interfaces.rest.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.info.BuildProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/api/v1/version")
@RequiredArgsConstructor
@Tag(name = "Version", description = "Version de l'API")
public class VersionController {
private final BuildProperties buildProperties;
@GetMapping
@Operation(summary = "Retourne la version de l'API")
public Map<String, String> getVersion() {
return Map.of("version", buildProperties.getVersion());
}
}
@@ -0,0 +1,24 @@
package com.olhar.olharapi.interfaces;
import com.olhar.olharapi.infrastructure.AbstractIntegrationTest;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import static org.assertj.core.api.Assertions.assertThat;
class VersionControllerIT extends AbstractIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
void getVersion_shouldReturnVersionWithoutAuthentication() {
ResponseEntity<String> response = restTemplate.getForEntity("/api/v1/version", String.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody()).contains("version");
}
}