diff --git a/.aliases b/.aliases index eb60c71d..925de39e 100644 --- a/.aliases +++ b/.aliases @@ -90,8 +90,37 @@ alias pg-sql-restore='gunzip --stdout | docker exec -i hsadmin-ng-postgres psql alias fp='grep -r '@Accepts' src | sed -e 's/^.*@/@/g' | sort -u | wc -l' alias gw-spotless='./gradlew spotlessApply -x pitest -x test -x :processResources' -alias gw-test='. .aliases; ./gradlew test' -alias gw-check='. .aliases; gw test check -x pitest' +alias gw-check='. .aliases; . .tc-environment; gw test check -x pitest' + +# HOWTO: run all 'normal' tests (no scenario+import-tests): `gw-test` +# You can also mention specific targets: `gw-test importOfficeData`. +# This will always use the environment from `.tc-environment`. +# +# HOWTO: re-run tests even if no changed can be detected: `gw-test --rerun` +# You can also mention specific targets: `gw-test scenarioTest --rerun`. +# This will always use the environment from `.tc-environment`. +# +# HOWTO: run all tests (unit, integration+acceptance, import and scenario): `gw-test --all` +# You can also re-run all these tests, which will take ~20min: `gw-test --all --rerun` +# This will always use the environment from `.tc-environment`. +# +function _gwTest() { + . .aliases; + . .tc-environment; + if [ "$1" == "--all" ]; then + shift # to remove the --all from $@ + # delierately in separate gradlew-calls to avoid Testcontains-PostgreSQL problem spillover + ./gradlew unitTest "$@" && + ./gradlew officeIntegrationTest bookingIntegrationTest hostingIntegrationTest "$@" && + ./gradlew scenarioTest "$@" && + ./gradlew importOfficeData importHostingAssets "$@"; + elif [ $# -eq 0 ] || [[ $1 == -* ]]; then + ./gradlew test "$@"; + else + ./gradlew "$@"; + fi +} +alias gw-test=_gwTest alias howto=bin/howto alias cas-curl=bin/cas-curl @@ -107,6 +136,6 @@ if [ ! -f .environment ]; then fi source .environment -alias scenario-reports-upload='./gradlew scenarioTests convertMarkdownToHtml && ssh hsh03-hsngdev@h50.hostsharing.net "rm -f doms/hsngdev.hs-example.de/htdocs-ssl/scenarios/office/*.html" && scp build/doc/scenarios/*.html hsh03-hsngdev@h50.hostsharing.net:doms/hsngdev.hs-example.de/htdocs-ssl/scenarios/office' +alias scenario-reports-upload='./gradlew scenarioTest convertMarkdownToHtml && ssh hsh03-hsngdev@h50.hostsharing.net "rm -f doms/hsngdev.hs-example.de/htdocs-ssl/scenarios/office/*.html" && scp build/doc/scenarios/*.html hsh03-hsngdev@h50.hostsharing.net:doms/hsngdev.hs-example.de/htdocs-ssl/scenarios/office' alias scenario-reports-open='open https://hsngdev.hs-example.de/scenarios/office' diff --git a/.tc-environment b/.tc-environment index 595d0096..c1816e80 100644 --- a/.tc-environment +++ b/.tc-environment @@ -4,5 +4,4 @@ export HSADMINNG_POSTGRES_ADMIN_PASSWORD= export HSADMINNG_POSTGRES_RESTRICTED_USERNAME=restricted export HSADMINNG_SUPERUSER=superuser-alex@hostsharing.net export HSADMINNG_MIGRATION_DATA_PATH=migration -export LIQUIBASE_COMMAND_CONTEXT_FILTER= export LANG=en_US.UTF-8 diff --git a/.unset-environment b/.unset-environment index fbc180cc..6f00ada4 100644 --- a/.unset-environment +++ b/.unset-environment @@ -4,5 +4,4 @@ unset HSADMINNG_POSTGRES_ADMIN_PASSWORD unset HSADMINNG_POSTGRES_RESTRICTED_USERNAME unset HSADMINNG_SUPERUSER unset HSADMINNG_MIGRATION_DATA_PATH -unset LIQUIBASE_COMMAND_CONTEXT_FILTER diff --git a/Jenkinsfile b/Jenkinsfile index 9b569801..5e41139b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,9 +35,24 @@ pipeline { stage ('Tests') { parallel { - stage('Unit-/Integration/Acceptance-Tests') { + stage('Unit-Tests') { steps { - sh './gradlew check --no-daemon -x pitest -x dependencyCheckAnalyze -x importOfficeData -x importHostingAssets' + sh './gradlew unitTest --no-daemon' + } + } + stage('General-Tests') { + steps { + sh './gradlew generalTest --no-daemon' + } + } + stage('Office-Tests') { + steps { + sh './gradlew officeIntegrationTest --no-daemon' + } + } + stage('Booking+Hosting-Tests') { + steps { + sh './gradlew bookingIntegrationTest hostingIntegrationTest --no-daemon' } } stage('Import-Tests') { @@ -47,7 +62,7 @@ pipeline { } stage ('Scenario-Tests') { steps { - sh './gradlew scenarioTests --no-daemon' + sh './gradlew scenarioTest --no-daemon' } } } diff --git a/README.md b/README.md index e9f40f79..8f4f358f 100644 --- a/README.md +++ b/README.md @@ -5,41 +5,48 @@ For architecture consider the files in the `doc` and `adr` folder. - [Setting up the Development Environment](#setting-up-the-development-environment) - - [PostgreSQL Server](#postgresql-server) - - [Markdown](#markdown) - - [Render Markdown embedded PlantUML](#render-markdown-embedded-plantuml) - - [Render Markdown Embedded Mermaid Diagrams](#render-markdown-embedded-mermaid-diagrams) - - [IDE Specific Settings](#ide-specific-settings) - - [IntelliJ IDEA](#intellij-idea) - - [Other Tools](#other-tools) + - [PostgreSQL Server](#postgresql-server) + - [Markdown](#markdown) + - [Render Markdown embedded PlantUML](#render-markdown-embedded-plantuml) + - [Render Markdown Embedded Mermaid Diagrams](#render-markdown-embedded-mermaid-diagrams) + - [IDE Specific Settings](#ide-specific-settings) + - [IntelliJ IDEA](#intellij-idea) + - [Other Tools](#other-tools) - [Running the SQL files](#running-the-sql-files) - - [For RBAC](#for-rbac) - - [For Historization](#for-historization) + - [For RBAC](#for-rbac) + - [For Historization](#for-historization) - [Coding Guidelines](#coding-guidelines) - - [Directory and Package Structure](#directory-and-package-structure) - - [General Directory Structure](#general-directory-structure) - - [Source Code Package Structure](#source-code-package-structure) - - [Run Tests from Command Line](#run-tests-from-command-line) - - [Spotless Code Formatting](#spotless-code-formatting) - - [JaCoCo Test Code Coverage Check](#jacoco-test-code-coverage-check) - - [PiTest Mutation Testing](#pitest-mutation-testing) - - [Remark](#remark) - - [OWASP Security Vulnerability Check](#owasp-security-vulnerability-check) - - [Dependency-License-Compatibility](#dependency-license-compatibility) - - [Dependency Version Upgrade](#dependency-version-upgrade) + - [Directory and Package Structure](#directory-and-package-structure) + - [General Directory Structure](#general-directory-structure) + - [Source Code Package Structure](#source-code-package-structure) + - [Run Tests from Command Line](#run-tests-from-command-line) + - [Spotless Code Formatting](#spotless-code-formatting) + - [JaCoCo Test Code Coverage Check](#jacoco-test-code-coverage-check) + - [PiTest Mutation Testing](#pitest-mutation-testing) + - [Remark](#remark) + - [OWASP Security Vulnerability Check](#owasp-security-vulnerability-check) + - [Dependency-License-Compatibility](#dependency-license-compatibility) + - [Dependency Version Upgrade](#dependency-version-upgrade) +- [Biggest Flaws in our Architecture](#biggest-flaws-in-our-architecture) + - [The RBAC System is too Complicated](#the-rbac-system-is-too-complicated) + - [The Mapper is Error-Prone](#the-mapper-is-error-prone) + - [Too Many Business-Rules Implemented in Controllers](#too-many-business-rules-implemented-in-controllers) - [How To ...](#how-to-...) - - [How to Configure .pgpass for the Default PostgreSQL Database?](#how-to-configure-.pgpass-for-the-default-postgresql-database?) - - [How to Run the Tests Against a Local User-Space Podman Daemon?](#how-to-run-the-tests-against-a-local-user-space-podman-daemon?) - - [Install and Run Podman](#install-and-run-podman) - - [Use the Command Line to Run the Tests Against the Podman Daemon ](#use-the-command-line-to-run-the-tests-against-the-podman-daemon-) - - [Use IntelliJ IDEA Run the Tests Against the Podman Daemon](#use-intellij-idea-run-the-tests-against-the-podman-daemon) - - [~/.testcontainers.properties](#~/.testcontainers.properties) - - [How to Run the Tests Against a Remote Podman or Docker Daemon?](#how-to-run-the-tests-against-a-remote-podman-or-docker-daemon?) - - [How to Run the Application on a Different Port?](#how-to-run-the-application-on-a-different-port?) - - [How to Use a Persistent Database for Integration Tests?](#how-to-use-a-persistent-database-for-integration-tests?) - - [How to Amend Liquibase SQL Changesets?](#how-to-amend-liquibase-sql-changesets?) - - [How to Re-Generate Spring-Controller-Interfaces from OpenAPI specs?](#how-to-re-generate-spring-controller-interfaces-from-openapi-specs?) - - [How to Generate Database Table Diagrams?](#how-to-generate-database-table-diagrams?) + - [How to Run the Application With Other Profiles, e.g. production](#) + - [How to Do a Clean Run of the Application](#how-to-do-a-clean-run-of-the-application) + - [How to Configure .pgpass for the Default PostgreSQL Database?](#how-to-configure-.pgpass-for-the-default-postgresql-database?) + - [How to Run the Tests Against a Local User-Space Podman Daemon?](#how-to-run-the-tests-against-a-local-user-space-podman-daemon?) + - [Install and Run Podman](#install-and-run-podman) + - [Use the Command Line to Run the Tests Against the Podman Daemon ](#use-the-command-line-to-run-the-tests-against-the-podman-daemon-) + - [Use IntelliJ IDEA Run the Tests Against the Podman Daemon](#use-intellij-idea-run-the-tests-against-the-podman-daemon) + - [~/.testcontainers.properties](#~/.testcontainers.properties) + - [How to Run the Tests Against a Remote Podman or Docker Daemon?](#how-to-run-the-tests-against-a-remote-podman-or-docker-daemon?) + - [How to Run the Application on a Different Port?](#how-to-run-the-application-on-a-different-port?) + - [How to Use a Persistent Database for Integration Tests?](#how-to-use-a-persistent-database-for-integration-tests?) + - [How to Amend Liquibase SQL Changesets?](#how-to-amend-liquibase-sql-changesets?) + - [How to Re-Generate Spring-Controller-Interfaces from OpenAPI specs?](#how-to-re-generate-spring-controller-interfaces-from-openapi-specs?) + - [How to Generate Database Table Diagrams?](#how-to-generate-database-table-diagrams?) + - [How to Add (Real) Admin Users](#how-to-add-(real)-admin-users) - [Further Documentation](#further-documentation) @@ -51,10 +58,11 @@ Everything is tested on _Ubuntu Linux 22.04_ and _MacOS Monterey (12.4)_. To be able to build and run the Java Spring Boot application, you need the following tools: - Docker 20.x (on MacOS you also need *Docker Desktop* or similar) or Podman -- optionally: PostgreSQL Server 15.5-bookworm +- optionally: PostgreSQL Server 15.5-bookworm, if you want to use the database directly, not just via Docker (see instructions below to install and run in Docker) - The matching Java JDK at will be automatically installed by Gradle toolchain support to `~/.gradle/jdks/`. - You also might need an IDE (e.g. *IntelliJ IDEA* or *Eclipse* or *VS Code* with *[STS](https://spring.io/tools)* and a GUI Frontend for *PostgreSQL* like *Postbird*. +- Python 3 is expected in /usr/bin/python3 if you want to run the `howto` tool (see `bin/howto`) If you have at least Docker and the Java JDK installed in appropriate versions and in your `PATH`, then you can start like this: @@ -64,7 +72,12 @@ If you have at least Docker and the Java JDK installed in appropriate versions a gw # initially downloads the configured Gradle version into the project gw test # compiles and runs unit- and integration-tests - takes >10min even on a fast machine - gw scenarioTests # compiles and scenario-tests - takes ~1min on a decent machine + # `gw test` does NOT run import- and scenario-tests. + # Use `gw-test` instead to make sure .tc-environment is sourced. + gw scenarioTest # compiles and scenario-tests - takes ~1min on a decent machine + # Use `gw-test scenarioTest` instead to make sure .tc-environment is sourced. + + howto test # shows more test information about how to run tests # if the container has not been built yet, run this: pg-sql-run # downloads + runs PostgreSQL in a Docker container on localhost:5432 @@ -72,12 +85,22 @@ If you have at least Docker and the Java JDK installed in appropriate versions a # if the container has been built already and you want to keep the data, run this: pg-sql-start -Next, compile and run the application without CAS-authentication on `localhost:8080`: +Next, compile and run the application on `localhost:8080` and the management server on `localhost:8081`: + # this disables CAS-authentication, for using the REST-API with CAS-authentication, see `bin/cas-curl`. export HSADMINNG_CAS_SERVER= - gw bootRun -For using the REST-API with CAS-authentication, see `bin/cas-curl`. + # this runs the application with test-data and all modules: + gw bootRun --args='--spring.profiles.active=dev,complete,test-data' + +The meaning of these profiles is: + +- **dev**: the PostgreSQL users are created via Liquibase +- **complete**: all modules are started +- **test-data**: some test data inserted + +Running just `gw bootRun` would just run the *office* module, not insert any test-data and +require the PostgreSQL users created in the database (see env-vars in `.aliases`). Now we can access the REST API, e.g. using curl: @@ -189,7 +212,7 @@ To generate the TOC (Table of Contents), a little bash script from a Given this is in PATH as `md-toc`, use: ```shell -md-toc &1 | tee log +``` + + ### How to Configure .pgpass for the Default PostgreSQL Database? To access the default database schema as used during development, add this line to your `.pgpass` file in your users home directory: diff --git a/build.gradle b/build.gradle index 6ba3c5e1..73c94f5c 100644 --- a/build.gradle +++ b/build.gradle @@ -83,7 +83,8 @@ dependencies { compileOnly 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' - developmentOnly 'org.springframework.boot:spring-boot-devtools' + // TODO.impl: version conflict with SpringDoc, check later and re-enable if fixed + // developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' @@ -179,7 +180,9 @@ openapiProcessor { } } sourceSets.main.java.srcDir 'build/generated/sources/openapi' + abstract class ProcessSpring extends DefaultTask {} + tasks.register('processSpring', ProcessSpring) ['processSpringRoot', 'processSpringRbac', @@ -253,19 +256,21 @@ licenseReport { } project.tasks.check.dependsOn(checkLicense) -// JaCoCo Test Code Coverage -jacoco { - toolVersion = "0.8.10" -} +// HOWTO: run all tests except import- and scenario-tests: gw test test { finalizedBy jacocoTestReport // generate report after tests excludes = [ 'net.hostsharing.hsadminng.**.generated.**', ] useJUnitPlatform { - excludeTags 'importOfficeData', 'importHostingData', 'scenarioTest' + excludeTags 'importOfficeData', 'importHostingAssets', 'scenarioTest' } } + +// JaCoCo Test Code Coverage for unit-tests +jacoco { + toolVersion = "0.8.10" +} jacocoTestReport { dependsOn test afterEvaluate { @@ -330,6 +335,67 @@ jacocoTestCoverageVerification { } } +// HOWTO: run all unit-tests which don't need a database: gw unitTest +tasks.register('unitTest', Test) { + useJUnitPlatform { + excludeTags 'importOfficeData', 'importHostingAssets', 'scenarioTest', 'generalIntegrationTest', + 'officeIntegrationTest', 'bookingIntegrationTest', 'hostingIntegrationTest' + } + + group 'verification' + description 'runs all unit-tests which do not need a database' + + mustRunAfter spotlessJava +} + +// HOWTO: run all integration tests which are not specific to a module, like base, rbac, config etc. +tasks.register('generalIntegrationTest', Test) { + useJUnitPlatform { + includeTags 'generalIntegrationTest' + } + + group 'verification' + description 'runs integration tests which are not specific to a module, like base, rbac, config etc.' + + mustRunAfter spotlessJava +} + +// HOWTO: run all integration tests of the office module: gw officeIntegrationTest +tasks.register('officeIntegrationTest', Test) { + useJUnitPlatform { + includeTags 'officeIntegrationTest' + } + + group 'verification' + description 'runs integration tests of the office module' + + mustRunAfter spotlessJava +} + +// HOWTO: run all integration tests of the booking module: gw bookingIntegrationTest +tasks.register('bookingIntegrationTest', Test) { + useJUnitPlatform { + includeTags 'bookingIntegrationTest' + } + + group 'verification' + description 'runs integration tests of the office module' + + mustRunAfter spotlessJava +} + +// HOWTO: run all integration tests of the hosting module: gw hostingIntegrationTest +tasks.register('hostingIntegrationTest', Test) { + useJUnitPlatform { + includeTags 'hostingIntegrationTest' + } + + group 'verification' + description 'runs integration tests of the office module' + + mustRunAfter spotlessJava +} + tasks.register('importOfficeData', Test) { useJUnitPlatform { includeTags 'importOfficeData' @@ -352,7 +418,7 @@ tasks.register('importHostingAssets', Test) { mustRunAfter spotlessJava } -tasks.register('scenarioTests', Test) { +tasks.register('scenarioTest', Test) { useJUnitPlatform { includeTags 'scenarioTest' } @@ -373,7 +439,7 @@ pitest { ] targetTests = ['net.hostsharing.hsadminng.**.*UnitTest', 'net.hostsharing.hsadminng.**.*RestTest'] - excludedTestClasses = ['**AcceptanceTest*', '**IntegrationTest*'] + excludedTestClasses = ['**AcceptanceTest*', '**IntegrationTest*', '**ImportOfficeData', '**ImportHostingAssets'] pitestVersion = '1.17.0' junit5PluginVersion = '1.1.0' @@ -452,7 +518,7 @@ tasks.register('convertMarkdownToHtml') { } } } -convertMarkdownToHtml.dependsOn scenarioTests +convertMarkdownToHtml.dependsOn scenarioTest // shortcut for compiling all files tasks.register('compile') { diff --git a/src/main/java/net/hostsharing/hsadminng/config/ActuatorSanitizer.java b/src/main/java/net/hostsharing/hsadminng/config/ActuatorSanitizer.java new file mode 100644 index 00000000..9967a78f --- /dev/null +++ b/src/main/java/net/hostsharing/hsadminng/config/ActuatorSanitizer.java @@ -0,0 +1,105 @@ +package net.hostsharing.hsadminng.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.actuate.endpoint.SanitizableData; +import org.springframework.boot.actuate.endpoint.SanitizingFunction; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +// HOWTO: exclude sensitive values, like passwords and other secrets, from being show by actuator endpoints: +// either use: add your custom keys to management.endpoint.additionalKeysToSanitize, +// or, if you need more heuristics, amend this code down here. +@Component +public class ActuatorSanitizer implements SanitizingFunction { + + private static final String[] REGEX_PARTS = {"*", "$", "^", "+"}; + + private static final Set DEFAULT_KEYS_TO_SANITIZE = Set.of( + "password", "secret", "token", ".*credentials.*", "vcap_services", "^vcap\\.services.*$", "sun.java.command", "^spring[._]application[._]json$" + ); + + private static final Set URI_USERINFO_KEYS = Set.of( + "uri", "uris", "url", "urls", "address", "addresses" + ); + + private static final Pattern URI_USERINFO_PATTERN = Pattern.compile("^\\[?[A-Za-z][A-Za-z0-9\\+\\.\\-]+://.+:(.*)@.+$"); + + private final List keysToSanitize = new ArrayList<>(); + + public ActuatorSanitizer(@Value("${management.endpoint.additionalKeysToSanitize:}") final List additionalKeysToSanitize) { + addKeysToSanitize(DEFAULT_KEYS_TO_SANITIZE); + addKeysToSanitize(URI_USERINFO_KEYS); + addKeysToSanitize(additionalKeysToSanitize); + } + + @Override + public SanitizableData apply(final SanitizableData data) { + if (data.getValue() == null) { + return data; + } + + for (final Pattern pattern : keysToSanitize) { + if (pattern.matcher(data.getKey()).matches()) { + if (keyIsUriWithUserInfo(pattern)) { + return data.withValue(sanitizeUris(data.getValue().toString())); + } + + return data.withValue(SanitizableData.SANITIZED_VALUE); + } + } + + return data; + } + + private void addKeysToSanitize(final Collection keysToSanitize) { + for (final String key : keysToSanitize) { + this.keysToSanitize.add(getPattern(key)); + } + } + + private Pattern getPattern(final String value) { + if (isRegex(value)) { + return Pattern.compile(value, Pattern.CASE_INSENSITIVE); + } + return Pattern.compile(".*" + value + "$", Pattern.CASE_INSENSITIVE); + } + + private boolean isRegex(final String value) { + for (final String part : REGEX_PARTS) { + if (value.contains(part)) { + return true; + } + } + return false; + } + + private boolean keyIsUriWithUserInfo(final Pattern pattern) { + for (String uriKey : URI_USERINFO_KEYS) { + if (pattern.matcher(uriKey).matches()) { + return true; + } + } + return false; + } + + private Object sanitizeUris(final String value) { + return Arrays.stream(value.split(",")).map(this::sanitizeUri).collect(Collectors.joining(",")); + } + + private String sanitizeUri(final String value) { + final var matcher = URI_USERINFO_PATTERN.matcher(value); + final var password = matcher.matches() ? matcher.group(1) : null; + if (password != null) { + return StringUtils.replace(value, ":" + password + "@", ":" + SanitizableData.SANITIZED_VALUE + "@"); + } + return value; + } +} diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/debitor/HsBookingDebitorRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/debitor/HsBookingDebitorRepository.java index 8d0bbe30..7273c444 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/debitor/HsBookingDebitorRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/debitor/HsBookingDebitorRepository.java @@ -2,12 +2,14 @@ package net.hostsharing.hsadminng.hs.booking.debitor; import io.micrometer.core.annotation.Timed; import org.springframework.data.repository.Repository; +import org.springframework.context.annotation.Profile; import java.util.List; import java.util.Optional; import java.util.UUID; -public interface HsBookingDebitorRepository extends Repository { +@Profile("!only-office") +public interface HsBookingDebitorRepository extends Repository { @Timed("app.booking.debitor.repo.findByUuid") Optional findByUuid(UUID id); diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/BookingItemCreatedEventRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/BookingItemCreatedEventRepository.java index f94f1458..2ae18218 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/BookingItemCreatedEventRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/BookingItemCreatedEventRepository.java @@ -1,10 +1,12 @@ package net.hostsharing.hsadminng.hs.booking.item; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.repository.Repository; import java.util.UUID; +@Profile("!only-office") public interface BookingItemCreatedEventRepository extends Repository { @Timed("app.booking.items.repo.save") diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemController.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemController.java index 6facc03f..6b563041 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemController.java @@ -16,6 +16,7 @@ import net.hostsharing.hsadminng.mapper.StrictMapper; import net.hostsharing.hsadminng.persistence.EntityManagerWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RestController; @@ -30,6 +31,7 @@ import static java.util.Optional.ofNullable; import static net.hostsharing.hsadminng.mapper.PostgresDateRange.toPostgresDateRange; @RestController +@Profile("!only-office") public class HsBookingItemController implements HsBookingItemsApi { @Autowired diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRbacRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRbacRepository.java index 392b7077..6715e610 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRbacRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRbacRepository.java @@ -1,12 +1,14 @@ package net.hostsharing.hsadminng.hs.booking.item; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.repository.Repository; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingItemRbacRepository extends HsBookingItemRepository, Repository { diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRealRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRealRepository.java index 706b1349..ef4c205b 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRealRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRealRepository.java @@ -1,12 +1,14 @@ package net.hostsharing.hsadminng.hs.booking.item; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.repository.Repository; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingItemRealRepository extends HsBookingItemRepository, Repository { diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepository.java index 67cb8efc..310027cb 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepository.java @@ -1,10 +1,13 @@ package net.hostsharing.hsadminng.hs.booking.item; +import org.springframework.context.annotation.Profile; + import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingItemRepository { Optional findByUuid(final UUID bookingItemUuid); diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectController.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectController.java index 98b856b9..11c135dd 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectController.java @@ -9,6 +9,7 @@ import net.hostsharing.hsadminng.hs.booking.generated.api.v1.model.HsBookingProj import net.hostsharing.hsadminng.hs.booking.generated.api.v1.model.HsBookingProjectResource; import net.hostsharing.hsadminng.mapper.StrictMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RestController; @@ -20,6 +21,7 @@ import java.util.UUID; import java.util.function.BiConsumer; @RestController +@Profile("!only-office") public class HsBookingProjectController implements HsBookingProjectsApi { @Autowired diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java index 63065bb2..a9360b34 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRbacRepository.java @@ -1,12 +1,14 @@ package net.hostsharing.hsadminng.hs.booking.project; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.repository.Repository; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingProjectRbacRepository extends HsBookingProjectRepository, Repository { diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java index 66b978b5..cc2e9a28 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRealRepository.java @@ -1,12 +1,14 @@ package net.hostsharing.hsadminng.hs.booking.project; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.repository.Repository; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingProjectRealRepository extends HsBookingProjectRepository, Repository { diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java index 0b9c7871..1f652196 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepository.java @@ -1,11 +1,13 @@ package net.hostsharing.hsadminng.hs.booking.project; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsBookingProjectRepository { @Timed("app.booking.projects.repo.findByUuid") diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetController.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetController.java index f9a45f70..7d12d714 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetController.java @@ -15,6 +15,7 @@ import net.hostsharing.hsadminng.mapper.KeyValueMap; import net.hostsharing.hsadminng.mapper.StrictMapper; import net.hostsharing.hsadminng.persistence.EntityManagerWrapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RestController; @@ -27,6 +28,7 @@ import java.util.UUID; import java.util.function.BiConsumer; @RestController +@Profile("!only-office") public class HsHostingAssetController implements HsHostingAssetsApi { @Autowired diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsController.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsController.java index b4c56f4c..d843ff87 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsController.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsController.java @@ -4,6 +4,7 @@ import io.micrometer.core.annotation.Timed; import net.hostsharing.hsadminng.hs.hosting.asset.validators.HostingAssetEntityValidatorRegistry; import net.hostsharing.hsadminng.hs.hosting.generated.api.v1.api.HsHostingAssetPropsApi; import net.hostsharing.hsadminng.hs.hosting.generated.api.v1.model.HsHostingAssetTypeResource; +import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; @@ -12,6 +13,7 @@ import java.util.Map; @RestController +@Profile("!only-office") public class HsHostingAssetPropsController implements HsHostingAssetPropsApi { @Override diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepository.java index 75a9863f..bdb6a65e 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRbacRepository.java @@ -1,6 +1,7 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; @@ -8,7 +9,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; - +@Profile("!only-office") public interface HsHostingAssetRbacRepository extends HsHostingAssetRepository, Repository { @Timed("app.hostingAsset.repo.findByUuid.rbac") diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRealRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRealRepository.java index 64fc44bd..4853b665 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRealRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRealRepository.java @@ -1,6 +1,7 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; @@ -9,6 +10,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsHostingAssetRealRepository extends HsHostingAssetRepository, Repository { @Timed("app.hostingAsset.repo.findByUuid.real") diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepository.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepository.java index a473accc..c87f6a2c 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepository.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepository.java @@ -1,11 +1,13 @@ package net.hostsharing.hsadminng.hs.hosting.asset; import io.micrometer.core.annotation.Timed; +import org.springframework.context.annotation.Profile; import java.util.List; import java.util.Optional; import java.util.UUID; +@Profile("!only-office") public interface HsHostingAssetRepository { @Timed("app.hosting.assets.repo.findByUuid") diff --git a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/factories/HsBookingItemCreatedListener.java b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/factories/HsBookingItemCreatedListener.java index 73291368..d26ebe55 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/factories/HsBookingItemCreatedListener.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/hosting/asset/factories/HsBookingItemCreatedListener.java @@ -13,9 +13,11 @@ import net.hostsharing.hsadminng.mapper.StrictMapper; import net.hostsharing.hsadminng.persistence.EntityManagerWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component +@Profile("!only-office") public class HsBookingItemCreatedListener implements ApplicationListener { @Autowired diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f6a6fe88..60fd285e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,17 +8,33 @@ management: endpoints: web: exposure: - # HOWTO: view _clickable_ Spring Actuator (Micrometer) Metrics endpoints: http://localhost:8081/actuator/metric-links - include: info, health, metrics, metric-links, mappings, openapi, swaggerui + # HOWTO: view _clickable_ Spring Actuator (Micrometer) Metrics endpoints: + # http://localhost:8081/actuator/metric-links + + # HOWTO: view all configured endpoints of the running application: + # http://localhost:8081/actuator/mappings + + # HOWTO: view the effective application configuration properties: + # http://localhost:8081/actuator/configprops + + include: info, health, metrics, metric-links, mappings, openapi, swaggerui, configprops, env + endpoint: + env: + # TODO.spec: check this, maybe set to when_authorized? + show-values: always + configprops: + # TODO.spec: check this, maybe set to when_authorized? + show-values: always observations: annotations: enabled: true spring: + datasource: driver-class-name: org.postgresql.Driver password: password - url: jdbc:postgresql://localhost:5432/postgres + url: ${HSADMINNG_POSTGRES_JDBC_URL} username: postgres sql: @@ -30,13 +46,13 @@ spring: hibernate: dialect: net.hostsharing.hsadminng.config.PostgresCustomDialect + liquibase: + contexts: ${spring.profiles.active} + # keep this in sync with test/.../application.yml springdoc: use-management-port: true -liquibase: - contexts: dev - hsadminng: postgres: leakproof: @@ -50,4 +66,3 @@ metrics: http: server: requests: true - diff --git a/src/main/resources/db/changelog/1-rbac/1050-rbac-base.sql b/src/main/resources/db/changelog/1-rbac/1050-rbac-base.sql index bdcd9368..04bd36d2 100644 --- a/src/main/resources/db/changelog/1-rbac/1050-rbac-base.sql +++ b/src/main/resources/db/changelog/1-rbac/1050-rbac-base.sql @@ -870,7 +870,7 @@ $$; -- ============================================================================ ---changeset michael.hoennig:rbac-base-PGSQL-ROLES context:dev,tc endDelimiter:--// +--changeset michael.hoennig:rbac-base-PGSQL-ROLES context:!external-db endDelimiter:--// -- ---------------------------------------------------------------------------- do $$ diff --git a/src/main/resources/db/changelog/1-rbac/1080-rbac-global.sql b/src/main/resources/db/changelog/1-rbac/1080-rbac-global.sql index 28575733..22ff2310 100644 --- a/src/main/resources/db/changelog/1-rbac/1080-rbac-global.sql +++ b/src/main/resources/db/changelog/1-rbac/1080-rbac-global.sql @@ -170,7 +170,7 @@ commit; -- ============================================================================ ---changeset michael.hoennig:rbac-global-ADMIN-USERS context:dev,tc endDelimiter:--// +--changeset michael.hoennig:rbac-global-ADMIN-USERS context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- /* Create two users and assign both to the administrators' role. @@ -192,7 +192,7 @@ $$; -- ============================================================================ ---changeset michael.hoennig:rbac-global-TEST context:dev,tc runAlways:true endDelimiter:--// +--changeset michael.hoennig:rbac-global-TEST context:!without-test-data runAlways:true endDelimiter:--// -- ---------------------------------------------------------------------------- /* diff --git a/src/main/resources/db/changelog/2-rbactest/201-rbactest-customer/2018-rbactest-customer-test-data.sql b/src/main/resources/db/changelog/2-rbactest/201-rbactest-customer/2018-rbactest-customer-test-data.sql index 18c23fe4..0f9e8a8a 100644 --- a/src/main/resources/db/changelog/2-rbactest/201-rbactest-customer/2018-rbactest-customer-test-data.sql +++ b/src/main/resources/db/changelog/2-rbactest/201-rbactest-customer/2018-rbactest-customer-test-data.sql @@ -67,7 +67,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:test-customer-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:test-customer-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/2-rbactest/202-rbactest-package/2028-rbactest-package-test-data.sql b/src/main/resources/db/changelog/2-rbactest/202-rbactest-package/2028-rbactest-package-test-data.sql index eae1342f..dc62a8f1 100644 --- a/src/main/resources/db/changelog/2-rbactest/202-rbactest-package/2028-rbactest-package-test-data.sql +++ b/src/main/resources/db/changelog/2-rbactest/202-rbactest-package/2028-rbactest-package-test-data.sql @@ -59,7 +59,7 @@ $$; -- ============================================================================ ---changeset michael.hoennig:test-package-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:test-package-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/2-rbactest/203-rbactest-domain/2038-rbactest-domain-test-data.sql b/src/main/resources/db/changelog/2-rbactest/203-rbactest-domain/2038-rbactest-domain-test-data.sql index 5fbbfa8c..eb0a3af5 100644 --- a/src/main/resources/db/changelog/2-rbactest/203-rbactest-domain/2038-rbactest-domain-test-data.sql +++ b/src/main/resources/db/changelog/2-rbactest/203-rbactest-domain/2038-rbactest-domain-test-data.sql @@ -52,7 +52,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-domain-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-domain-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/501-contact/5018-hs-office-contact-test-data.sql b/src/main/resources/db/changelog/5-hs-office/501-contact/5018-hs-office-contact-test-data.sql index 036fd7e2..f44772ff 100644 --- a/src/main/resources/db/changelog/5-hs-office/501-contact/5018-hs-office-contact-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/501-contact/5018-hs-office-contact-test-data.sql @@ -55,7 +55,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-contact-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-contact-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql b/src/main/resources/db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql index 49380a13..1be4c25d 100644 --- a/src/main/resources/db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql @@ -34,7 +34,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-person-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-person-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/503-relation/5038-hs-office-relation-test-data.sql b/src/main/resources/db/changelog/5-hs-office/503-relation/5038-hs-office-relation-test-data.sql index 6673d572..28ce12bd 100644 --- a/src/main/resources/db/changelog/5-hs-office/503-relation/5038-hs-office-relation-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/503-relation/5038-hs-office-relation-test-data.sql @@ -80,7 +80,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-relation-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-relation-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/504-partner/5048-hs-office-partner-test-data.sql b/src/main/resources/db/changelog/5-hs-office/504-partner/5048-hs-office-partner-test-data.sql index 3a6ced65..03cce30d 100644 --- a/src/main/resources/db/changelog/5-hs-office/504-partner/5048-hs-office-partner-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/504-partner/5048-hs-office-partner-test-data.sql @@ -66,7 +66,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-partner-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-partner-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/505-bankaccount/5058-hs-office-bankaccount-test-data.sql b/src/main/resources/db/changelog/5-hs-office/505-bankaccount/5058-hs-office-bankaccount-test-data.sql index 7aedc340..7c7f5884 100644 --- a/src/main/resources/db/changelog/5-hs-office/505-bankaccount/5058-hs-office-bankaccount-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/505-bankaccount/5058-hs-office-bankaccount-test-data.sql @@ -26,7 +26,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-bankaccount-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-bankaccount-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/506-debitor/5068-hs-office-debitor-test-data.sql b/src/main/resources/db/changelog/5-hs-office/506-debitor/5068-hs-office-debitor-test-data.sql index 1133621d..78a8c7f9 100644 --- a/src/main/resources/db/changelog/5-hs-office/506-debitor/5068-hs-office-debitor-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/506-debitor/5068-hs-office-debitor-test-data.sql @@ -45,7 +45,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-debitor-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-debitor-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/507-sepamandate/5078-hs-office-sepamandate-test-data.sql b/src/main/resources/db/changelog/5-hs-office/507-sepamandate/5078-hs-office-sepamandate-test-data.sql index 4bed9841..f8698197 100644 --- a/src/main/resources/db/changelog/5-hs-office/507-sepamandate/5078-hs-office-sepamandate-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/507-sepamandate/5078-hs-office-sepamandate-test-data.sql @@ -38,7 +38,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-sepaMandate-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-sepaMandate-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql b/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql index f67424a9..b5355871 100644 --- a/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql @@ -28,7 +28,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/511-coopshares/5118-hs-office-coopshares-test-data.sql b/src/main/resources/db/changelog/5-hs-office/511-coopshares/5118-hs-office-coopshares-test-data.sql index 5dd06009..b5d5e5a2 100644 --- a/src/main/resources/db/changelog/5-hs-office/511-coopshares/5118-hs-office-coopshares-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/511-coopshares/5118-hs-office-coopshares-test-data.sql @@ -38,7 +38,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-coopSharesTransaction-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-coopSharesTransaction-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/5-hs-office/512-coopassets/5128-hs-office-coopassets-test-data.sql b/src/main/resources/db/changelog/5-hs-office/512-coopassets/5128-hs-office-coopassets-test-data.sql index 2ce3186b..78cf0302 100644 --- a/src/main/resources/db/changelog/5-hs-office/512-coopassets/5128-hs-office-coopassets-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/512-coopassets/5128-hs-office-coopassets-test-data.sql @@ -44,7 +44,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-office-coopAssetsTransaction-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-office-coopAssetsTransaction-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/6-hs-booking/620-booking-project/6208-hs-booking-project-test-data.sql b/src/main/resources/db/changelog/6-hs-booking/620-booking-project/6208-hs-booking-project-test-data.sql index a5dd9596..6773973c 100644 --- a/src/main/resources/db/changelog/6-hs-booking/620-booking-project/6208-hs-booking-project-test-data.sql +++ b/src/main/resources/db/changelog/6-hs-booking/620-booking-project/6208-hs-booking-project-test-data.sql @@ -34,7 +34,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-booking-project-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-booking-project-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/6-hs-booking/630-booking-item/6308-hs-booking-item-test-data.sql b/src/main/resources/db/changelog/6-hs-booking/630-booking-item/6308-hs-booking-item-test-data.sql index a0b7470a..12c9d254 100644 --- a/src/main/resources/db/changelog/6-hs-booking/630-booking-item/6308-hs-booking-item-test-data.sql +++ b/src/main/resources/db/changelog/6-hs-booking/630-booking-item/6308-hs-booking-item-test-data.sql @@ -40,7 +40,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-booking-item-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-booking-item-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/7-hs-hosting/701-hosting-asset/7018-hs-hosting-asset-test-data.sql b/src/main/resources/db/changelog/7-hs-hosting/701-hosting-asset/7018-hs-hosting-asset-test-data.sql index 99b9f6f7..7337101d 100644 --- a/src/main/resources/db/changelog/7-hs-hosting/701-hosting-asset/7018-hs-hosting-asset-test-data.sql +++ b/src/main/resources/db/changelog/7-hs-hosting/701-hosting-asset/7018-hs-hosting-asset-test-data.sql @@ -105,7 +105,7 @@ end; $$; -- ============================================================================ ---changeset michael.hoennig:hs-hosting-asset-TEST-DATA-GENERATION –context=dev,tc endDelimiter:--// +--changeset michael.hoennig:hs-hosting-asset-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 1f4e8ea0..2eb8908c 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -29,6 +29,7 @@ databaseChangeLog: file: db/changelog/0-base/030-historization.sql - include: file: db/changelog/0-base/090-log-slow-queries-extensions.sql + - include: file: db/changelog/1-rbac/1000-rbac-schema.sql - include: @@ -49,26 +50,38 @@ databaseChangeLog: file: db/changelog/1-rbac/1059-rbac-statistics.sql - include: file: db/changelog/1-rbac/1080-rbac-global.sql + - include: file: db/changelog/2-rbactest/200-rbactest-schema.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/201-rbactest-customer/2010-rbactest-customer.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/201-rbactest-customer/2013-rbactest-customer-rbac.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/201-rbactest-customer/2018-rbactest-customer-test-data.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/202-rbactest-package/2020-rbactest-package.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/202-rbactest-package/2023-rbactest-package-rbac.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/202-rbactest-package/2028-rbactest-package-test-data.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/203-rbactest-domain/2030-rbactest-domain.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/203-rbactest-domain/2033-rbactest-domain-rbac.sql + context: "!without-test-data" - include: file: db/changelog/2-rbactest/203-rbactest-domain/2038-rbactest-domain-test-data.sql + context: "!without-test-data" + - include: file: db/changelog/5-hs-office/500-hs-office-schema.sql - include: @@ -79,18 +92,21 @@ databaseChangeLog: file: db/changelog/5-hs-office/501-contact/5016-hs-office-contact-migration.sql - include: file: db/changelog/5-hs-office/501-contact/5018-hs-office-contact-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/502-person/5020-hs-office-person.sql - include: file: db/changelog/5-hs-office/502-person/5023-hs-office-person-rbac.sql - include: file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/503-relation/5030-hs-office-relation.sql - include: file: db/changelog/5-hs-office/503-relation/5033-hs-office-relation-rbac.sql - include: file: db/changelog/5-hs-office/503-relation/5038-hs-office-relation-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/504-partner/5040-hs-office-partner.sql - include: @@ -101,18 +117,21 @@ databaseChangeLog: file: db/changelog/5-hs-office/504-partner/5046-hs-office-partner-migration.sql - include: file: db/changelog/5-hs-office/504-partner/5048-hs-office-partner-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/505-bankaccount/5050-hs-office-bankaccount.sql - include: file: db/changelog/5-hs-office/505-bankaccount/5053-hs-office-bankaccount-rbac.sql - include: file: db/changelog/5-hs-office/505-bankaccount/5058-hs-office-bankaccount-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/506-debitor/5060-hs-office-debitor.sql - include: file: db/changelog/5-hs-office/506-debitor/5063-hs-office-debitor-rbac.sql - include: file: db/changelog/5-hs-office/506-debitor/5068-hs-office-debitor-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/507-sepamandate/5070-hs-office-sepamandate.sql - include: @@ -121,12 +140,14 @@ databaseChangeLog: file: db/changelog/5-hs-office/507-sepamandate/5076-hs-office-sepamandate-migration.sql - include: file: db/changelog/5-hs-office/507-sepamandate/5078-hs-office-sepamandate-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/510-membership/5100-hs-office-membership.sql - include: file: db/changelog/5-hs-office/510-membership/5103-hs-office-membership-rbac.sql - include: file: db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/511-coopshares/5110-hs-office-coopshares.sql - include: @@ -135,6 +156,7 @@ databaseChangeLog: file: db/changelog/5-hs-office/511-coopshares/5116-hs-office-coopshares-migration.sql - include: file: db/changelog/5-hs-office/511-coopshares/5118-hs-office-coopshares-test-data.sql + context: "!without-test-data" - include: file: db/changelog/5-hs-office/512-coopassets/5120-hs-office-coopassets.sql - include: @@ -143,34 +165,53 @@ databaseChangeLog: file: db/changelog/5-hs-office/512-coopassets/5126-hs-office-coopassets-migration.sql - include: file: db/changelog/5-hs-office/512-coopassets/5128-hs-office-coopassets-test-data.sql + context: "!without-test-data" + - include: file: db/changelog/6-hs-booking/600-hs-booking-schema.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/610-booking-debitor/6100-hs-booking-debitor.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/620-booking-project/6200-hs-booking-project.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/620-booking-project/6203-hs-booking-project-rbac.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/620-booking-project/6208-hs-booking-project-test-data.sql + context: "!only-office and !without-test-data" - include: file: db/changelog/6-hs-booking/630-booking-item/6300-hs-booking-item.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/630-booking-item/6303-hs-booking-item-rbac.sql + context: "!only-office" - include: file: db/changelog/6-hs-booking/630-booking-item/6308-hs-booking-item-test-data.sql + context: "!only-office and !without-test-data" + - include: file: db/changelog/7-hs-hosting/700-hs-hosting-schema.sql + context: "!only-office" - include: file: db/changelog/7-hs-hosting/701-hosting-asset/7010-hs-hosting-asset.sql + context: "!only-office" - include: file: db/changelog/7-hs-hosting/701-hosting-asset/7013-hs-hosting-asset-rbac.sql + context: "!only-office" - include: file: db/changelog/7-hs-hosting/701-hosting-asset/7016-hs-hosting-asset-migration.sql + context: "!only-office" - include: file: db/changelog/7-hs-hosting/701-hosting-asset/7018-hs-hosting-asset-test-data.sql + context: "!only-office and !without-test-data" + - include: file: db/changelog/9-hs-global/9000-statistics.sql + context: "!only-office" + - include: file: db/changelog/9-hs-global/9100-hs-integration-schema.sql - include: diff --git a/src/test/java/net/hostsharing/hsadminng/config/ActuatorSanitizerUnitTest.java b/src/test/java/net/hostsharing/hsadminng/config/ActuatorSanitizerUnitTest.java new file mode 100644 index 00000000..6c0d0ae0 --- /dev/null +++ b/src/test/java/net/hostsharing/hsadminng/config/ActuatorSanitizerUnitTest.java @@ -0,0 +1,95 @@ +package net.hostsharing.hsadminng.config; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.actuate.endpoint.SanitizableData; +import org.springframework.core.env.PropertySource; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class ActuatorSanitizerUnitTest { + + private ActuatorSanitizer actuatorSanitizer; + + @BeforeEach + void setUp() { + // Initialize with additional keys for testing + final var additionalKeys = List.of("customSecret", "^custom[._]regex.*$"); + actuatorSanitizer = new ActuatorSanitizer(additionalKeys); + } + + @Test + void testSanitizesDefaultKeys() { + final var data = createSanitizableData("password", "my-secret-password"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo(SanitizableData.SANITIZED_VALUE); + } + + @Test + void testSanitizesCustomKey() { + final var data = createSanitizableData("customSecret", "my-custom-secret"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo(SanitizableData.SANITIZED_VALUE); + } + + @Test + void testSanitizesCustomRegexKey() { + final var data = createSanitizableData("custom.regex.key", "my-custom-regex-value"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo(SanitizableData.SANITIZED_VALUE); + } + + @Test + void testSanitizesUriWithUserInfo() { + final var data = createSanitizableData("uri", "http://user:password@host.com"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo("http://user:******@host.com"); + } + + @Test + void testDoesNotSanitizeIrrelevantKey() { + final var data = createSanitizableData("irrelevantKey", "non-sensitive-value"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo("non-sensitive-value"); + } + + @Test + void testHandlesNullValue() { + final var data = createSanitizableData("password", null); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isNull(); + } + + @Test + void testHandlesMultipleUris() { + final var data = createSanitizableData( + "uris", + "http://user1:password1@host1.com,http://user2:geheim@host2.com,http://user2@host2.com"); + final var sanitizedData = actuatorSanitizer.apply(data); + + assertThat(sanitizedData.getValue()).isEqualTo( + "http://user1:******@host1.com,http://user2:******@host2.com,http://user2@host2.com"); + } + + /** + * Utility method to create a SanitizableData instance for testing. + */ + private SanitizableData createSanitizableData(final String key, final String value) { + final var dummyPropertySource = new PropertySource<>("testSource") { + + @Override + public Object getProperty(String name) { + return null; // No real property resolution needed for this test + } + }; + return new SanitizableData(dummyPropertySource, key, value); + } +} diff --git a/src/test/java/net/hostsharing/hsadminng/config/CasAuthenticationFilterIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/config/CasAuthenticationFilterIntegrationTest.java index 0c705e25..eb00cf33 100644 --- a/src/test/java/net/hostsharing/hsadminng/config/CasAuthenticationFilterIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/config/CasAuthenticationFilterIntegrationTest.java @@ -1,6 +1,7 @@ package net.hostsharing.hsadminng.config; import com.github.tomakehurst.wiremock.WireMockServer; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -17,8 +18,9 @@ import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; import static org.assertj.core.api.Assertions.assertThat; import static com.github.tomakehurst.wiremock.client.WireMock.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = "server.port=0") +@TestPropertySource(properties = {"server.port=0", "hsadminng.cas.server=http://localhost:8088/cas"}) @ActiveProfiles("wiremock") // IMPORTANT: To test prod config, do not use test profile! +@Tag("generalIntegrationTest") class CasAuthenticationFilterIntegrationTest { @Value("${local.server.port}") diff --git a/src/test/java/net/hostsharing/hsadminng/config/CustomActuatorEndpointAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/config/CustomActuatorEndpointAcceptanceTest.java index 251804e2..35c010c3 100644 --- a/src/test/java/net/hostsharing/hsadminng/config/CustomActuatorEndpointAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/config/CustomActuatorEndpointAcceptanceTest.java @@ -2,6 +2,7 @@ package net.hostsharing.hsadminng.config; import io.restassured.RestAssured; import net.hostsharing.hsadminng.HsadminNgApplication; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalManagementPort; @@ -14,6 +15,7 @@ import static net.hostsharing.hsadminng.test.JsonMatcher.lenientlyEquals; classes = { HsadminNgApplication.class, DisableSecurityConfig.class } ) @ActiveProfiles("test") +@Tag("generalIntegrationTest") class CustomActuatorEndpointAcceptanceTest { @LocalManagementPort diff --git a/src/test/java/net/hostsharing/hsadminng/config/WebSecurityConfigIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/config/WebSecurityConfigIntegrationTest.java index 00444c3a..3a612b35 100644 --- a/src/test/java/net/hostsharing/hsadminng/config/WebSecurityConfigIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/config/WebSecurityConfigIntegrationTest.java @@ -3,6 +3,7 @@ package net.hostsharing.hsadminng.config; import java.util.Map; import com.github.tomakehurst.wiremock.WireMockServer; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -22,8 +23,9 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = {"management.port=0", "server.port=0"}) +@TestPropertySource(properties = {"management.port=0", "server.port=0", "hsadminng.cas.server=http://localhost:8088/cas"}) @ActiveProfiles("wiremock") // IMPORTANT: To test prod config, do not use test profile! +@Tag("generalIntegrationTest") class WebSecurityConfigIntegrationTest { @Value("${local.server.port}") diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java index ab3b3d08..cf47bbe9 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemControllerAcceptanceTest.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.ClassOrderer; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestClassOrder; import org.junit.jupiter.api.TestMethodOrder; @@ -49,6 +50,7 @@ import static org.hamcrest.Matchers.matchesRegex; @ActiveProfiles("test") @Transactional @TestClassOrder(ClassOrderer.OrderAnnotation.class) // fail early on fetching problems +@Tag("bookingIntegrationTest") class HsBookingItemControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java index 9a222b0c..19bb96d8 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/HsBookingItemRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -38,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("bookingIntegrationTest") class HsBookingItemRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java index 37b54e7e..7b072f4e 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectControllerAcceptanceTest.java @@ -8,6 +8,7 @@ import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -29,6 +30,7 @@ import static org.hamcrest.Matchers.matchesRegex; ) @ActiveProfiles("test") @Transactional +@Tag("bookingIntegrationTest") class HsBookingProjectControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java index 971b1ba8..e88edcb2 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/project/HsBookingProjectRepositoryIntegrationTest.java @@ -8,6 +8,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -33,6 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("bookingIntegrationTest") class HsBookingProjectRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java index ea7c93b1..3682f226 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetControllerAcceptanceTest.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.ClassOrderer; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestClassOrder; import org.springframework.beans.factory.annotation.Autowired; @@ -49,6 +50,7 @@ import static org.hamcrest.Matchers.matchesRegex; ) @ActiveProfiles("test") @TestClassOrder(ClassOrderer.OrderAnnotation.class) // fail early on fetching problems +@Tag("hostingIntegrationTest") class HsHostingAssetControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsControllerAcceptanceTest.java index de7dd82d..1bdfe9bb 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetPropsControllerAcceptanceTest.java @@ -4,6 +4,7 @@ import io.restassured.RestAssured; import net.hostsharing.hsadminng.HsadminNgApplication; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import net.hostsharing.hsadminng.config.DisableSecurityConfig; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; @@ -16,6 +17,7 @@ import static net.hostsharing.hsadminng.test.JsonMatcher.lenientlyEquals; classes = { HsadminNgApplication.class, DisableSecurityConfig.class, JpaAttempt.class } ) @ActiveProfiles("test") +@Tag("hostingIntegrationTest") class HsHostingAssetPropsControllerAcceptanceTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepositoryIntegrationTest.java index 4024d16f..7417313b 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/hosting/asset/HsHostingAssetRepositoryIntegrationTest.java @@ -12,6 +12,7 @@ import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.hibernate.exception.ConstraintViolationException; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -44,6 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("hostingIntegrationTest") class HsHostingAssetRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java index a831f637..256de796 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportHostingAssets.java @@ -32,6 +32,7 @@ import org.springframework.context.annotation.Import; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.test.annotation.Commit; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; import java.io.Reader; import java.net.IDN; @@ -121,6 +122,7 @@ import static org.assertj.core.api.Assumptions.assumeThat; }) @DirtiesContext @Import({ Context.class, JpaAttempt.class }) +@ActiveProfiles("without-test-data") @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @ExtendWith(OrderedDependedTestsExtension.class) public class ImportHostingAssets extends BaseOfficeDataImport { diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java index 5f632f88..c3111c01 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/ImportOfficeData.java @@ -7,6 +7,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.context.annotation.Import; import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; /* * This 'test' includes the complete legacy 'office' data import. @@ -51,6 +52,7 @@ import org.springframework.test.annotation.DirtiesContext; "spring.datasource.password=${HSADMINNG_POSTGRES_ADMIN_PASSWORD:password}", "hsadminng.superuser=${HSADMINNG_SUPERUSER:superuser-alex@hostsharing.net}" }) +@ActiveProfiles("without-test-data") @DirtiesContext @Import({ Context.class, JpaAttempt.class }) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountControllerAcceptanceTest.java index a81c220c..f42041aa 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountControllerAcceptanceTest.java @@ -32,6 +32,7 @@ import static org.hamcrest.Matchers.startsWith; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeBankAccountControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountRepositoryIntegrationTest.java index 7a95b503..62272655 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/bankaccount/HsOfficeBankAccountRepositoryIntegrationTest.java @@ -8,6 +8,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -29,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeBankAccountRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java index da6a380f..bf4141b8 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactControllerAcceptanceTest.java @@ -12,6 +12,7 @@ import org.json.JSONException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -39,6 +40,7 @@ import static org.hamcrest.Matchers.startsWith; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeContactControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacRepositoryIntegrationTest.java index 7e652325..2073057c 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/contact/HsOfficeContactRbacRepositoryIntegrationTest.java @@ -8,6 +8,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -29,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeContactRbacRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionControllerAcceptanceTest.java index cceee9dd..40ba4ea3 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionControllerAcceptanceTest.java @@ -11,6 +11,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,6 +38,7 @@ import static org.hamcrest.Matchers.startsWith; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeCoopAssetsTransactionControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionRepositoryIntegrationTest.java index 706c8034..09cc75d1 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/coopassets/HsOfficeCoopAssetsTransactionRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -31,6 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeCoopAssetsTransactionRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionControllerAcceptanceTest.java index 810f0a60..d4ed64f5 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionControllerAcceptanceTest.java @@ -11,6 +11,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -34,6 +35,7 @@ import static org.hamcrest.Matchers.startsWith; classes = {HsadminNgApplication.class, DisableSecurityConfig.class, JpaAttempt.class}) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeCoopSharesTransactionControllerAcceptanceTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionRepositoryIntegrationTest.java index afeae8c3..24df54cd 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/coopshares/HsOfficeCoopSharesTransactionRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -30,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeCoopSharesTransactionRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorControllerAcceptanceTest.java index 98be1755..4a4b96dd 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorControllerAcceptanceTest.java @@ -16,6 +16,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -43,6 +44,7 @@ import static org.hamcrest.Matchers.startsWith; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanup { private static final int LOWEST_TEMP_DEBITOR_SUFFIX = 90; diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorRepositoryIntegrationTest.java index 7989cf74..08ef791b 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorRepositoryIntegrationTest.java @@ -17,6 +17,7 @@ import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.hibernate.Hibernate; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -42,6 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class, RbacGrantsDiagramService.class }) +@Tag("officeIntegrationTest") class HsOfficeDebitorRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java index a2306ba8..08c88284 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java @@ -12,6 +12,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.json.JSONException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,6 +38,7 @@ import static org.hamcrest.Matchers.*; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCleanup { private static final String TEMP_MEMBER_NUMBER_SUFFIX = "90"; diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java index 44713c61..d078a01c 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.rbac.role.RawRbacRoleRepository; import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -31,6 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java index 8bfc7009..7afd9714 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerControllerAcceptanceTest.java @@ -34,6 +34,7 @@ import static org.hamcrest.Matchers.*; classes = { HsadminNgApplication.class, DisableSecurityConfig.class, JpaAttempt.class } ) @ActiveProfiles("test") +@Tag("officeIntegrationTest") class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanup { private static final UUID GIVEN_NON_EXISTING_UUID = UUID.fromString("00000000-0000-0000-0000-000000000000"); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerRbacRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerRbacRepositoryIntegrationTest.java index 2b5dfe1b..0fbf6990 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerRbacRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerRbacRepositoryIntegrationTest.java @@ -13,6 +13,7 @@ import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -38,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficePartnerRbacRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonControllerAcceptanceTest.java index a2c21dac..7f6e48ca 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonControllerAcceptanceTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -31,6 +32,7 @@ import static org.hamcrest.Matchers.*; classes = { HsadminNgApplication.class, DisableSecurityConfig.class, JpaAttempt.class } ) @ActiveProfiles("test") +@Tag("officeIntegrationTest") class HsOfficePersonControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRbacRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRbacRepositoryIntegrationTest.java index aff5561b..fb5f3454 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRbacRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRbacRepositoryIntegrationTest.java @@ -8,6 +8,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -29,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficePersonRbacRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRealRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRealRepositoryIntegrationTest.java index 0d89050e..45c24469 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRealRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/person/HsOfficePersonRealRepositoryIntegrationTest.java @@ -7,6 +7,7 @@ import net.hostsharing.hsadminng.rbac.role.RawRbacRoleRepository; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -27,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficePersonRealRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRealRelationRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRealRelationRepositoryIntegrationTest.java index 4c8f7b75..2f80a889 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRealRelationRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRealRelationRepositoryIntegrationTest.java @@ -6,6 +6,7 @@ import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -24,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeRealRelationRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationControllerAcceptanceTest.java index 8e33c35a..c97ea650 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationControllerAcceptanceTest.java @@ -11,6 +11,7 @@ import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeRelati import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -33,6 +34,7 @@ import static org.hamcrest.Matchers.hasEntry; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeRelationControllerAcceptanceTest extends ContextBasedTestWithCleanup { public static final UUID GIVEN_NON_EXISTING_HOLDER_PERSON_UUID = UUID.fromString("00000000-0000-0000-0000-000000000000"); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java index df3bcf23..5417ac41 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.rbac.role.RawRbacRoleRepository; import net.hostsharing.hsadminng.rbac.test.ContextBasedTestWithCleanup; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -32,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeRelationRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateControllerAcceptanceTest.java index b8876423..4336334e 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateControllerAcceptanceTest.java @@ -12,6 +12,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -36,6 +37,7 @@ import static org.hamcrest.Matchers.*; ) @ActiveProfiles("test") @Transactional +@Tag("officeIntegrationTest") class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCleanup { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateRepositoryIntegrationTest.java index 3debf9f5..b9a49708 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/sepamandate/HsOfficeSepaMandateRepositoryIntegrationTest.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.rbac.role.RawRbacRoleRepository; import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -32,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import({ Context.class, JpaAttempt.class }) +@Tag("officeIntegrationTest") class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/mapper/PostgresArrayIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/mapper/PostgresArrayIntegrationTest.java index 3542caa1..6a73d76d 100644 --- a/src/test/java/net/hostsharing/hsadminng/mapper/PostgresArrayIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/mapper/PostgresArrayIntegrationTest.java @@ -1,5 +1,6 @@ package net.hostsharing.hsadminng.mapper; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -11,6 +12,7 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest +@Tag("generalIntegrationTest") class PostgresArrayIntegrationTest { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/context/ContextIntegrationTests.java b/src/test/java/net/hostsharing/hsadminng/rbac/context/ContextIntegrationTests.java index 7f59d4e3..8b5d7693 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/context/ContextIntegrationTests.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/context/ContextIntegrationTests.java @@ -5,6 +5,7 @@ import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.mapper.StrictMapper; import net.hostsharing.hsadminng.persistence.EntityManagerWrapper; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -19,6 +20,7 @@ import jakarta.servlet.http.HttpServletRequest; import static org.assertj.core.api.Assertions.assertThat; +@Tag("generalIntegrationTest") @DataJpaTest @ComponentScan(basePackageClasses = { Context.class, JpaAttempt.class, EntityManagerWrapper.class, StrictMapper.class }) @DirtiesContext diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantControllerAcceptanceTest.java index 8f059572..bfd65b57 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantControllerAcceptanceTest.java @@ -13,6 +13,7 @@ import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -37,6 +38,7 @@ import static org.hamcrest.Matchers.*; ) @ActiveProfiles("test") @Transactional(readOnly = true, propagation = Propagation.NEVER) +@Tag("generalIntegrationTest") class RbacGrantControllerAcceptanceTest extends ContextBasedTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantRepositoryIntegrationTest.java index 41c2e6fc..ee7e4f9c 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantRepositoryIntegrationTest.java @@ -7,6 +7,7 @@ import net.hostsharing.hsadminng.rbac.subject.RbacSubjectEntity; import net.hostsharing.hsadminng.rbac.subject.RbacSubjectRepository; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -27,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("generalIntegrationTest") class RbacGrantRepositoryIntegrationTest extends ContextBasedTest { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantsDiagramServiceIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantsDiagramServiceIntegrationTest.java index 085854f1..4ad7ea43 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantsDiagramServiceIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/grant/RbacGrantsDiagramServiceIntegrationTest.java @@ -6,6 +6,7 @@ import net.hostsharing.hsadminng.rbac.grant.RbacGrantsDiagramService.Include; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class, RbacGrantsDiagramService.class}) +@Tag("generalIntegrationTest") class RbacGrantsDiagramServiceIntegrationTest extends ContextBasedTestWithCleanup { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleControllerAcceptanceTest.java index aa8c7727..c3a19fcc 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleControllerAcceptanceTest.java @@ -5,6 +5,7 @@ import net.hostsharing.hsadminng.HsadminNgApplication; import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.rbac.subject.RbacSubjectRepository; import net.hostsharing.hsadminng.config.DisableSecurityConfig; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -18,6 +19,7 @@ import static org.hamcrest.Matchers.*; classes = {HsadminNgApplication.class, DisableSecurityConfig.class} ) @ActiveProfiles("test") +@Tag("generalIntegrationTest") class RbacRoleControllerAcceptanceTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleRepositoryIntegrationTest.java index 292305e5..c77b70f4 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/role/RbacRoleRepositoryIntegrationTest.java @@ -4,6 +4,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -20,6 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("generalIntegrationTest") class RbacRoleRepositoryIntegrationTest { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectControllerAcceptanceTest.java index 45d8dac8..bdc65e15 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectControllerAcceptanceTest.java @@ -7,6 +7,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -25,6 +26,7 @@ import static org.hamcrest.Matchers.*; ) @ActiveProfiles("test") @Transactional +@Tag("generalIntegrationTest") class RbacSubjectControllerAcceptanceTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectRepositoryIntegrationTest.java index 00654d6e..32647892 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/subject/RbacSubjectRepositoryIntegrationTest.java @@ -5,6 +5,7 @@ import net.hostsharing.hsadminng.rbac.context.ContextBasedTest; import net.hostsharing.hsadminng.mapper.Array; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -26,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("generalIntegrationTest") class RbacSubjectRepositoryIntegrationTest extends ContextBasedTest { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerControllerAcceptanceTest.java index 1c210164..c6b3b3cf 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerControllerAcceptanceTest.java @@ -9,6 +9,7 @@ import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -30,6 +31,7 @@ import static org.hamcrest.Matchers.*; ) @ActiveProfiles("test") @Transactional +@Tag("generalIntegrationTest") class TestCustomerControllerAcceptanceTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerRepositoryIntegrationTest.java index c0a0dd06..2656ec60 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/cust/TestCustomerRepositoryIntegrationTest.java @@ -4,6 +4,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.rbac.context.ContextBasedTest; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -19,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("generalIntegrationTest") class TestCustomerRepositoryIntegrationTest extends ContextBasedTest { @Autowired diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageControllerAcceptanceTest.java index 4d68422e..fdfc9ee7 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageControllerAcceptanceTest.java @@ -7,6 +7,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.config.DisableSecurityConfig; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -28,6 +29,7 @@ import static org.hamcrest.Matchers.is; ) @ActiveProfiles("test") @Transactional +@Tag("generalIntegrationTest") class TestPackageControllerAcceptanceTest { @LocalServerPort diff --git a/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageRepositoryIntegrationTest.java index f4fa58dc..65a164fe 100644 --- a/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/rbac/test/pac/TestPackageRepositoryIntegrationTest.java @@ -4,6 +4,7 @@ import net.hostsharing.hsadminng.context.Context; import net.hostsharing.hsadminng.rbac.context.ContextBasedTest; import net.hostsharing.hsadminng.rbac.test.JpaAttempt; import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; @@ -20,6 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat; @DataJpaTest @Import( { Context.class, JpaAttempt.class }) +@Tag("generalIntegrationTest") class TestPackageRepositoryIntegrationTest extends ContextBasedTest { @Autowired