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:
|
test:
|
||||||
name: Tests
|
name: Tests
|
||||||
runs-on: ubuntu-latest
|
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:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build image de test
|
|
||||||
run: docker build -f Dockerfile.test -t olhar-api-test:ci .
|
|
||||||
|
|
||||||
- name: Lancer les tests
|
- name: Lancer les tests
|
||||||
run: |
|
run: ./gradlew test --no-daemon
|
||||||
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
|
|
||||||
|
|
||||||
build-and-push:
|
build-and-push:
|
||||||
name: Build & push image Docker
|
name: Build & push image Docker
|
||||||
|
|||||||
@@ -70,6 +70,10 @@ tasks.named('test') {
|
|||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
||||||
|
|
||||||
tasks.named('bootJar') {
|
tasks.named('bootJar') {
|
||||||
archiveFileName = 'olhar-api.jar'
|
archiveFileName = 'olhar-api.jar'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public class SecurityConfig {
|
|||||||
.authorizeHttpRequests(auth -> auth
|
.authorizeHttpRequests(auth -> auth
|
||||||
.requestMatchers(
|
.requestMatchers(
|
||||||
"/api/v1/auth/**",
|
"/api/v1/auth/**",
|
||||||
|
"/api/v1/version",
|
||||||
"/swagger-ui/**",
|
"/swagger-ui/**",
|
||||||
"/swagger-ui.html",
|
"/swagger-ui.html",
|
||||||
"/api-docs/**",
|
"/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