Skip to content

Commit 1bb1030

Browse files
Merge remote-tracking branch 'origin/master' into release/current
2 parents d13942e + 657c1f5 commit 1bb1030

File tree

17 files changed

+109
-115
lines changed

17 files changed

+109
-115
lines changed

.codecov.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
coverage:
2+
status:
3+
project:
4+
default:
5+
target: 50%
6+
threshold: 0
7+
informational: true
8+
patch:
9+
default:
10+
target: 50%
11+
threshold: 0
12+
informational: true

.drone.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ steps:
2121
- mvn clean install -q -DskipTests
2222
- cd openaev-api
2323
- mvn test
24+
- echo "Running coverage validation..."
25+
- mvn jacoco:check || echo "⚠️ Coverage threshold check ⚠️"
2426
- cd ../openaev-framework
2527
- mvn test
2628

.github/workflows/validate-pr-title.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
2121
# Regex for:
2222
# [category/subcategory] type(scope?): description (#123?)
23-
PATTERN='^\[([a-z]+(/[a-z]+)*)\] (feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\([a-z]+\))?: [a-z].*( \(#[0-9]+\))$'
23+
PATTERN='^\[([a-z]+(/[a-z]+)*)\] (feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\([a-z-]+\))?: [a-z].*( \(#[0-9]+\))$'
2424
2525
if [[ ! "$TITLE" =~ $PATTERN ]]; then
2626
echo "❌ Invalid PR title."

openaev-api/pom.xml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>io.openaev</groupId>
88
<artifactId>openaev-platform</artifactId>
9-
<version>2.0.3</version>
9+
<version>2.0.4</version>
1010
</parent>
1111

1212
<artifactId>openaev-api</artifactId>
@@ -49,7 +49,7 @@
4949
<dependency>
5050
<groupId>io.openaev</groupId>
5151
<artifactId>openaev-framework</artifactId>
52-
<version>2.0.3</version>
52+
<version>2.0.4</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>co.elastic.clients</groupId>
@@ -326,6 +326,26 @@
326326
<groupId>org.jacoco</groupId>
327327
<artifactId>jacoco-maven-plugin</artifactId>
328328
<version>${jacoco-plugin.version}</version>
329+
<configuration>
330+
<haltOnFailure>false</haltOnFailure>
331+
<rules>
332+
<rule>
333+
<element>BUNDLE</element>
334+
<limits>
335+
<limit>
336+
<counter>LINE</counter>
337+
<value>COVEREDRATIO</value>
338+
<minimum>0.50</minimum> <!-- 50% minimum coverage -->
339+
</limit>
340+
<limit>
341+
<counter>BRANCH</counter>
342+
<value>COVEREDRATIO</value>
343+
<minimum>0.30</minimum>
344+
</limit>
345+
</limits>
346+
</rule>
347+
</rules>
348+
</configuration>
329349
<executions>
330350
<execution>
331351
<goals>
@@ -339,6 +359,14 @@
339359
<goal>report</goal>
340360
</goals>
341361
</execution>
362+
<!-- Enforce coverage threshold -->
363+
<execution>
364+
<id>check</id>
365+
<phase>verify</phase>
366+
<goals>
367+
<goal>check</goal>
368+
</goals>
369+
</execution>
342370
</executions>
343371
</plugin>
344372
<plugin>

openaev-api/src/main/java/io/openaev/rest/challenge/SimulationChallengeApi.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,7 @@ public Iterable<ChallengeOutput> exerciseChallenges(
6262
}
6363

