feat(version): exposer GET /api/v1/version public sans authentification
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+17
-11
@@ -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
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user