diff --git a/.github/project.yaml b/.github/project.yaml
index 0b40189..23a613b 100644
--- a/.github/project.yaml
+++ b/.github/project.yaml
@@ -1,5 +1,5 @@
name: Quarkus Commons
release:
- current-version: "1.0.8"
- next-version: "1.0.9-SNAPSHOT"
-
+ current-version: "1.0.1"
+ next-version: "1.0.2-SNAPSHOT"
+
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 1272b20..b32c3db 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -4,8 +4,6 @@ on:
push:
branches:
- "main"
- tags:
- - '[0-9]+.[0-9]+.[0-9]+'
paths-ignore:
- '.gitattributes'
- '.gitignore'
@@ -14,7 +12,6 @@ on:
- 'docs/**'
- 'README.md'
pull_request:
- workflow_dispatch:
env:
COMMON_MAVEN_OPTS: "-e -B --fae"
@@ -63,24 +60,19 @@ jobs:
servers: |
[{
"id": "phoenix-oss",
- "username": "${{ vars.ORG_PACKAGE_WRITER_USERNAME }}",
- "password": "${{ secrets.ORG_PACKAGE_WRITER_TOKEN }}"
+ "configuration": {
+ "httpHeaders": {
+ "property": {
+ "name": "Authorization",
+ "value": "token ${{ secrets.ORG_PACKAGE_WRITER_TOKEN }}"
+ }
+ }
+ }
}]
- name: Make maven wrapper executable
run: chmod +x mvnw
- - name: Validate tag
- if: startsWith(github.ref, 'refs/tags/')
- run: |
- TAG_NAME="${GITHUB_REF#refs/tags/}"
- PROJECT_VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
-
- if [[ "$PROJECT_VERSION" != "$TAG_NAME" ]]; then
- echo "::error::pom.xml version '$PROJECT_VERSION' does not match tag '$TAG_NAME'"
- exit 1
- fi
-
- name: Download dependencies
run: ./mvnw $COMMON_MAVEN_OPTS quarkus:go-offline
@@ -95,5 +87,5 @@ jobs:
run: ./mvnw $COMMON_MAVEN_OPTS org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=quarkus-commons -Dsonar.projectName='quarkus-commons' -Dsonar.coverage.jacoco.xmlReportPaths=../**/target/jacoco-report/jacoco.xml
- name: Publish jars
- if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
+ if: github.ref == 'refs/heads/main'
run: ./mvnw $COMMON_MAVEN_OPTS deploy -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
\ No newline at end of file
diff --git a/README.md b/README.md
index 1cfb1f7..6f32452 100644
--- a/README.md
+++ b/README.md
@@ -2,12 +2,12 @@ Quarkus Commons
===============
[](https://openjdk.org/projects/jdk/21/)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
-[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
+[](https://sonarqube.pub.production.kvant.cloud/dashboard?id=quarkus-commons)
# Introduction
diff --git a/pom.xml b/pom.xml
index 3b61944..9495f64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,12 +3,11 @@
4.0.0
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
pom
quarkus-audit-tools
- quarkus-client-logger
quarkus-clock-service
quarkus-json-service
quarkus-message-digest-service
@@ -21,15 +20,15 @@
quarkus-bom
io.quarkus.platform
- 3.25.0
+ 3.23.3
3.14.0
3.5.3
- 2.46.1
- 2.72.0
+ 2.44.4
+ 2.66.0
0.8.13
- 3.4.0
+ 3.3.1
3.1.1
3.3.1
@@ -73,7 +72,7 @@
scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git
scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git
https://git.kvant.cloud/phoenix-oss/quarkus-commons.git
- HEAD
+ 1.0.1
@@ -196,7 +195,7 @@
@{project.version}
mvnw
chore: release @{releaseLabel}
- chore: prepare for next development iteration
+ chore: prepare for next development iteration [skip ci]
true
diff --git a/quarkus-audit-tools/pom.xml b/quarkus-audit-tools/pom.xml
index 1a01d07..5501c6d 100644
--- a/quarkus-audit-tools/pom.xml
+++ b/quarkus-audit-tools/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-audit-tools
@@ -51,38 +51,38 @@
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-plugin.version}
-
-
- jacoco-check
-
- check
-
- test
-
- ${project.build.directory}/jacoco-quarkus.exec
-
-
- BUNDLE
-
-
- INSTRUCTION
- COVEREDRATIO
- 1
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/DefaultRevisionContextProviderTest.java b/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/DefaultRevisionContextProviderTest.java
index 8ef3a73..5ad9ff7 100644
--- a/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/DefaultRevisionContextProviderTest.java
+++ b/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/DefaultRevisionContextProviderTest.java
@@ -1,6 +1,7 @@
package ch.phoenix.oss.quarkus.commons.audit;
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mockStatic;
import io.quarkus.test.junit.QuarkusTest;
diff --git a/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/RevisionTest.java b/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/RevisionTest.java
index d0f5d1f..1b08c56 100644
--- a/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/RevisionTest.java
+++ b/quarkus-audit-tools/src/test/java/ch/phoenix/oss/quarkus/commons/audit/RevisionTest.java
@@ -1,6 +1,7 @@
package ch.phoenix.oss.quarkus.commons.audit;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
@@ -16,36 +17,12 @@ class RevisionTest {
var r2 = new Revision();
r2.rev = 1;
- var r3 = new Revision();
- r3.rev = 2;
-
- assertThat(r1)
- .as("Revisions equality should should match expected value")
- .isEqualTo(r1)
- .isEqualTo(r2)
- .isNotEqualTo(r3)
- .isNotEqualTo(new Object());
+ assertThat(r1).as("Revisions should be equal").isEqualTo(r2);
}
@Test
- void testHashCode() {
- var r1 = new Revision();
- r1.rev = 123;
-
- var r2 = new Revision();
- r2.rev = 123;
-
- var r3 = new Revision();
- r3.rev = 2;
-
- assertThat(r1.hashCode()).isEqualTo(123).isEqualTo(r2.hashCode()).isNotEqualTo(r3.hashCode());
- }
+ void testHashCode() {}
@Test
- void testToString() {
- var rev = new Revision();
- rev.rev = 1;
-
- assertThat(rev).as("Revision's toString should match expected value").hasToString("Revision{rev=1}");
- }
+ void testToString() {}
}
diff --git a/quarkus-client-logger/pom.xml b/quarkus-client-logger/pom.xml
deleted file mode 100644
index 3095369..0000000
--- a/quarkus-client-logger/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
- 4.0.0
-
-
- ch.phoenix.oss
- quarkus-commons
- 1.0.9-SNAPSHOT
-
-
- quarkus-client-logger
- jar
-
-
-
- io.quarkus
- quarkus-rest-client
-
-
- io.quarkus
- quarkus-config-yaml
- test
-
-
- io.quarkus
- quarkus-rest-jackson
- test
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-plugin.version}
-
-
- jacoco-check
-
- check
-
- test
-
- ${project.build.directory}/jacoco-quarkus.exec
-
-
- BUNDLE
-
-
- INSTRUCTION
- COVEREDRATIO
- 0.92
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/LowerCaseStringConverter.java b/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/LowerCaseStringConverter.java
deleted file mode 100644
index 498e318..0000000
--- a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/LowerCaseStringConverter.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import org.eclipse.microprofile.config.spi.Converter;
-
-public class LowerCaseStringConverter implements Converter {
- @Override
- public String convert(String value) throws IllegalArgumentException, NullPointerException {
- return value.toLowerCase();
- }
-}
diff --git a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLogger.java b/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLogger.java
deleted file mode 100644
index cb2b63b..0000000
--- a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLogger.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.vertx.core.Handler;
-import io.vertx.core.MultiMap;
-import io.vertx.core.buffer.Buffer;
-import io.vertx.core.http.HttpClientRequest;
-import io.vertx.core.http.HttpClientResponse;
-import jakarta.enterprise.context.Dependent;
-import jakarta.inject.Inject;
-import java.util.Map;
-import java.util.Set;
-import org.jboss.logging.Logger;
-import org.jboss.resteasy.reactive.client.api.ClientLogger;
-
-/**
- * This is based on org.jboss.resteasy.reactive.client.logging.DefaultClientLogger,
- * with the only change being that headers are redacted based on the Set provided
- * by the configuration.
- */
-@Dependent
-public class RedactingClientLogger implements ClientLogger {
-
- private static final Logger log = Logger.getLogger(RedactingClientLogger.class);
-
- private static final String REDACTED_VALUE = "*****";
-
- private final Set redactedHeaders;
-
- private int bodySize;
-
- @Inject
- public RedactingClientLogger(RedactingClientLoggerConfiguration configuration) {
- this.redactedHeaders = configuration
- .headers()
- .redact()
- .orElse(RedactingClientLoggerConfiguration.Headers.DEFAULT_REDACTED_HEADERS);
- }
-
- @Override
- public void setBodySize(int bodySize) {
- this.bodySize = bodySize;
- }
-
- @Override
- public void logResponse(HttpClientResponse response, boolean redirect) {
- if (!log.isDebugEnabled()) {
- return;
- }
-
- //noinspection Convert2Lambda
- response.bodyHandler(new Handler<>() {
- @Override
- public void handle(Buffer body) {
- log.debugf(
- "%s: %s %s, Status[%d %s], Headers[%s], Body:\n%s",
- redirect ? "Redirect" : "Response",
- response.request().getMethod(),
- response.request().absoluteURI(),
- response.statusCode(),
- response.statusMessage(),
- asString(response.headers()),
- bodyToString(body));
- }
- });
- }
-
- @Override
- public void logRequest(HttpClientRequest request, Buffer body, boolean omitBody) {
- if (!log.isDebugEnabled()) {
- return;
- }
- if (omitBody) {
- log.debugf(
- "Request: %s %s Headers[%s], Body omitted",
- request.getMethod(), request.absoluteURI(), asString(request.headers()));
- } else if (body == null || body.length() == 0) {
- log.debugf(
- "Request: %s %s Headers[%s], Empty body",
- request.getMethod(), request.absoluteURI(), asString(request.headers()));
- } else {
- log.debugf(
- "Request: %s %s Headers[%s], Body:\n%s",
- request.getMethod(), request.absoluteURI(), asString(request.headers()), bodyToString(body));
- }
- }
-
- private String bodyToString(Buffer body) {
- if (body == null) {
- return "";
- } else if (bodySize <= 0) {
- return body.toString();
- } else {
- String bodyAsString = body.toString();
- return bodyAsString.substring(0, Math.min(bodySize, bodyAsString.length()));
- }
- }
-
- private String asString(MultiMap headers) {
- if (headers.isEmpty()) {
- return "";
- }
- StringBuilder sb = new StringBuilder((headers.size() * (6 + 1 + 6))
- + (headers.size() - 1)); // this is a very rough estimate of a result like 'key1=value1 key2=value2'
- boolean isFirst = true;
- for (Map.Entry entry : headers) {
- if (isFirst) {
- isFirst = false;
- } else {
- sb.append(' ');
- }
-
- var key = entry.getKey();
- var value = redactedHeaders.contains(key.toLowerCase()) ? REDACTED_VALUE : entry.getValue();
-
- sb.append(key).append('=').append(value);
- }
- return sb.toString();
- }
-}
diff --git a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerConfiguration.java b/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerConfiguration.java
deleted file mode 100644
index 24fa05f..0000000
--- a/quarkus-client-logger/src/main/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerConfiguration.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.smallrye.config.ConfigMapping;
-import io.smallrye.config.WithConverter;
-import jakarta.ws.rs.core.HttpHeaders;
-import java.util.Optional;
-import java.util.Set;
-
-@ConfigMapping(prefix = "phoenix.client-logger")
-public interface RedactingClientLoggerConfiguration {
-
- Headers headers();
-
- interface Headers {
-
- Set DEFAULT_REDACTED_HEADERS = Set.of(HttpHeaders.AUTHORIZATION.toLowerCase());
-
- Optional> redact();
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelProfile.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelProfile.java
deleted file mode 100644
index 35acb14..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelProfile.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.quarkus.test.junit.QuarkusTestProfile;
-import java.util.Map;
-
-public class InfoLevelProfile implements QuarkusTestProfile {
-
- @Override
- public Map getConfigOverrides() {
- return Map.of("quarkus.log.category.\"ch.phoenix.oss.quarkus.commons.client.logger\".level", "INFO");
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelTest.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelTest.java
deleted file mode 100644
index c6b27ef..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/InfoLevelTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.quarkus.rest.client.reactive.QuarkusRestClientBuilder;
-import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.junit.TestProfile;
-import jakarta.inject.Inject;
-import java.net.URI;
-import java.util.Optional;
-import org.eclipse.microprofile.rest.client.inject.RestClient;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-@TestProfile(InfoLevelProfile.class)
-class InfoLevelTest {
-
- @Inject
- @RestClient
- TestClient injectedClient;
-
- TestClient builtClient = QuarkusRestClientBuilder.newBuilder()
- .clientLogger(new RedactingClientLogger(() -> Optional::empty))
- .baseUri(URI.create("http://localhost:8087"))
- .build(TestClient.class);
-
- @Test
- void getWithInjectedClient() {
- injectedClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted");
- }
-
- @Test
- void getWithBuiltClientAndEmptyConfig() {
- builtClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted");
- }
-
- @Test
- void postWithInjectedClient() {
- injectedClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted", "body");
- }
-
- @Test
- void postWithBuiltClientAndEmptyConfig() {
- builtClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted", "");
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerTest.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerTest.java
deleted file mode 100644
index 01e9389..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/RedactingClientLoggerTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.quarkus.rest.client.reactive.QuarkusRestClientBuilder;
-import io.quarkus.test.junit.QuarkusTest;
-import jakarta.inject.Inject;
-import java.net.URI;
-import java.util.Optional;
-import org.eclipse.microprofile.rest.client.inject.RestClient;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-class RedactingClientLoggerTest {
-
- @Inject
- @RestClient
- TestClient injectedClient;
-
- TestClient builtClient = QuarkusRestClientBuilder.newBuilder()
- .clientLogger(new RedactingClientLogger(() -> Optional::empty))
- .baseUri(URI.create("http://localhost:8087"))
- .build(TestClient.class);
-
- @Test
- void getWithInjectedClient() {
- injectedClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted");
- }
-
- @Test
- void getWithBuiltClientAndEmptyConfig() {
- builtClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted");
- }
-
- @Test
- void postWithInjectedClient() {
- injectedClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted", "body");
- }
-
- @Test
- void postWithInjectedClientAndNullBody() {
- injectedClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted", null);
- }
-
- @Test
- void postWithBuiltClientAndEmptyConfig() {
- builtClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted", "");
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneProfile.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneProfile.java
deleted file mode 100644
index 42daa28..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneProfile.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.quarkus.test.junit.QuarkusTestProfile;
-import java.util.Map;
-
-public class ScopeNoneProfile implements QuarkusTestProfile {
-
- @Override
- public Map getConfigOverrides() {
- return Map.of("quarkus.rest-client.logging.scope", "none");
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneTest.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneTest.java
deleted file mode 100644
index 14538b2..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/ScopeNoneTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import io.quarkus.rest.client.reactive.QuarkusRestClientBuilder;
-import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.junit.TestProfile;
-import jakarta.inject.Inject;
-import java.net.URI;
-import java.util.Optional;
-import org.eclipse.microprofile.rest.client.inject.RestClient;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-@TestProfile(ScopeNoneProfile.class)
-class ScopeNoneTest {
-
- @Inject
- @RestClient
- TestClient injectedClient;
-
- TestClient builtClient = QuarkusRestClientBuilder.newBuilder()
- .clientLogger(new RedactingClientLogger(() -> Optional::empty))
- .baseUri(URI.create("http://localhost:8087"))
- .build(TestClient.class);
-
- @Test
- void getWithInjectedClient() {
- injectedClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted");
- }
-
- @Test
- void getWithBuiltClientAndEmptyConfig() {
- builtClient.get("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted");
- }
-
- @Test
- void postWithInjectedClient() {
- injectedClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "also redacted", "body");
- }
-
- @Test
- void postWithBuiltClientAndEmptyConfig() {
- builtClient.post("this will be redacted", "5c0d8e45-e402-4b71-8f84-24cc0cfd7eec", "not redacted", "");
- }
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestClient.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestClient.java
deleted file mode 100644
index 79769ac..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestClient.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
-
-@SuppressWarnings("UastIncorrectHttpHeaderInspection")
-@RegisterRestClient(configKey = "test")
-public interface TestClient {
-
- @GET
- @Path("/")
- @Produces(MediaType.TEXT_PLAIN)
- String get(
- @HeaderParam("Authorization") String authorization,
- @HeaderParam("X-Request-ID") String requestId,
- @HeaderParam("X-Something-Else") String somethingElse);
-
- @POST
- @Path("/")
- @Consumes(MediaType.TEXT_PLAIN)
- @Produces(MediaType.TEXT_PLAIN)
- String post(
- @HeaderParam("Authorization") String authorization,
- @HeaderParam("X-Request-ID") String requestId,
- @HeaderParam("X-Something-Else") String somethingElse,
- String body);
-}
diff --git a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestResource.java b/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestResource.java
deleted file mode 100644
index c83bdd0..0000000
--- a/quarkus-client-logger/src/test/java/ch/phoenix/oss/quarkus/commons/client/logger/TestResource.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.client.logger;
-
-import jakarta.ws.rs.*;
-import jakarta.ws.rs.core.MediaType;
-
-@Path("/")
-public class TestResource {
-
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String get() {
- return "get";
- }
-
- @POST
- @Consumes(MediaType.TEXT_PLAIN)
- @Produces(MediaType.TEXT_PLAIN)
- public String post(String body) {
- return body;
- }
-}
diff --git a/quarkus-client-logger/src/test/resources/application.yaml b/quarkus-client-logger/src/test/resources/application.yaml
deleted file mode 100644
index a02f41d..0000000
--- a/quarkus-client-logger/src/test/resources/application.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-quarkus:
- http:
- test-port: 8087
- rest-client:
- logging:
- scope: request-response
- body-limit: 10000
- test:
- url: http://localhost:${quarkus.http.test-port}
- log:
- category:
- "ch.phoenix.oss.quarkus.commons.client.logger":
- level: DEBUG
-
-phoenix:
- client-logger:
- headers:
- redact:
- - AUTHORIZATION
- - X-SOMETHING-ELSE
diff --git a/quarkus-clock-service/pom.xml b/quarkus-clock-service/pom.xml
index aaab0c1..280d227 100644
--- a/quarkus-clock-service/pom.xml
+++ b/quarkus-clock-service/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-clock-service
diff --git a/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockService.java b/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockService.java
index f6c3c26..e9a214e 100644
--- a/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockService.java
+++ b/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockService.java
@@ -1,19 +1,10 @@
package ch.phoenix.oss.quarkus.commons.clock;
import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZonedDateTime;
public interface ClockService {
Instant instant();
long currentTimeMillis();
-
- LocalDate localDate();
-
- LocalDateTime localDateTime();
-
- ZonedDateTime zonedDateTime();
}
diff --git a/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImpl.java b/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImpl.java
index e47c757..4c90334 100644
--- a/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImpl.java
+++ b/quarkus-clock-service/src/main/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImpl.java
@@ -2,7 +2,8 @@ package ch.phoenix.oss.quarkus.commons.clock;
import io.quarkus.arc.DefaultBean;
import jakarta.enterprise.context.ApplicationScoped;
-import java.time.*;
+import java.time.Clock;
+import java.time.Instant;
@DefaultBean
@ApplicationScoped
@@ -23,19 +24,4 @@ class ClockServiceImpl implements ClockService {
public long currentTimeMillis() {
return clock.millis();
}
-
- @Override
- public LocalDate localDate() {
- return LocalDate.now(clock);
- }
-
- @Override
- public LocalDateTime localDateTime() {
- return LocalDateTime.now(clock);
- }
-
- @Override
- public ZonedDateTime zonedDateTime() {
- return ZonedDateTime.now(clock);
- }
}
diff --git a/quarkus-clock-service/src/test/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImplTest.java b/quarkus-clock-service/src/test/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImplTest.java
index dfffea8..626bb0a 100644
--- a/quarkus-clock-service/src/test/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImplTest.java
+++ b/quarkus-clock-service/src/test/java/ch/phoenix/oss/quarkus/commons/clock/ClockServiceImplTest.java
@@ -6,7 +6,8 @@ import static org.mockito.Mockito.when;
import io.quarkus.test.InjectMock;
import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
-import java.time.*;
+import java.time.Clock;
+import java.time.Instant;
import org.junit.jupiter.api.Test;
@QuarkusTest
@@ -37,34 +38,4 @@ class ClockServiceImplTest {
.as("Instant should match expected value")
.isEqualTo(expected);
}
-
- @Test
- void localDate() {
- var instant = Instant.ofEpochMilli(1729280640915L);
- when(clock.instant()).thenReturn(instant);
- when(clock.getZone()).thenReturn(ZoneId.of("UTC"));
- assertThat(clockService.localDate())
- .as("LocalDate should match expected value")
- .isEqualTo(LocalDate.parse("2024-10-18"));
- }
-
- @Test
- void localDateTime() {
- var instant = Instant.ofEpochMilli(1729280640915L);
- when(clock.instant()).thenReturn(instant);
- when(clock.getZone()).thenReturn(ZoneId.of("UTC"));
- assertThat(clockService.localDateTime())
- .as("LocalDateTime should match expected value")
- .isEqualTo(LocalDateTime.parse("2024-10-18T19:44:00.915"));
- }
-
- @Test
- void zonedDateTime() {
- var instant = Instant.ofEpochMilli(1729280640915L);
- when(clock.instant()).thenReturn(instant);
- when(clock.getZone()).thenReturn(ZoneId.of("UTC"));
- assertThat(clockService.zonedDateTime())
- .as("ZonedDateTime should match expected value")
- .isEqualTo(ZonedDateTime.parse("2024-10-18T19:44:00.915Z[UTC]"));
- }
}
diff --git a/quarkus-json-service/pom.xml b/quarkus-json-service/pom.xml
index 717c39f..0b1d6cb 100644
--- a/quarkus-json-service/pom.xml
+++ b/quarkus-json-service/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-json-service
diff --git a/quarkus-message-digest-service/pom.xml b/quarkus-message-digest-service/pom.xml
index c5d2c2d..c0c0a91 100644
--- a/quarkus-message-digest-service/pom.xml
+++ b/quarkus-message-digest-service/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-message-digest-service
diff --git a/quarkus-random-number-generator/pom.xml b/quarkus-random-number-generator/pom.xml
index 940f965..6d14cc0 100644
--- a/quarkus-random-number-generator/pom.xml
+++ b/quarkus-random-number-generator/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-random-number-generator
diff --git a/quarkus-tracing-service/pom.xml b/quarkus-tracing-service/pom.xml
index 214e936..52ef69f 100644
--- a/quarkus-tracing-service/pom.xml
+++ b/quarkus-tracing-service/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-tracing-service
@@ -41,38 +41,4 @@
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-plugin.version}
-
-
- jacoco-check
-
- check
-
- test
-
- ${project.build.directory}/jacoco-quarkus.exec
-
-
- BUNDLE
-
-
- INSTRUCTION
- COVEREDRATIO
- 0.95
-
-
-
-
-
-
-
-
-
-
-
diff --git a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingConfiguration.java b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingConfiguration.java
index 1093348..46e2854 100644
--- a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingConfiguration.java
+++ b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingConfiguration.java
@@ -3,7 +3,6 @@ package ch.phoenix.oss.quarkus.commons.tracing;
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithConverter;
import io.smallrye.config.WithDefault;
-import jakarta.ws.rs.core.HttpHeaders;
import java.util.Optional;
import java.util.Set;
@@ -18,14 +17,6 @@ public interface TracingConfiguration {
interface Headers {
- Set DEFAULT_REDACTED = Set.of(HttpHeaders.AUTHORIZATION.toLowerCase());
-
- /**
- * Optional set of headers to redact when tracing. By default, redacts
- * the 'Authorization' header.
- *
- * @return the set of headers to be redacted
- */
Optional> redact();
}
@@ -40,18 +31,9 @@ public interface TracingConfiguration {
Query query();
interface Query {
-
- Set DEFAULT_REDACTED = Set.of("access_token", "refresh_token", "apikey");
-
@WithDefault("false")
boolean includeRaw();
- /**
- * Optional set of query params to redact when tracing. By default, redacts
- * the following params: 'access_token', 'refresh_token' and 'apikey'.
- *
- * @return the set of query params to be redacted
- */
Optional> redact();
}
}
diff --git a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingRequestFilter.java b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingRequestFilter.java
index 7bb2427..4a1cbd4 100644
--- a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingRequestFilter.java
+++ b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingRequestFilter.java
@@ -9,13 +9,12 @@ import jakarta.ws.rs.Path;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ResourceInfo;
import java.util.List;
+import java.util.Set;
import org.jboss.resteasy.reactive.server.ServerRequestFilter;
@Unremovable
public class TracingRequestFilter {
- private static final String REDACTED_VALUE = "********";
-
private final RoutingContext routingContext;
private final TracingService tracingService;
private final SecurityIdentity securityIdentity;
@@ -58,38 +57,24 @@ public class TracingRequestFilter {
TracingConstants.REQUEST_PATH_RAW, uriInfo.getAbsolutePath().getRawPath());
}
- var redactedHeaders = configuration
- .requestFilter()
- .headers()
- .redact()
- .orElse(TracingConfiguration.RequestFilterConfiguration.Headers.DEFAULT_REDACTED);
-
requestContext.getHeaders().forEach((key, value) -> {
var lowerCaseKey = key.toLowerCase();
var property = TracingConstants.REQUEST_HEADERS + '.' + lowerCaseKey;
- if (redactedHeaders.contains(lowerCaseKey)) {
- tracingService.trace(property, REDACTED_VALUE);
+ if (configuration
+ .requestFilter()
+ .headers()
+ .redact()
+ .orElse(Set.of())
+ .contains(lowerCaseKey)) {
+ tracingService.trace(property, "********");
} else {
tracingService.trace(property, joinStrings(value));
}
});
- var redactedQueryParams = configuration
- .requestFilter()
- .query()
- .redact()
- .orElse(TracingConfiguration.RequestFilterConfiguration.Query.DEFAULT_REDACTED);
-
- uriInfo.getQueryParameters().forEach((key, value) -> {
- var lowerCaseKey = key.toLowerCase();
- var property = TracingConstants.REQUEST_QUERY_PARAMS + '.' + lowerCaseKey;
-
- if (redactedQueryParams.contains(lowerCaseKey)) {
- tracingService.trace(property, REDACTED_VALUE);
- } else {
- tracingService.trace(property, joinStrings(value));
- }
- });
+ uriInfo.getQueryParameters()
+ .forEach((key, value) ->
+ tracingService.trace(TracingConstants.REQUEST_QUERY_PARAMS + '.' + key, joinStrings(value)));
if (configuration.requestFilter().query().includeRaw()) {
var rawQuery = uriInfo.getRequestUri().getRawQuery();
@@ -102,7 +87,10 @@ public class TracingRequestFilter {
TracingConstants.REQUEST_CLIENT_IP,
routingContext.request().connection().remoteAddress(true).hostAddress());
- Log.debugf("Incoming request: %s %s", method, uriInfo.getAbsolutePath().getRawPath());
+ if (Log.isTraceEnabled()) {
+ Log.tracef(
+ "Incoming request: %s %s", method, uriInfo.getAbsolutePath().getRawPath());
+ }
}
private static String joinStrings(List value) {
diff --git a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingService.java b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingService.java
index 812867d..2b1ac38 100644
--- a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingService.java
+++ b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingService.java
@@ -8,7 +8,7 @@ public interface TracingService {
String getActor();
- String getRequestPathRaw();
+ String getRequestPath();
String getRequestMethod();
diff --git a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImpl.java b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImpl.java
index d46f684..b5f295b 100644
--- a/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImpl.java
+++ b/quarkus-tracing-service/src/main/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImpl.java
@@ -33,7 +33,7 @@ class TracingServiceImpl implements TracingService {
}
@Override
- public String getRequestPathRaw() {
+ public String getRequestPath() {
return (String) MDC.get(TracingConstants.REQUEST_PATH_RAW);
}
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/ActorTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/ActorTest.java
index 8ab52eb..2190561 100644
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/ActorTest.java
+++ b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/ActorTest.java
@@ -12,7 +12,7 @@ import io.restassured.http.ContentType;
import org.junit.jupiter.api.Test;
@QuarkusTest
-class ActorTest {
+public class ActorTest {
@InjectSpy
TracingService tracingService;
@@ -34,7 +34,7 @@ class ActorTest {
verify(tracingService).trace("request.route", route);
verify(tracingService).trace("request.headers.accept", "text/plain");
verify(tracingService).trace("request.headers.accept-encoding", "gzip,deflate");
- verify(tracingService).trace("request.headers.authorization", "********");
+ verify(tracingService).trace("request.headers.authorization", "Basic am9uOmRvZQ==");
verify(tracingService).trace("request.headers.connection", "Keep-Alive");
verify(tracingService).trace(eq("request.headers.host"), startsWith("localhost:"));
verify(tracingService).trace(eq("request.headers.user-agent"), startsWith("Apache-HttpClient"));
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/QueryParamTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/QueryParamTest.java
deleted file mode 100644
index 10b3894..0000000
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/QueryParamTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.tracing;
-
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.startsWith;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.junit.mockito.InjectSpy;
-import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-class QueryParamTest {
-
- @InjectSpy
- TracingService tracingService;
-
- @Test
- void traceQueryParams() {
- var route = "/authenticated";
- RestAssured.given()
- .auth()
- .basic("jon", "doe")
- .accept(ContentType.TEXT)
- .header("X-SOMETHING-ELSE", "whatever")
- .queryParam("access_token", "api123")
- .queryParam("refresh_token", "refresh123")
- .queryParam("apikey", "apikey123")
- .queryParam("grant_type", "authorization_code")
- .when()
- .get(route)
- .then()
- .statusCode(200);
-
- verify(tracingService).trace("actor", "jon");
- verify(tracingService).trace("request.method", "GET");
- verify(tracingService).trace("request.route", route);
- verify(tracingService).trace("request.headers.accept", "text/plain");
- verify(tracingService).trace("request.headers.accept-encoding", "gzip,deflate");
- verify(tracingService).trace("request.headers.authorization", "********");
- verify(tracingService).trace("request.headers.connection", "Keep-Alive");
- verify(tracingService).trace(eq("request.headers.host"), startsWith("localhost:"));
- verify(tracingService).trace(eq("request.headers.user-agent"), startsWith("Apache-HttpClient"));
- verify(tracingService).trace("request.headers.x-something-else", "whatever");
- verify(tracingService).trace("request.query.params.access_token", "********");
- verify(tracingService).trace("request.query.params.refresh_token", "********");
- verify(tracingService).trace("request.query.params.apikey", "********");
- verify(tracingService).trace("request.query.params.grant_type", "authorization_code");
- verify(tracingService).trace("request.client.ip", "127.0.0.1");
- verifyNoMoreInteractions(tracingService);
- }
-}
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RawPathTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RawPathTest.java
index e3579ba..96d8956 100644
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RawPathTest.java
+++ b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RawPathTest.java
@@ -14,7 +14,7 @@ import org.junit.jupiter.api.Test;
@QuarkusTest
@TestProfile(Test2Profile.class)
-class RawPathTest {
+public class RawPathTest {
@InjectSpy
TracingService tracingService;
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RedactedTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RedactedTest.java
deleted file mode 100644
index c928917..0000000
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RedactedTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.tracing;
-
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.startsWith;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.junit.TestProfile;
-import io.quarkus.test.junit.mockito.InjectSpy;
-import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-@TestProfile(Test2Profile.class)
-class RedactedTest {
-
- @InjectSpy
- TracingService tracingService;
-
- @Test
- void traceRedactedValues() {
- var route = "/authenticated";
- RestAssured.given()
- .auth()
- .basic("jon", "doe")
- .accept(ContentType.TEXT)
- .header("X-SOMETHING-ELSE", "whatever")
- .queryParam("access_token", "api123")
- .queryParam("refresh_token", "refresh123")
- .queryParam("apikey", "apikey123")
- .queryParam("grant_type", "authorization_code")
- .when()
- .get(route)
- .then()
- .statusCode(200);
-
- verify(tracingService).trace("actor", "jon");
- verify(tracingService).trace("request.method", "GET");
- verify(tracingService).trace("request.route", route);
- verify(tracingService).trace("request.path.raw", route);
- verify(tracingService).trace("request.headers.accept", "text/plain");
- verify(tracingService).trace("request.headers.accept-encoding", "gzip,deflate");
- verify(tracingService).trace("request.headers.authorization", "********");
- verify(tracingService).trace("request.headers.connection", "Keep-Alive");
- verify(tracingService).trace(eq("request.headers.host"), startsWith("localhost:"));
- verify(tracingService).trace(eq("request.headers.user-agent"), startsWith("Apache-HttpClient"));
- verify(tracingService).trace("request.headers.x-something-else", "********");
- verify(tracingService).trace("request.query.params.access_token", "********");
- verify(tracingService).trace("request.query.params.refresh_token", "refresh123");
- verify(tracingService).trace("request.query.params.apikey", "apikey123");
- verify(tracingService).trace("request.query.params.grant_type", "authorization_code");
- verify(tracingService)
- .trace(
- "request.query.raw",
- "access_token=api123&refresh_token=refresh123&apikey=apikey123&grant_type=authorization_code");
- verify(tracingService).trace("request.client.ip", "127.0.0.1");
- verifyNoMoreInteractions(tracingService);
- }
-}
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RoutePatternTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RoutePatternTest.java
index 156c0a4..11f1689 100644
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RoutePatternTest.java
+++ b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/RoutePatternTest.java
@@ -1,6 +1,5 @@
package ch.phoenix.oss.quarkus.commons.tracing;
-import static org.junit.jupiter.params.provider.Arguments.arguments;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.startsWith;
import static org.mockito.Mockito.verify;
@@ -11,11 +10,7 @@ import io.quarkus.test.junit.mockito.InjectSpy;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import java.util.Map;
-import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
@QuarkusTest
class RoutePatternTest {
@@ -23,46 +18,12 @@ class RoutePatternTest {
@InjectSpy
TracingService tracingService;
- static Stream get() {
- return Stream.of(
- arguments("/", Map.of()),
- arguments("/leading-and-no-trailing", Map.of()),
- arguments("/leading/{param}/{param2}", Map.of("param", "1", "param2", "2")),
- arguments("/{param}/{param2}/trailing", Map.of("param", "1", "param2", "2")),
- arguments("/leading-and-no-trailing/{param}", Map.of("param", "1")),
- arguments("/leading-and-no-trailing/{param}/{param2}", Map.of("param", "1", "param2", "2")),
- arguments("/leading-and-trailing", Map.of()),
- arguments("/leading-and-trailing/{param}", Map.of("param", "1")),
- arguments("/leading-and-trailing/{param}/{param2}", Map.of("param", "1", "param2", "2")),
- arguments("/no-leading-and-no-trailing", Map.of()),
- arguments("/no-leading-and-no-trailing/{param}", Map.of("param", "1")),
- arguments("/no-leading-and-no-trailing/{param}/{param2}", Map.of("param", "1", "param2", "2")),
- arguments("/no-leading-and-trailing", Map.of()),
- arguments("/no-leading-and-trailing/{param}", Map.of("param", "1")),
- arguments("/no-leading-and-trailing/{param}/{param2}", Map.of("param", "1", "param2", "2")));
- }
+ @Test
+ void getBlankResource() {
+ var route = "/";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route).then().statusCode(200);
- @MethodSource
- @ParameterizedTest
- void get(String route, Map pathParams) {
- RestAssured.given()
- .accept(ContentType.TEXT)
- .when()
- .get(route, pathParams)
- .then()
- .statusCode(200);
-
- verify(tracingService).trace("actor", "anonymous");
- verify(tracingService).trace("request.method", "GET");
- verify(tracingService).trace("request.route", route);
- pathParams.forEach((key, value) -> verify(tracingService).trace("request.path.params." + key, value));
- verify(tracingService).trace("request.headers.accept", "text/plain");
- verify(tracingService).trace("request.headers.accept-encoding", "gzip,deflate");
- verify(tracingService).trace("request.headers.connection", "Keep-Alive");
- verify(tracingService).trace(eq("request.headers.host"), startsWith("localhost:"));
- verify(tracingService).trace(eq("request.headers.user-agent"), startsWith("Apache-HttpClient"));
- verify(tracingService).trace("request.client.ip", "127.0.0.1");
- verifyNoMoreInteractions(tracingService);
+ verifyGetTracing(route, Map.of());
}
@Test
@@ -84,4 +45,160 @@ class RoutePatternTest {
verify(tracingService).trace("request.client.ip", "127.0.0.1");
verifyNoMoreInteractions(tracingService);
}
+
+ @Test
+ void getLeadingResource() {
+ var route = "/leading/{id}/{anotherId}";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("id", "1", "anotherId", "2"));
+ }
+
+ @Test
+ void getTrailingResource() {
+ var route = "/{id}/{anotherId}/trailing";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("id", "1", "anotherId", "2"));
+ }
+
+ @Test
+ void getLeadingAndNoTrailingResource() {
+ var route = "/leading-and-no-trailing";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of());
+ }
+
+ @Test
+ void getLeadingAndNoTrailingWithSingleParamResource() {
+ var route = "/leading-and-no-trailing/{param}";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route, 1).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1"));
+ }
+
+ @Test
+ void getLeadingAndNoTrailingWithMultiParamResource() {
+ var route = "/leading-and-no-trailing/{param}/{param2}";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1", "param2", "2"));
+ }
+
+ @Test
+ void getLeadingAndTrailingResource() {
+ var route = "/leading-and-trailing";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of());
+ }
+
+ @Test
+ void getLeadingAndTrailingWithSingleParamResource() {
+ var route = "/leading-and-trailing/{param}";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route, 1).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1"));
+ }
+
+ @Test
+ void getLeadingAndTrailingWithMultiParamResource() {
+ var route = "/leading-and-trailing/{param}/{param2}";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1", "param2", "2"));
+ }
+
+ @Test
+ void getNoLeadingAndNoTrailingResource() {
+ var route = "/no-leading-and-no-trailing";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of());
+ }
+
+ @Test
+ void geNoLeadingAndNoTrailingWithSingleParamResource() {
+ var route = "/no-leading-and-no-trailing/{param}";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route, 1).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1"));
+ }
+
+ @Test
+ void getNoLeadingAndNoTrailingWithMultiParamResource() {
+ var route = "/no-leading-and-no-trailing/{param}/{param2}";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1", "param2", "2"));
+ }
+
+ @Test
+ void getNoLeadingAndTrailingResource() {
+ var route = "/no-leading-and-trailing";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of());
+ }
+
+ @Test
+ void getNoLeadingAndTrailingWithSingleParamResource() {
+ var route = "/no-leading-and-trailing/{param}";
+ RestAssured.given().accept(ContentType.TEXT).when().get(route, 1).then().statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1"));
+ }
+
+ @Test
+ void getNoLeadingAndTrailingWithMultiParamResource() {
+ var route = "/no-leading-and-trailing/{param}/{param2}";
+ RestAssured.given()
+ .accept(ContentType.TEXT)
+ .when()
+ .get(route, 1, 2)
+ .then()
+ .statusCode(200);
+
+ verifyGetTracing(route, Map.of("param", "1", "param2", "2"));
+ }
+
+ private void verifyGetTracing(String route, Map pathParams) {
+ verify(tracingService).trace("actor", "anonymous");
+ verify(tracingService).trace("request.method", "GET");
+ verify(tracingService).trace("request.route", route);
+ pathParams.forEach((key, value) -> verify(tracingService).trace("request.path.params." + key, value));
+ verify(tracingService).trace("request.headers.accept", "text/plain");
+ verify(tracingService).trace("request.headers.accept-encoding", "gzip,deflate");
+ verify(tracingService).trace("request.headers.connection", "Keep-Alive");
+ verify(tracingService).trace(eq("request.headers.host"), startsWith("localhost:"));
+ verify(tracingService).trace(eq("request.headers.user-agent"), startsWith("Apache-HttpClient"));
+ verify(tracingService).trace("request.client.ip", "127.0.0.1");
+ verifyNoMoreInteractions(tracingService);
+ }
}
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImplTest.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImplTest.java
deleted file mode 100644
index f728e14..0000000
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/TracingServiceImplTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package ch.phoenix.oss.quarkus.commons.tracing;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import io.opentelemetry.api.trace.Span;
-import io.opentelemetry.instrumentation.annotations.WithSpan;
-import io.quarkus.test.junit.QuarkusTest;
-import jakarta.inject.Inject;
-import org.jboss.logging.MDC;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-class TracingServiceImplTest {
-
- @Inject
- TracingService tracingService;
-
- @Inject
- Span span;
-
- @BeforeEach
- void setUp() {
- MDC.clear();
- }
-
- @Test
- void getActor() {
- tracingService.trace("actor", "abc");
- assertThat(tracingService.getActor())
- .as("Actor should match expected value")
- .isEqualTo("abc");
- }
-
- @Test
- void getRequestPathRaw() {
- tracingService.trace("request.path.raw", "/foo/bar");
- assertThat(tracingService.getRequestPathRaw())
- .as("Request Path Raw should match expected value")
- .isEqualTo("/foo/bar");
- }
-
- @Test
- void getRequestMethod() {
- tracingService.trace("request.method", "GET");
- assertThat(tracingService.getRequestMethod())
- .as("Request Method should match expected value")
- .isEqualTo("GET");
- }
-
- @Test
- void getRequestId() {
- tracingService.trace("request.headers.x-request-id", "ba458367-bfeb-46ba-87da-50b9343be8f9");
- assertThat(tracingService.getRequestId())
- .as("Request Id should match expected value")
- .isEqualTo("ba458367-bfeb-46ba-87da-50b9343be8f9");
- }
-
- @Test
- @WithSpan
- void getTraceId() {
- assertThat(tracingService.getTraceId())
- .as("Request Trace Id should match expected value")
- .isEqualTo(span.getSpanContext().getTraceId());
- }
-
- @Test
- @WithSpan
- void getSpanId() {
- assertThat(tracingService.getSpanId())
- .as("Request Span Id should match expected value")
- .isEqualTo(span.getSpanContext().getSpanId());
- }
-
- @Test
- void getClientIp() {
- tracingService.trace("request.client.ip", "127.0.0.1");
- assertThat(tracingService.getClientIp())
- .as("Request Client Iü should match expected value")
- .isEqualTo("127.0.0.1");
- }
-
- @Test
- void getSchedulerJob() {
- tracingService.trace("scheduler.job.name", "scheduler/abc");
- assertThat(tracingService.getSchedulerJob())
- .as("Scheduler Job Name should match expected value")
- .isEqualTo("scheduler/abc");
- }
-
- @Test
- void clearAll() {
- tracingService.trace("aaa", "bbb");
- assertThat(MDC.get("aaa")).isEqualTo("bbb");
- tracingService.clearAll();
- assertThat(MDC.get("aaa")).isNull();
- }
-}
diff --git a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/resource/SlashResource.java b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/resource/SlashResource.java
index 8c8bdc7..690c84a 100644
--- a/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/resource/SlashResource.java
+++ b/quarkus-tracing-service/src/test/java/ch/phoenix/oss/quarkus/commons/tracing/resource/SlashResource.java
@@ -10,14 +10,14 @@ import jakarta.ws.rs.core.MediaType;
public class SlashResource {
@GET
- @Path("/leading/{param}/{param2}")
- public String doubleLeading(int param, int param2) {
- return "leading/" + param + "/" + param2;
+ @Path("/leading/{id}/{anotherId}")
+ public String doubleLeading(int id, int anotherId) {
+ return "leading/" + id + "/" + anotherId;
}
@GET
- @Path("{param}/{param2}/trailing/")
- public String doubleTrailing(int param, int param2) {
- return param + "/" + param2 + "/trailing";
+ @Path("{id}/{anotherId}/trailing/")
+ public String doubleTrailing(int id, int anotherId) {
+ return id + "/" + anotherId + "/trailing";
}
}
diff --git a/quarkus-tracing-service/src/test/resources/application.yaml b/quarkus-tracing-service/src/test/resources/application.yaml
index 3c6bb6f..9d0943f 100644
--- a/quarkus-tracing-service/src/test/resources/application.yaml
+++ b/quarkus-tracing-service/src/test/resources/application.yaml
@@ -32,7 +32,6 @@ quarkus:
headers:
redact:
- AUTHORIZATION
- - X-SOMETHING-ELSE
query:
include-raw: true
redact:
diff --git a/quarkus-uuid-generator/pom.xml b/quarkus-uuid-generator/pom.xml
index a6c395c..98fa97b 100644
--- a/quarkus-uuid-generator/pom.xml
+++ b/quarkus-uuid-generator/pom.xml
@@ -5,7 +5,7 @@
ch.phoenix.oss
quarkus-commons
- 1.0.9-SNAPSHOT
+ 1.0.1
quarkus-uuid-generator