6464
@PostMapping("/api/player/challenges/{exerciseId}/{challengeId}/validate")
65-
@RBAC(
66-
resourceId = "#exerciseId",
67-
actionPerformed = Action.WRITE,
68-
resourceType = ResourceType.SIMULATION)
65+
@RBAC(skipRBAC = true)
6966
@jakarta.transaction.Transactional(rollbackOn = Exception.class)
7067
public SimulationChallengesReader validateChallenge(
7168
@PathVariable String exerciseId,
@@ -84,10 +81,7 @@ public SimulationChallengesReader validateChallenge(
8481
}
8582

8683
@GetMapping("/api/player/simulations/{simulationId}/documents")
87-
@RBAC(
88-
resourceId = "#simulationId",
89-
actionPerformed = Action.READ,
90-
resourceType = ResourceType.SIMULATION)
84+
@RBAC(skipRBAC = true)
9185
public List<Document> playerDocuments(
9286
@PathVariable String simulationId, @RequestParam Optional<String> userId) {
9387
Optional<Exercise> exerciseOpt = this.exerciseRepository.findById(simulationId);
@@ -125,10 +119,7 @@ public SimulationChallengesReader observerChallenges(@PathVariable String simula
125119
}
126120

127121
@GetMapping("/api/player/simulations/{simulationId}/challenges")
128-
@RBAC(
129-
resourceId = "#simulationId",
130-
actionPerformed = Action.READ,
131-
resourceType = ResourceType.SIMULATION)
122+
@RBAC(skipRBAC = true)
132123
public SimulationChallengesReader playerChallenges(
133124
@PathVariable String simulationId, @RequestParam Optional<String> userId) {
134125
final User user = impersonateUser(userRepository, userId);

openaev-api/src/main/java/io/openaev/rest/channel/ChannelApi.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,7 @@ public ChannelReader observerArticles(
145145
}
146146

147147
@GetMapping("/api/player/channels/{exerciseId}/{channelId}")
148-
@RBAC(
149-
resourceId = "#exerciseId",
150-
actionPerformed = Action.READ,
151-
resourceType = ResourceType.SIMULATION)
148+
@RBAC(skipRBAC = true)
152149
public ChannelReader playerArticles(
153150
@PathVariable String exerciseId,
154151
@PathVariable String channelId,

openaev-api/src/main/java/io/openaev/rest/comcheck/ComcheckApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void setExerciseRepository(ExerciseRepository exerciseRepository) {
4747
}
4848

4949
@GetMapping("/api/comcheck/{comcheckStatusId}")
50-
@RBAC(actionPerformed = Action.READ, resourceType = ResourceType.SIMULATION)
50+
@RBAC(skipRBAC = true)
5151
@Transactional(rollbackOn = Exception.class)
5252
public ComcheckStatus checkValidation(@PathVariable String comcheckStatusId) {
5353
ComcheckStatus comcheckStatus =

openaev-api/src/main/java/io/openaev/rest/document/DocumentApi.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -557,10 +557,7 @@ public void deleteDocument(@PathVariable String documentId) {
557557

558558
// -- EXERCISE & SENARIO--
559559
@GetMapping("/api/player/{exerciseOrScenarioId}/documents")
560-
@RBAC(
561-
resourceId = "#exerciseOrScenarioId",
562-
actionPerformed = Action.READ,
563-
resourceType = ResourceType.SIMULATION_OR_SCENARIO)
560+
@RBAC(skipRBAC = true)
564561
public List<Document> playerDocuments(
565562
@PathVariable String exerciseOrScenarioId, @RequestParam Optional<String> userId) {
566563
Optional<Exercise> exerciseOpt = this.exerciseRepository.findById(exerciseOrScenarioId);
@@ -589,10 +586,7 @@ public List<Document> playerDocuments(
589586
}
590587

591588
@GetMapping("/api/player/{exerciseOrScenarioId}/documents/{documentId}/file")
592-
@RBAC(
593-
resourceId = "#exerciseOrScenarioId",
594-
actionPerformed = Action.READ,
595-
resourceType = ResourceType.SIMULATION_OR_SCENARIO)
589+
@RBAC(skipRBAC = true)
596590
public void downloadPlayerDocument(
597591
@PathVariable String exerciseOrScenarioId,
598592
@PathVariable String documentId,

openaev-api/src/main/java/io/openaev/rest/exercise/ExercisePlayerApi.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package io.openaev.rest.exercise;
22

33
import io.openaev.aop.RBAC;
4-
import io.openaev.database.model.Action;
54
import io.openaev.database.model.Exercise;
6-
import io.openaev.database.model.ResourceType;
75
import io.openaev.database.repository.ExerciseRepository;
86
import io.openaev.database.repository.UserRepository;
97
import io.openaev.rest.exception.ElementNotFoundException;
@@ -26,10 +24,7 @@ public class ExercisePlayerApi extends RestBehavior {
2624
private final ExerciseRepository exerciseRepository;
2725

2826
@GetMapping(EXERCISE_URI + "/{exerciseId}")
29-
@RBAC(
30-
resourceId = "#exerciseId",
31-
actionPerformed = Action.READ,
32-
resourceType = ResourceType.SIMULATION)
27+
@RBAC(skipRBAC = true)
3328
public PublicExercise playerExercise(
3429
@PathVariable String exerciseId, @RequestParam Optional<String> userId) {
3530
impersonateUser(this.userRepository, userId);

openaev-api/src/main/java/io/openaev/rest/lessons/ExerciseLessonsApi.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -334,21 +334,15 @@ public List<LessonsAnswer> exerciseLessonsAnswers(
334334
}
335335

336336
@GetMapping("/api/player/lessons/exercise/{exerciseId}/lessons_categories")
337-
@RBAC(
338-
resourceId = "#exerciseId",
339-
actionPerformed = Action.READ,
340-
resourceType = ResourceType.SIMULATION)
337+
@RBAC(skipRBAC = true)
341338
public List<LessonsCategory> playerLessonsCategories(
342339
@PathVariable String exerciseId, @RequestParam Optional<String> userId) {
343340
impersonateUser(userRepository, userId); // Protection for ?
344341
return lessonsCategoryRepository.findAll(LessonsCategorySpecification.fromExercise(exerciseId));
345342
}
346343

347344
@GetMapping("/api/player/lessons/exercise/{exerciseId}/lessons_questions")
348-
@RBAC(
349-
resourceId = "#exerciseId",
350-
actionPerformed = Action.READ,
351-
resourceType = ResourceType.SIMULATION)
345+
@RBAC(skipRBAC = true)
352346
public List<LessonsQuestion> playerLessonsQuestions(
353347
@PathVariable String exerciseId, @RequestParam Optional<String> userId) {
354348
impersonateUser(userRepository, userId); // Protection for ?
@@ -364,10 +358,7 @@ public List<LessonsQuestion> playerLessonsQuestions(
364358
}
365359

366360
@GetMapping("/api/player/lessons/exercise/{exerciseId}/lessons_answers")
367-
@RBAC(
368-
resourceId = "#exerciseId",
369-
actionPerformed = Action.READ,
370-
resourceType = ResourceType.SIMULATION)
361+
@RBAC(skipRBAC = true)
371362
public List<LessonsAnswer> playerLessonsAnswers(
372363
@PathVariable String exerciseId, @RequestParam Optional<String> userId) {
373364
impersonateUser(userRepository, userId); // Protection for ?
@@ -391,10 +382,7 @@ public List<LessonsAnswer> playerLessonsAnswers(
391382

392383
@PostMapping(
393384
"/api/player/lessons/exercise/{exerciseId}/lessons_categories/{lessonsCategoryId}/lessons_questions/{lessonsQuestionId}/lessons_answers")
394-
@RBAC(
395-
resourceId = "#exerciseId",
396-
actionPerformed = Action.WRITE,
397-
resourceType = ResourceType.SIMULATION)
385+
@RBAC(skipRBAC = true)
398386
public LessonsAnswer createExerciseLessonsQuestion(
399387
@PathVariable String exerciseId,
400388
@PathVariable String lessonsQuestionId,

0 commit comments

Comments
 (0)