diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 000000000..b0d6e2f9e --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,44 @@ +name: Actions on pull requests +on: + pull_request: + branches: + - develop + - master + +jobs: + pull-request-job: + runs-on: ubuntu-latest + steps: + - name: Step 1 - Checkout repository code + uses: actions/checkout@v4 + + - name: Step 2 - Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Step 3 - Cache Docker images. + uses: ScribeMD/docker-cache@0.3.7 + with: + key: docker-${{ runner.os }} + + - name: Step 4 - Build & Test + run: mvn clean verify -ntp -PIT + + - name: Step 5 - Upload coverage unittests reports to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + gcov_ignore: '!*datasafe-business*' + flags: unittests + verbose: true + + - name: Step 6 - Upload coverage e2e tests reports to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + gcov_include: '*datasafe-business*' + flags: e2e_tests + verbose: true \ No newline at end of file diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml deleted file mode 100644 index 0891234c0..000000000 --- a/.github/workflows/pull-requests.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Builds Pull-requests to key branches -name: Pull request CI - -on: - pull_request: - branches: - - develop - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: 17 - distribution: 'adopt' - - - name: Build project and run default test suite - run: mvn clean verify -ntp diff --git a/.github/workflows/push-develop.yml b/.github/workflows/push-develop.yml new file mode 100644 index 000000000..cebd686b3 --- /dev/null +++ b/.github/workflows/push-develop.yml @@ -0,0 +1,53 @@ +name: Develop branch build +on: + push: + branches: + - develop + +jobs: + develop-build-job: + runs-on: ubuntu-latest + steps: + - name: Step 1 - Checkout repository code + uses: actions/checkout@v4 + + - name: Step 2 - Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Step 3 - Cache Docker images. + uses: ScribeMD/docker-cache@0.3.7 + with: + key: docker-${{ runner.os }} + + - name: Step 4 - Build & Test + run: mvn clean verify -ntp -PIT + + - name: Step 5 - Deploy Snapshot + run: ./scripts/mvn_deploy.sh + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_EXECUTABLE: gpg + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }} + + - name: Step 6 - Upload coverage unittests reports to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + gcov_ignore: '!*datasafe-business*' + flags: unittests + verbose: true + + - name: Step 7 - Upload coverage e2e tests reports to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + gcov_include: '*datasafe-business*' + flags: e2e_tests + verbose: true \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..2ecc29728 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,37 @@ +name: Release to Maven Central +on: + push: + tags: + - v* + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Step 1 - Checkout repository code + uses: actions/checkout@v4 + + - name: Step 2 - Setup JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Step 3 - Cache Docker images. + uses: ScribeMD/docker-cache@0.3.7 + with: + key: docker-${{ runner.os }} + + - name: Step 4 - Maven deploy release + run: ./scripts/mvn_deploy.sh + env: + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + GPG_EXECUTABLE: gpg + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} + GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }} + +# - name: Step 4 - Push JavaDoc to GitHub Pages +# run: ./scripts/push-javadoc-to-gh-pages.sh diff --git a/.travis/codecov_bash.sh b/.travis/codecov_bash.sh deleted file mode 100644 index a11db3d6a..000000000 --- a/.travis/codecov_bash.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -BRANCH="$TRAVIS_BRANCH" -if [[ -n "$TRAVIS_PULL_REQUEST_BRANCH" ]]; then - BRANCH="$TRAVIS_PULL_REQUEST_BRANCH" - echo "Pull request branch identified: $TRAVIS_PULL_REQUEST_BRANCH" -fi - -echo "Sending test results to codecov using $BRANCH" -bash <(curl -s https://codecov.io/bash) -f '!*datasafe-business*' -F unittests -B "$BRANCH"; -bash <(curl -s https://codecov.io/bash) -s '*datasafe-business*' -F e2e_tests -B "$BRANCH"; \ No newline at end of file diff --git a/.travis/deploy.sh b/.travis/deploy.sh deleted file mode 100644 index 3f1052e59..000000000 --- a/.travis/deploy.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -echo "$GPG_SECRET_KEY" | base64 --decode | "$GPG_EXECUTABLE" --import -echo "$GPG_OWNERTRUST" | base64 --decode | "$GPG_EXECUTABLE" --import-ownertrust - -set -e - -mvn --settings .travis/settings.xml package gpg:sign deploy -Prelease -DskipTests -B -U; diff --git a/README.md b/README.md index 6a867c696..f160362dd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -[![Build Status](https://travis-ci.com/adorsys/datasafe.svg?branch=develop)](https://travis-ci.com/adorsys/datasafe) [![codecov](https://codecov.io/gh/adorsys/datasafe/branch/develop/graph/badge.svg)](https://codecov.io/gh/adorsys/datasafe) -[![Maintainability](https://api.codeclimate.com/v1/badges/06ae7d4cafc3012cee85/maintainability)](https://codeclimate.com/github/adorsys/datasafe/maintainability) +[![Maintainability](https://codeclimate.com/github/adorsys/datasafe.png)](https://codeclimate.com/github/adorsys/datasafe/maintainability) # Secure, Encrypted and Versioned Data Storage Library diff --git a/datasafe-business/pom.xml b/datasafe-business/pom.xml index 4c814b1ec..2ea45d796 100644 --- a/datasafe-business/pom.xml +++ b/datasafe-business/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2ETest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2EIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2ETest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2EIT.java index d544e2842..9cf4118e6 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2ETest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BaseE2EIT.java @@ -52,7 +52,7 @@ @Slf4j @RequiredArgsConstructor -public abstract class BaseE2ETest extends WithStorageProvider { +public abstract class BaseE2EIT extends WithStorageProvider { protected static final String PRIVATE_COMPONENT = "private"; protected static final String PRIVATE_FILES_COMPONENT = PRIVATE_COMPONENT + "/files"; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityIT.java index 8ee49c217..ce249ce74 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityIT.java @@ -47,7 +47,7 @@ * Tests that validates basic functionality - storing data to inbox, privatespace, listing files, etc. */ @Slf4j -class BasicFunctionalityTest extends BaseE2ETest { +class BasicFunctionalityIT extends BaseE2EIT { private static final int LARGE_SIZE = 10 * 1024 * 1024 + 100; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8Test.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8IT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8Test.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8IT.java index 7d9c233c1..344099e55 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8Test.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityUtf8IT.java @@ -15,7 +15,7 @@ * Tests that validates basic functionality - storing data to inbox, privatespace, listing files, etc. using UTF-8 paths. */ @Slf4j -class BasicFunctionalityUtf8Test extends BaseE2ETest { +class BasicFunctionalityUtf8IT extends BaseE2EIT { private static final String MESSAGE_ONE = "Hello here 1"; private static final String FOLDER = "folder1"; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyIT.java index 7a219bf06..665666f61 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithConcurrencyIT.java @@ -56,7 +56,7 @@ * Multithreaded test of basic operations. */ @Slf4j -class BasicFunctionalityWithConcurrencyTest extends BaseE2ETest { +class BasicFunctionalityWithConcurrencyIT extends BaseE2EIT { private static final int TIMEOUT_S = 30; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeIT.java index e970bcd3c..714696659 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/BasicFunctionalityWithPasswordChangeIT.java @@ -28,7 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -class BasicFunctionalityWithPasswordChangeTest extends BaseE2ETest { +class BasicFunctionalityWithPasswordChangeIT extends BaseE2EIT { @SneakyThrows @ParameterizedTest diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceIT.java index 9fcedfe97..9d2a623fb 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/DataTamperingResistanceIT.java @@ -38,7 +38,7 @@ * attacker is unable to modify encrypted text without being detected. */ @Slf4j -class DataTamperingResistanceTest extends BaseE2ETest { +class DataTamperingResistanceIT extends BaseE2EIT { private static final Set NOT_TO_REPLACE_IN_PATH = ImmutableSet.of('=', '/'); diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareIT.java similarity index 98% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareIT.java index 76e75fcc4..d07bd839a 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/KeyStoreTypeCompareIT.java @@ -24,7 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat; @Slf4j -public class KeyStoreTypeCompareTest extends BaseE2ETest { +public class KeyStoreTypeCompareIT extends BaseE2EIT { private final static int NUMBER_WRITES = 100; private final static int NUMBER_READS = 100; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityIT.java index a4e5830b8..c58607ac9 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/MultiDFSFunctionalityIT.java @@ -70,7 +70,7 @@ * access `credentialsBucket` that has user profile and his storage access keystore. */ @Slf4j -class MultiDFSFunctionalityTest extends BaseMockitoTest { +class MultiDFSFunctionalityIT extends BaseMockitoTest { private static final String REGION = "eu-central-1"; private static final String LOCALHOST = getDockerUri("http://127.0.0.1"); diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersionTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersion2EIT.java similarity index 94% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersionTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersion2EIT.java index cf7afb707..7f12fdcf2 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersionTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/ProfileContainsDatasafeVersion2EIT.java @@ -8,7 +8,7 @@ import static org.assertj.core.api.Assertions.assertThat; -class ProfileContainsDatasafeVersionTest extends BaseE2ETest { +class ProfileContainsDatasafeVersion2EIT extends BaseE2EIT { @Test @SneakyThrows diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationIT.java similarity index 98% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationIT.java index f6396957e..0035db8c2 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationIT.java @@ -1,5 +1,4 @@ package de.adorsys.datasafe.business.impl.e2e; - import de.adorsys.datasafe.business.impl.service.DaggerDefaultDatasafeServices; import de.adorsys.datasafe.business.impl.service.DefaultDatasafeServices; import de.adorsys.datasafe.directory.impl.profile.config.DefaultDFSConfig; @@ -32,7 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat; -class SchemeDelegationTest extends WithStorageProvider { +class SchemeDelegationIT extends WithStorageProvider { private Path fsPath; private Uri minioPath; @@ -125,4 +124,4 @@ public AbsoluteLocation privateProfile(UserID forUser) { ); } } -} +} \ No newline at end of file diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbIT.java similarity index 98% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbIT.java index 21a0b0397..59f526289 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/SchemeDelegationWithDbIT.java @@ -38,7 +38,7 @@ import static de.adorsys.datasafe.types.api.global.PathEncryptionId.AES_SIV; import static org.assertj.core.api.Assertions.assertThat; -class SchemeDelegationWithDbTest extends WithStorageProvider { +class SchemeDelegationWithDbIT extends WithStorageProvider { private static final Set ALLOWED_TABLES = ImmutableSet.of("users", "private_profiles", "public_profiles"); diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningIT.java similarity index 98% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningIT.java index f82960a16..5445cbaf3 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/StorageBasedVersioningIT.java @@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; @DisabledIfSystemProperty(named = WithStorageProvider.SKIP_CEPH, matches = "true") -class StorageBasedVersioningTest extends BaseE2ETest { +class StorageBasedVersioningIT extends BaseE2EIT { private static final String FILE = "file.txt"; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8Test.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8IT.java similarity index 98% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8Test.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8IT.java index eebdc6f71..4a71a3cc1 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8Test.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/UserProfileWithUtf8IT.java @@ -32,7 +32,7 @@ import static de.adorsys.datasafe.types.api.shared.Dirs.computeRelativePreventingDoubleUrlEncode; import static org.assertj.core.api.Assertions.assertThat; -class UserProfileWithUtf8Test extends WithStorageProvider { +class UserProfileWithUtf8IT extends WithStorageProvider { private Path fsPath; private Uri minioPath; diff --git a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataTest.java b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataIT.java similarity index 99% rename from datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataTest.java rename to datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataIT.java index d331737e1..a4a583237 100644 --- a/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataTest.java +++ b/datasafe-business/src/test/java/de/adorsys/datasafe/business/impl/e2e/VersionedDataIT.java @@ -36,7 +36,7 @@ * Validates software versioned operations. */ @Slf4j -public class VersionedDataTest extends BaseE2ETest { +public class VersionedDataIT extends BaseE2EIT { private static final String MESSAGE_ONE = "Hello here 1"; private static final String MESSAGE_TWO = "Hello here 2"; diff --git a/datasafe-cli/pom.xml b/datasafe-cli/pom.xml index a185dc1ad..13134382c 100644 --- a/datasafe-cli/pom.xml +++ b/datasafe-cli/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe - 2.0.2 + 2.0.2-SNAPSHOT datasafe-cli diff --git a/datasafe-directory/datasafe-directory-api/pom.xml b/datasafe-directory/datasafe-directory-api/pom.xml index 64078b587..151e3b189 100644 --- a/datasafe-directory/datasafe-directory-api/pom.xml +++ b/datasafe-directory/datasafe-directory-api/pom.xml @@ -3,7 +3,7 @@ de.adorsys datasafe-directory - 2.0.2 + 2.0.2-SNAPSHOT datasafe-directory-api diff --git a/datasafe-directory/datasafe-directory-impl/pom.xml b/datasafe-directory/datasafe-directory-impl/pom.xml index 8d01a516a..1cf886ad9 100644 --- a/datasafe-directory/datasafe-directory-impl/pom.xml +++ b/datasafe-directory/datasafe-directory-impl/pom.xml @@ -3,7 +3,7 @@ de.adorsys datasafe-directory - 2.0.2 + 2.0.2-SNAPSHOT datasafe-directory-impl diff --git a/datasafe-directory/pom.xml b/datasafe-directory/pom.xml index 7bbf7574f..4c0fac14c 100644 --- a/datasafe-directory/pom.xml +++ b/datasafe-directory/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-encryption/datasafe-encryption-api/pom.xml b/datasafe-encryption/datasafe-encryption-api/pom.xml index 4e453c981..59b38cfe2 100644 --- a/datasafe-encryption/datasafe-encryption-api/pom.xml +++ b/datasafe-encryption/datasafe-encryption-api/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-encryption - 2.0.2 + 2.0.2-SNAPSHOT datasafe-encryption-api diff --git a/datasafe-encryption/datasafe-encryption-impl/pom.xml b/datasafe-encryption/datasafe-encryption-impl/pom.xml index 7109cd9b4..dc95d9b60 100644 --- a/datasafe-encryption/datasafe-encryption-impl/pom.xml +++ b/datasafe-encryption/datasafe-encryption-impl/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-encryption - 2.0.2 + 2.0.2-SNAPSHOT datasafe-encryption-impl @@ -98,29 +98,24 @@ test-jar test - com.fasterxml.jackson.core jackson-databind - ${jackson-databind.version} test com.fasterxml.jackson.dataformat jackson-dataformat-yaml - ${jackson.version} test com.fasterxml.jackson.core jackson-annotations - ${jackson.version} test com.fasterxml.jackson.core jackson-core - ${jackson.version} test diff --git a/datasafe-encryption/pom.xml b/datasafe-encryption/pom.xml index e8597d40f..b7ac67034 100644 --- a/datasafe-encryption/pom.xml +++ b/datasafe-encryption/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-examples/datasafe-examples-business/pom.xml b/datasafe-examples/datasafe-examples-business/pom.xml index 6d9e1e396..af89b9596 100644 --- a/datasafe-examples/datasafe-examples-business/pom.xml +++ b/datasafe-examples/datasafe-examples-business/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-examples - 2.0.2 + 2.0.2-SNAPSHOT datasafe-examples-business diff --git a/datasafe-examples/datasafe-examples-customize-dagger/pom.xml b/datasafe-examples/datasafe-examples-customize-dagger/pom.xml index bd2050378..7a874ae12 100644 --- a/datasafe-examples/datasafe-examples-customize-dagger/pom.xml +++ b/datasafe-examples/datasafe-examples-customize-dagger/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-examples - 2.0.2 + 2.0.2-SNAPSHOT datasafe-examples-customize-dagger diff --git a/datasafe-examples/datasafe-examples-multidfs/pom.xml b/datasafe-examples/datasafe-examples-multidfs/pom.xml index 1693f8ab1..c6b349de3 100644 --- a/datasafe-examples/datasafe-examples-multidfs/pom.xml +++ b/datasafe-examples/datasafe-examples-multidfs/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-examples - 2.0.2 + 2.0.2-SNAPSHOT datasafe-examples-multidfs diff --git a/datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleTest.java b/datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleIT.java similarity index 99% rename from datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleTest.java rename to datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleIT.java index cf779ff93..29b7e5f36 100644 --- a/datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleTest.java +++ b/datasafe-examples/datasafe-examples-multidfs/src/test/java/de/adorsys/datasafe/examples/business/s3/MultiDfsWithCredentialsExampleIT.java @@ -58,7 +58,7 @@ * filesBucketOne, filesBucketTwo. */ @Slf4j -class MultiDfsWithCredentialsExampleTest { +class MultiDfsWithCredentialsExampleIT{ private static final String REGION = "eu-central-1"; private static final ExecutorService EXECUTOR = ExecutorServiceUtil.submitterExecutesOnStarvationExecutingService(4, 4); diff --git a/datasafe-examples/datasafe-examples-versioned-s3/pom.xml b/datasafe-examples/datasafe-examples-versioned-s3/pom.xml index fe1bd76db..a9944fdbb 100644 --- a/datasafe-examples/datasafe-examples-versioned-s3/pom.xml +++ b/datasafe-examples/datasafe-examples-versioned-s3/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-examples - 2.0.2 + 2.0.2-SNAPSHOT datasafe-examples-versioned-s3 diff --git a/datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageTest.java b/datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageIT.java similarity index 99% rename from datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageTest.java rename to datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageIT.java index 0f41f74b9..c8429a2cb 100644 --- a/datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageTest.java +++ b/datasafe-examples/datasafe-examples-versioned-s3/src/test/java/de/adorsys/datasafe/examples/business/s3/BaseUserOperationsWithDefaultDatasafeOnVersionedStorageIT.java @@ -43,7 +43,7 @@ */ @Slf4j @DisabledIfSystemProperty(named = "SKIP_CEPH", matches = "true") -class BaseUserOperationsWithDefaultDatasafeOnVersionedStorageTest { +class BaseUserOperationsWithDefaultDatasafeOnVersionedStorageIT{ private static final String MY_OWN_FILE_TXT = "my/own/file.txt"; diff --git a/datasafe-examples/pom.xml b/datasafe-examples/pom.xml index 98d612712..94dea6288 100644 --- a/datasafe-examples/pom.xml +++ b/datasafe-examples/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-inbox/datasafe-inbox-api/pom.xml b/datasafe-inbox/datasafe-inbox-api/pom.xml index bd7523ee2..a5f5d3603 100644 --- a/datasafe-inbox/datasafe-inbox-api/pom.xml +++ b/datasafe-inbox/datasafe-inbox-api/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-inbox - 2.0.2 + 2.0.2-SNAPSHOT datasafe-inbox-api diff --git a/datasafe-inbox/datasafe-inbox-impl/pom.xml b/datasafe-inbox/datasafe-inbox-impl/pom.xml index 19feb8c4d..fbc4773a9 100644 --- a/datasafe-inbox/datasafe-inbox-impl/pom.xml +++ b/datasafe-inbox/datasafe-inbox-impl/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-inbox - 2.0.2 + 2.0.2-SNAPSHOT datasafe-inbox-impl diff --git a/datasafe-inbox/pom.xml b/datasafe-inbox/pom.xml index 84bdb7ab9..53836fc16 100644 --- a/datasafe-inbox/pom.xml +++ b/datasafe-inbox/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-long-run-tests/README.md b/datasafe-long-run-tests/README.md index d49af3632..64fd0dce8 100644 --- a/datasafe-long-run-tests/README.md +++ b/datasafe-long-run-tests/README.md @@ -2,7 +2,7 @@ ### 1. Testing environment preparation Datasafe throughput tests was run on different Amazon EC2 instances. On each instance after creation was installed JDK, maven and git. Then datasafe project was pulled and executed -[RandomActionsOnDatasafeTest](datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeTest.java) which uses one bucket. Test was launched with all combinations of 2, 4, 8 and 16 parallel threads and 100kb, 1mb and 10mb file sizes. +[RandomActionsOnDatasafeIT](datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeIT.java) which uses one bucket. Test was launched with all combinations of 2, 4, 8 and 16 parallel threads and 100kb, 1mb and 10mb file sizes. #### Preparation commands for running test @@ -87,29 +87,29 @@ Multibucket test is in [RandomActionsOnMultiBucketTest](datasafe-business-tests- Example of raw test results: ```text -07:57:55.523 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - ==== Statistics for AMAZON with 2 threads and 100 Kb filesize: ==== -07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - WRITE : StatisticService.Percentiles(stat={50=35.0, 99=113.73, 90=79.0, 75=57.0, 95=87.65}, throughputPerThread=21.199480270806266) -07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - SHARE : StatisticService.Percentiles(stat={50=210.0, 99=537.75, 90=354.5, 75=299.5, 95=440.25}, throughputPerThread=4.598540145985401) -07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - LIST : StatisticService.Percentiles(stat={50=18.0, 99=45.39, 90=25.0, 75=21.0, 95=29.95}, throughputPerThread=53.27014218009479) -07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - DELETE : StatisticService.Percentiles(stat={50=17.0, 99=47.73, 90=26.0, 75=19.0, 95=35.65}, throughputPerThread=51.12889738382511) -07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - CREATE_USER : StatisticService.Percentiles(stat={50=397.0, 99=1020.61, 90=639.1, 75=552.0, 95=851.05}, throughputPerThread=2.0807324178110695) -07:57:55.533 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - READ : StatisticService.Percentiles(stat={50=16.0, 99=51.09, 90=18.0, 75=17.0, 95=21.0}, throughputPerThread=59.33647388994688) - -07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - ==== Statistics for AMAZON with 2 threads and 1024 Kb filesize: ==== -07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - WRITE : StatisticService.Percentiles(stat={50=106.0, 99=168.82, 90=132.0, 75=116.0, 95=146.0}, throughputPerThread=9.077864651966383) -07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - SHARE : StatisticService.Percentiles(stat={50=470.5, 99=855.25, 90=747.5, 75=670.25, 95=783.25}, throughputPerThread=2.120855074903215) -07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - LIST : StatisticService.Percentiles(stat={50=16.0, 99=53.39, 90=23.0, 75=19.0, 95=25.0}, throughputPerThread=55.22256067603419) -07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - DELETE : StatisticService.Percentiles(stat={50=17.0, 99=61.46, 90=30.0, 75=20.0, 95=45.0}, throughputPerThread=49.51411383618695) -07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - CREATE_USER : StatisticService.Percentiles(stat={50=359.0, 99=552.8199999999999, 90=470.2, 75=421.75, 95=516.1}, throughputPerThread=2.632271650434325) -07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - READ : StatisticService.Percentiles(stat={50=45.0, 99=79.09, 90=50.0, 75=47.0, 95=57.0}, throughputPerThread=21.367984118390183) - -08:04:13.146 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - ==== Statistics for AMAZON with 2 threads and 10240 Kb filesize: ==== -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - WRITE : StatisticService.Percentiles(stat={50=511.0, 99=1052.67, 90=617.0, 75=540.75, 95=682.0}, throughputPerThread=1.7302486534758463) -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - SHARE : StatisticService.Percentiles(stat={50=1503.5, 99=2321.5, 90=2135.5, 75=1822.0, 95=2188.5}, throughputPerThread=0.7149220110869652) -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - LIST : StatisticService.Percentiles(stat={50=15.0, 99=51.39, 90=23.0, 75=18.0, 95=30.9}, throughputPerThread=57.84273363524084) -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - DELETE : StatisticService.Percentiles(stat={50=21.0, 99=64.0, 90=36.3, 75=23.0, 95=48.65}, throughputPerThread=39.00483003736444) -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - CREATE_USER : StatisticService.Percentiles(stat={50=414.0, 99=584.28, 90=496.8, 75=469.75, 95=545.4}, throughputPerThread=2.3832221163012393) -08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - READ : StatisticService.Percentiles(stat={50=319.0, 99=458.53, 90=362.0, 75=334.0, 95=390.45}, throughputPerThread=3.051153201906971) +07:57:55.523 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - ==== Statistics for AMAZON with 2 threads and 100 Kb filesize: ==== +07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - WRITE : StatisticService.Percentiles(stat={50=35.0, 99=113.73, 90=79.0, 75=57.0, 95=87.65}, throughputPerThread=21.199480270806266) +07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - SHARE : StatisticService.Percentiles(stat={50=210.0, 99=537.75, 90=354.5, 75=299.5, 95=440.25}, throughputPerThread=4.598540145985401) +07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - LIST : StatisticService.Percentiles(stat={50=18.0, 99=45.39, 90=25.0, 75=21.0, 95=29.95}, throughputPerThread=53.27014218009479) +07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - DELETE : StatisticService.Percentiles(stat={50=17.0, 99=47.73, 90=26.0, 75=19.0, 95=35.65}, throughputPerThread=51.12889738382511) +07:57:55.532 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - CREATE_USER : StatisticService.Percentiles(stat={50=397.0, 99=1020.61, 90=639.1, 75=552.0, 95=851.05}, throughputPerThread=2.0807324178110695) +07:57:55.533 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - READ : StatisticService.Percentiles(stat={50=16.0, 99=51.09, 90=18.0, 75=17.0, 95=21.0}, throughputPerThread=59.33647388994688) + +07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - ==== Statistics for AMAZON with 2 threads and 1024 Kb filesize: ==== +07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - WRITE : StatisticService.Percentiles(stat={50=106.0, 99=168.82, 90=132.0, 75=116.0, 95=146.0}, throughputPerThread=9.077864651966383) +07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - SHARE : StatisticService.Percentiles(stat={50=470.5, 99=855.25, 90=747.5, 75=670.25, 95=783.25}, throughputPerThread=2.120855074903215) +07:59:13.117 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - LIST : StatisticService.Percentiles(stat={50=16.0, 99=53.39, 90=23.0, 75=19.0, 95=25.0}, throughputPerThread=55.22256067603419) +07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - DELETE : StatisticService.Percentiles(stat={50=17.0, 99=61.46, 90=30.0, 75=20.0, 95=45.0}, throughputPerThread=49.51411383618695) +07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - CREATE_USER : StatisticService.Percentiles(stat={50=359.0, 99=552.8199999999999, 90=470.2, 75=421.75, 95=516.1}, throughputPerThread=2.632271650434325) +07:59:13.118 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - READ : StatisticService.Percentiles(stat={50=45.0, 99=79.09, 90=50.0, 75=47.0, 95=57.0}, throughputPerThread=21.367984118390183) + +08:04:13.146 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - ==== Statistics for AMAZON with 2 threads and 10240 Kb filesize: ==== +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - WRITE : StatisticService.Percentiles(stat={50=511.0, 99=1052.67, 90=617.0, 75=540.75, 95=682.0}, throughputPerThread=1.7302486534758463) +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - SHARE : StatisticService.Percentiles(stat={50=1503.5, 99=2321.5, 90=2135.5, 75=1822.0, 95=2188.5}, throughputPerThread=0.7149220110869652) +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - LIST : StatisticService.Percentiles(stat={50=15.0, 99=51.39, 90=23.0, 75=18.0, 95=30.9}, throughputPerThread=57.84273363524084) +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - DELETE : StatisticService.Percentiles(stat={50=21.0, 99=64.0, 90=36.3, 75=23.0, 95=48.65}, throughputPerThread=39.00483003736444) +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - CREATE_USER : StatisticService.Percentiles(stat={50=414.0, 99=584.28, 90=496.8, 75=469.75, 95=545.4}, throughputPerThread=2.3832221163012393) +08:04:13.147 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - READ : StatisticService.Percentiles(stat={50=319.0, 99=458.53, 90=362.0, 75=334.0, 95=390.45}, throughputPerThread=3.051153201906971) ``` Then results was parsed and transformed with help of [parse_script.groovy](datasafe-business-tests-random-actions/parse_script.groovy) to suitable for charts builder view. diff --git a/datasafe-long-run-tests/datasafe-business-tests-random-actions/README.md b/datasafe-long-run-tests/datasafe-business-tests-random-actions/README.md index ca214bd03..03da14106 100644 --- a/datasafe-long-run-tests/datasafe-business-tests-random-actions/README.md +++ b/datasafe-long-run-tests/datasafe-business-tests-random-actions/README.md @@ -8,7 +8,7 @@ Tests can be disabled using (for performance reasons): `DISABLE_RANDOM_ACTIONS_TEST` system property equal to `true` Tests for Datasafe: - - [RandomActionsOnDatasafeTest](src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeTest.java) + - [RandomActionsOnDatasafeIT](src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeIT.java) Tests for Datasafe-wrapper: - [RandomActionsOnSimpleDatasafeAdapterTest](src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterTest.java) @@ -47,13 +47,13 @@ This way, we achieve parallel execution of random actions and can calculate perf These tests run on test plan matrix of (Content-size x Thread-count). As the result they produce following output in logs: ```text -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - ==== Statistics for FILESYSTEM with 11 threads and 3 Mb filesize: ==== -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - WRITE : StatisticService.Percentiles(stat={50=398.0, 99=629.78, 90=493.8, 75=436.0, 95=515.9}, throughputPerThread=2.4650780608052587) -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - LIST : StatisticService.Percentiles(stat={50=2.0, 99=12.0, 90=7.0, 75=4.0, 95=8.0}, throughputPerThread=389.06752411575565) -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - SHARE : StatisticService.Percentiles(stat={50=1987.5, 99=4022.18, 90=3323.7, 75=2448.0, 95=3456.65}, throughputPerThread=0.5068871369708885) -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - CREATE_USER : StatisticService.Percentiles(stat={50=461.0, 99=830.83, 90=658.3, 75=544.0, 95=754.15}, throughputPerThread=2.048340843916428) -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - READ : StatisticService.Percentiles(stat={50=511.0, 99=690.92, 90=602.6, 75=551.0, 95=646.0}, throughputPerThread=1.9656450727288677) -12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeTest - DELETE : StatisticService.Percentiles(stat={50=3.0, 99=8.05, 90=4.0, 75=4.0, 95=5.0}, throughputPerThread=397.5903614457831) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - ==== Statistics for FILESYSTEM with 11 threads and 3 Mb filesize: ==== +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - WRITE : StatisticService.Percentiles(stat={50=398.0, 99=629.78, 90=493.8, 75=436.0, 95=515.9}, throughputPerThread=2.4650780608052587) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - LIST : StatisticService.Percentiles(stat={50=2.0, 99=12.0, 90=7.0, 75=4.0, 95=8.0}, throughputPerThread=389.06752411575565) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - SHARE : StatisticService.Percentiles(stat={50=1987.5, 99=4022.18, 90=3323.7, 75=2448.0, 95=3456.65}, throughputPerThread=0.5068871369708885) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - CREATE_USER : StatisticService.Percentiles(stat={50=461.0, 99=830.83, 90=658.3, 75=544.0, 95=754.15}, throughputPerThread=2.048340843916428) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - READ : StatisticService.Percentiles(stat={50=511.0, 99=690.92, 90=602.6, 75=551.0, 95=646.0}, throughputPerThread=1.9656450727288677) +12:51:36.383 [main] INFO de.adorsys.datasafe.business.impl.e2e.randomactions.RandomActionsOnDatasafeIT - DELETE : StatisticService.Percentiles(stat={50=3.0, 99=8.05, 90=4.0, 75=4.0, 95=5.0}, throughputPerThread=397.5903614457831) ``` Where, ```text diff --git a/datasafe-long-run-tests/datasafe-business-tests-random-actions/pom.xml b/datasafe-long-run-tests/datasafe-business-tests-random-actions/pom.xml index 9fe35e5b0..a7f4bdd31 100644 --- a/datasafe-long-run-tests/datasafe-business-tests-random-actions/pom.xml +++ b/datasafe-long-run-tests/datasafe-business-tests-random-actions/pom.xml @@ -5,7 +5,7 @@ datasafe-long-run-tests de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeTest.java b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeIT.java similarity index 97% rename from datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeTest.java rename to datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeIT.java index 494329efe..c4f3a1575 100644 --- a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeTest.java +++ b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnDatasafeIT.java @@ -23,7 +23,7 @@ */ @Slf4j @DisabledIfSystemProperty(named = DISABLE_RANDOM_ACTIONS_TEST, matches = "true") -class RandomActionsOnDatasafeTest extends BaseRandomActions { +class RandomActionsOnDatasafeIT extends BaseRandomActions { @ParameterizedTest @MethodSource("actionsOnStoragesAndThreadsAndFilesizes") diff --git a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketTest.java b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketIT.java similarity index 97% rename from datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketTest.java rename to datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketIT.java index 940634947..d72ae3662 100644 --- a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketTest.java +++ b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnMultiBucketIT.java @@ -16,7 +16,7 @@ @Slf4j @EnabledIfSystemProperty(named = ENABLE_MULTI_BUCKET_TEST, matches = "true") -class RandomActionsOnMultiBucketTest extends BaseRandomActions { +class RandomActionsOnMultiBucketIT extends BaseRandomActions { @ParameterizedTest @MethodSource("actionsOnStoragesAndThreadsAndFilesizes") diff --git a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterTest.java b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterIT.java similarity index 99% rename from datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterTest.java rename to datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterIT.java index 3cc92af44..4e782034a 100644 --- a/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterTest.java +++ b/datasafe-long-run-tests/datasafe-business-tests-random-actions/src/test/java/de/adorsys/datasafe/business/impl/e2e/randomactions/RandomActionsOnSimpleDatasafeAdapterIT.java @@ -68,7 +68,7 @@ * Imitates close-to-production SimpleDatasafeAdapter deployment. */ @DisabledIfSystemProperty(named = DISABLE_RANDOM_ACTIONS_TEST, matches = "true") -class RandomActionsOnSimpleDatasafeAdapterTest extends BaseRandomActions { +class RandomActionsOnSimpleDatasafeAdapterIT extends BaseRandomActions { @ParameterizedTest @MethodSource("actionsOnStoragesAndThreadsAndFilesizes") diff --git a/datasafe-long-run-tests/pom.xml b/datasafe-long-run-tests/pom.xml index 71593ffc8..92351d15c 100644 --- a/datasafe-long-run-tests/pom.xml +++ b/datasafe-long-run-tests/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-metainfo/datasafe-metainfo-version-api/pom.xml b/datasafe-metainfo/datasafe-metainfo-version-api/pom.xml index e0bc9924f..f8bfb9be9 100644 --- a/datasafe-metainfo/datasafe-metainfo-version-api/pom.xml +++ b/datasafe-metainfo/datasafe-metainfo-version-api/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-metainfo - 2.0.2 + 2.0.2-SNAPSHOT datasafe-metainfo-version-api diff --git a/datasafe-metainfo/datasafe-metainfo-version-impl/pom.xml b/datasafe-metainfo/datasafe-metainfo-version-impl/pom.xml index d07acfb1f..edd675f42 100644 --- a/datasafe-metainfo/datasafe-metainfo-version-impl/pom.xml +++ b/datasafe-metainfo/datasafe-metainfo-version-impl/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-metainfo - 2.0.2 + 2.0.2-SNAPSHOT datasafe-metainfo-version-impl diff --git a/datasafe-metainfo/pom.xml b/datasafe-metainfo/pom.xml index 9811a2401..73a68b219 100644 --- a/datasafe-metainfo/pom.xml +++ b/datasafe-metainfo/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-privatestore/datasafe-privatestore-api/pom.xml b/datasafe-privatestore/datasafe-privatestore-api/pom.xml index 662e128c0..a010a6239 100644 --- a/datasafe-privatestore/datasafe-privatestore-api/pom.xml +++ b/datasafe-privatestore/datasafe-privatestore-api/pom.xml @@ -5,7 +5,7 @@ datasafe-privatestore de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-privatestore/datasafe-privatestore-impl/pom.xml b/datasafe-privatestore/datasafe-privatestore-impl/pom.xml index 1ba432ee7..4c16ea2cf 100644 --- a/datasafe-privatestore/datasafe-privatestore-impl/pom.xml +++ b/datasafe-privatestore/datasafe-privatestore-impl/pom.xml @@ -5,7 +5,7 @@ datasafe-privatestore de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-privatestore/pom.xml b/datasafe-privatestore/pom.xml index 56ac365c5..95e360d08 100644 --- a/datasafe-privatestore/pom.xml +++ b/datasafe-privatestore/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-rest-impl/datasafe.postman_collection.json b/datasafe-rest-impl/datasafe.postman_collection.json index 524b1dcfb..e17f46f1d 100644 --- a/datasafe-rest-impl/datasafe.postman_collection.json +++ b/datasafe-rest-impl/datasafe.postman_collection.json @@ -1,232 +1,432 @@ { "info": { - "_postman_id": "54d63510-b402-4a2c-b518-50e79a04d569", + "_postman_id": "db124a60-8dee-44e6-9bf0-97d18e0a9c14", "name": "Datasafe", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "18419826" }, "item": [ { - "name": "authenticate", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\"userName\":\"username\",\"password\":\"password\"}" - }, - "url": { - "raw": "{{host}}/api/authenticate", - "host": [ - "{{host}}" + "name": "user", + "item": [ + { + "name": "authenticate", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.collectionVariables.set(\"token\", pm.response.headers.get('token'))", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "api", - "authenticate" - ] - } - }, - "response": [] - }, - { - "name": "create user", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text", + "disabled": true + }, + { + "key": "Origin", + "value": "http://localhost:8080", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\"userName\":\"username\",\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{host}}/api/authenticate", + "host": [ + "{{host}}" + ], + "path": [ + "api", + "authenticate" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"userName\":\"ver\",\n\t\"password\":\"ver\"\n}" + "response": [] }, - "url": { - "raw": "{{host}}/user", - "host": [ - "{{host}}" + { + "name": "delete user Alice", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "user" - ] - } - }, - "response": [] - }, - { - "name": "delete user", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "name": "Content-Type", - "value": "application/json", - "type": "text" - }, - { - "key": "user", - "value": "Max", - "type": "text" - }, - { - "key": "password", - "value": "123", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/user/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "delete user Bob", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "user", - "" - ] - } - }, - "response": [] - }, - { - "name": "store document", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/tx/store/a.txt" - } + "response": [] }, - "url": { - "raw": "{{host}}/document/test11.txt", - "host": [ - "{{host}}" + { + "name": "create user Alice", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "document", - "test11.txt" - ] - } - }, - "response": [] - }, - { - "name": "list documents", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "vvv", - "type": "text" - }, - { - "key": "password", - "value": "vvv", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"userName\":\"Alice\",\n\t\"password\":\"123\"\n}" + }, + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/documents/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "create user Bob", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "documents", - "" - ] + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"userName\":\"Bob\",\n\t\"password\":\"123\"\n}" + }, + "url": { + "raw": "{{host}}/user", + "host": [ + "{{host}}" + ], + "path": [ + "user" + ] + } + }, + "response": [] } - }, - "response": [] + ] }, { - "name": "read document", - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" + "name": "private", + "item": [ + { + "name": "store document", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/document/test11.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "list documents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "document", - "test11.txt" - ] - } - }, - "response": [ + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/documents", + "host": [ + "{{host}}" + ], + "path": [ + "documents" + ] + } + }, + "response": [] + }, { "name": "read document", - "originalRequest": { + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"hello world!\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { "method": "GET", "header": [ { @@ -236,455 +436,730 @@ }, { "key": "user", - "value": "ddd", + "value": "Alice", "type": "text" }, { "key": "password", - "value": "ddd", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", "type": "text" } ], "url": { - "raw": "{{host}}/document/deep/path/test.txt", + "raw": "{{host}}/document/test.txt", "host": [ "{{host}}" ], "path": [ "document", - "deep", - "path", "test.txt" ] } }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Transfer-Encoding", - "value": "chunked" - }, + "response": [] + }, + { + "name": "delete document", + "event": [ { - "key": "Date", - "value": "Fri, 24 May 2019 11:50:22 GMT" + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } } ], - "cookie": [], - "body": "test" - } - ] - }, - { - "name": "delete document", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "iii", - "type": "text" - }, - { - "key": "password", - "value": "iii", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/document/deep/path/test2.txt", - "host": [ - "{{host}}" - ], - "path": [ - "document", - "deep", - "path", - "test2.txt" - ] + "response": [] } - }, - "response": [] + ] }, { - "name": "send to inbox", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" - }, - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/test.txt" - } - }, - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "name": "versioned", + "item": [ + { + "name": "versioned write", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox read", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned write 2", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox delete", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "iii", - "type": "text" - }, - { - "key": "password", - "value": "iii", - "type": "text" + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "multipart/form-data", + "type": "text" + }, + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb4517-de20-4860-b895-814e47ad657f" + } + ] + }, + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/test2.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned list (last version)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "test2.txt" - ] - } - }, - "response": [] - }, - { - "name": "inbox list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/inbox/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versions list", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(2);", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "inbox", - "" - ] - } - }, - "response": [] - }, - { - "name": "version list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "type": "text", - "value": "ver" - }, - { - "key": "password", - "type": "text", - "value": "ver" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "type": "text", + "value": "Alice" + }, + { + "key": "password", + "type": "text", + "value": "123" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versions/list/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versions", + "list", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versions/list/", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned read (last version)", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"yet another file\");", + "})" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versions", - "list", - "" - ] - } - }, - "response": [] - }, - { - "name": "versioned read", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/octet-stream", - "type": "text" + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/octet-stream", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/test10.txt", - "host": [ - "{{host}}" + "response": [] + }, + { + "name": "versioned delete", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versioned", - "test10.txt" - ] - } - }, - "response": [] - }, - { - "name": "versioned delete", - "request": { - "method": "DELETE", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/versioned/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "versioned", + "test.txt" + ] + } }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/test4.txt", - "host": [ - "{{host}}" - ], - "path": [ - "versioned", - "test4.txt" - ] + "response": [] } - }, - "response": [] + ] }, { - "name": "versioned write", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream", - "type": "text" + "name": "inbox", + "item": [ + { + "name": "send to inbox", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "user", + "value": "Alice", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + }, + { + "key": "recipients", + "value": "Bob", + "type": "text" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "postman-cloud:///1eeb44d1-546d-4870-ae7e-c2f44aeee23e" + } + ] + }, + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } }, - { - "key": "user", - "value": "ver", - "type": "text" + "response": [] + }, + { + "name": "inbox list", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "var rb = JSON.parse(responseBody);", + "", + "pm.test(\"response contains one file\", () => {", + " pm.expect(rb.length).to.eql(1);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "Accept", + "value": "application/json", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/documents", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "documents" + ] + } }, - { - "key": "password", - "value": "ver", - "type": "text" + "response": [] + }, + { + "name": "inbox read", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "", + "pm.test(\"file content is read\", () => {", + " pm.expect(responseBody).to.eql(\"hello world!\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "Accept", + "value": "application/octet-stream", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - } - ], - "body": { - "mode": "file", - "file": { - "src": "/Users/maxim/parallel_transactions_merge_logic_fix.patch" - } + "response": [] }, - "url": { - "raw": "{{host}}/versioned/test10.txt", - "host": [ - "{{host}}" + { + "name": "inbox delete", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Success', function() {", + " pm.response.to.have.status(200)", + "})", + "" + ], + "type": "text/javascript" + } + } ], - "path": [ - "versioned", - "test10.txt" - ] + "request": { + "method": "DELETE", + "header": [ + { + "key": "user", + "value": "Bob", + "type": "text" + }, + { + "key": "password", + "value": "123", + "type": "text" + }, + { + "key": "token", + "value": "{{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{host}}/inbox/document/test.txt", + "host": [ + "{{host}}" + ], + "path": [ + "inbox", + "document", + "test.txt" + ] + } + }, + "response": [] } - }, - "response": [] + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{token}}", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } }, { - "name": "versioned list", - "request": { - "method": "GET", - "header": [ - { - "key": "user", - "value": "ver", - "type": "text" - }, - { - "key": "password", - "value": "ver", - "type": "text" - }, - { - "key": "token", - "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJzZWN1cmUtYXBpIiwiYXVkIjoic2VjdXJlLWFwcCIsInN1YiI6InVzZXJuYW1lIiwiZXhwIjoxNTYxMzA0MTA4LCJyb2wiOlsiUk9MRV9VU0VSIl19.Ungu5hob8mbwb7GfWfvqj1VsrNNv1pN6UEMJYJHSAHBicRlsYVbRAE7Ju_N1nnjdoZ6TSs4hireff92SkXvesQ", - "type": "text" - }, - { - "key": "Accept", - "value": "application/json", - "type": "text" - }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "url": { - "raw": "{{host}}/versioned/", - "host": [ - "{{host}}" - ], - "path": [ - "versioned", - "" - ] - } - }, - "response": [] + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "host", + "value": "http://localhost:8080", + "type": "string" + }, + { + "key": "token", + "value": "" } ] } \ No newline at end of file diff --git a/datasafe-rest-impl/pom.xml b/datasafe-rest-impl/pom.xml index 80a61146d..528c6c630 100644 --- a/datasafe-rest-impl/pom.xml +++ b/datasafe-rest-impl/pom.xml @@ -5,23 +5,22 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT datasafe-rest-impl - 2.0.2 datasafe-rest-impl Spring Boot DataSafe Application 3.1.2 2.9.2 - 0.10.5 + 0.12.4 3.0.0 2.2.4 1.6.0 3.0.2 - 2.3.0 + 2.3.0 @@ -66,11 +65,6 @@ spring-boot-starter-web ${spring-boot.version} - - org.yaml - snakeyaml - 2.1 - org.springframework.boot spring-boot-starter-actuator @@ -88,20 +82,11 @@ ${spring-boot.version} true + jakarta.validation jakarta.validation-api - ${jakarta.validation-api.varsion} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson-databind.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} + ${jakarta.validation-api.version} io.jsonwebtoken diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java index 592f16087..a444f0423 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java @@ -7,6 +7,7 @@ import io.jsonwebtoken.Jwts; import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.UnsupportedJwtException; +import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.security.SignatureException; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -19,9 +20,9 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; +import javax.crypto.SecretKey; import java.io.IOException; import java.util.List; -import java.util.stream.Collectors; @Slf4j public class JwtAuthorizationFilter extends BasicAuthenticationFilter { @@ -74,19 +75,20 @@ private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest private UsernamePasswordAuthenticationToken tryAuthenticate(String token) { byte[] signingKey = securityProperties.getJwtSecret().getBytes(); + SecretKey secret = Keys.hmacShaKeyFor(signingKey); Jws parsedToken = Jwts.parser() - .setSigningKey(signingKey) - .parseClaimsJws(token.replace(SecurityConstants.TOKEN_PREFIX, "")); + .verifyWith(secret).build() + .parseSignedClaims(token.replace(SecurityConstants.TOKEN_PREFIX, "")); String username = parsedToken - .getBody() + .getPayload() .getSubject(); - List authorities = ((List) parsedToken.getBody() + List authorities = ((List) parsedToken.getPayload() .get(SecurityConstants.ROLES_NAME)).stream() .map(authority -> new SimpleGrantedAuthority((String) authority)) - .collect(Collectors.toList()); + .toList(); if (!Strings.isNullOrEmpty(username)) { return new UsernamePasswordAuthenticationToken(username, null, authorities); diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java index f38cd7aae..b6bc4e98a 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java @@ -26,10 +26,13 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.servlet.handler.HandlerMappingIntrospector; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import static de.adorsys.datasafe.rest.impl.security.SecurityConstants.TOKEN_HEADER; +import static org.springframework.security.config.Customizer.withDefaults; @Configuration @EnableWebSecurity @@ -44,7 +47,7 @@ public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http, MvcRequestMatcher.Builder mvc, AuthenticationManager authenticationManager) throws Exception { - MvcRequestMatcher[] SWAGGER_RESOURCES = { + MvcRequestMatcher[] swaggerResources = { mvc.pattern("/v2/api-docs"), mvc.pattern("/configuration/ui"), mvc.pattern("/swagger-resources"), @@ -54,11 +57,10 @@ public SecurityFilterChain filterChain(HttpSecurity http, MvcRequestMatcher.Buil mvc.pattern("/swagger-resources/configuration/ui"), mvc.pattern("/swagger-ui.html") }; - - http.cors(AbstractHttpConfigurer::disable) + http.cors(withDefaults()) .csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(authz -> authz - .requestMatchers(SWAGGER_RESOURCES).permitAll() + .requestMatchers(swaggerResources).permitAll() .requestMatchers(mvc.pattern("/static/**")).permitAll() .requestMatchers(mvc.pattern(SecurityConstants.AUTH_LOGIN_URL)).permitAll() .requestMatchers(mvc.pattern(HttpMethod.GET, "/**")).permitAll() @@ -77,8 +79,8 @@ MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) { } @Bean - public InMemoryUserDetailsManager userDetailsService(PasswordEncoder passwordEncoder) { - UserDetails user = User.withDefaultPasswordEncoder() + public InMemoryUserDetailsManager userDetailsService(PasswordEncoder encoder) { + UserDetails user = User.builder().passwordEncoder(encoder::encode) .username(securityProperties.getDefaultUser()) .password(securityProperties.getDefaultPassword()) .authorities("ROLE_USER") @@ -101,19 +103,15 @@ public PasswordEncoder passwordEncoder() { } @Bean - public CorsConfigurationSource corsConfigurationSource() { + CorsConfigurationSource corsConfigurationSource() { + CorsConfiguration configuration = new CorsConfiguration(); + configuration.setAllowedOrigins(List.of("http://localhost:4200")); + configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE")); + configuration.setAllowedHeaders(List.of("*")); + configuration.setAllowCredentials(true); + configuration.addExposedHeader(TOKEN_HEADER); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - - CorsConfiguration authConfig = new CorsConfiguration().applyPermitDefaultValues(); - authConfig.addExposedHeader(TOKEN_HEADER); - source.registerCorsConfiguration(SecurityConstants.AUTH_LOGIN_URL, authConfig); - - CorsConfiguration globalConfig = new CorsConfiguration().applyPermitDefaultValues(); - globalConfig.addAllowedMethod(HttpMethod.OPTIONS); - globalConfig.addAllowedMethod(HttpMethod.PUT); - globalConfig.addAllowedMethod(HttpMethod.DELETE); - source.registerCorsConfiguration("/**", globalConfig); - + source.registerCorsConfiguration("/**", configuration); return source; } diff --git a/datasafe-runtime-delegate/pom.xml b/datasafe-runtime-delegate/pom.xml index f1e6e5d9c..e099bed80 100644 --- a/datasafe-runtime-delegate/pom.xml +++ b/datasafe-runtime-delegate/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe - 2.0.2 + 2.0.2-SNAPSHOT datasafe-runtime-delegate diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-api/pom.xml b/datasafe-simple-adapter/datasafe-simple-adapter-api/pom.xml index af5ce5a90..3d5755e2a 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-api/pom.xml +++ b/datasafe-simple-adapter/datasafe-simple-adapter-api/pom.xml @@ -5,7 +5,7 @@ datasafe-simple-adapter de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-impl/pom.xml b/datasafe-simple-adapter/datasafe-simple-adapter-impl/pom.xml index d9cf19796..af98b24da 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-impl/pom.xml +++ b/datasafe-simple-adapter/datasafe-simple-adapter-impl/pom.xml @@ -5,7 +5,7 @@ datasafe-simple-adapter de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/pom.xml b/datasafe-simple-adapter/datasafe-simple-adapter-spring/pom.xml index 4e1543476..853af91b2 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/pom.xml +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/pom.xml @@ -5,7 +5,7 @@ datasafe-simple-adapter de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java index 44b1c37ca..f6f6277bf 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForFilesystemTest.java @@ -6,7 +6,7 @@ import org.springframework.test.context.ActiveProfiles; @ActiveProfiles("filesystem") -public class InjectionForFilesystemTest extends InjectionTest { +public class InjectionForFilesystemTest extends InjectionIT { @Autowired SimpleDatasafeService datasafeService; diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java similarity index 97% rename from datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java rename to datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java index 0a4f14085..92dac7b94 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionForMinioIT.java @@ -19,7 +19,7 @@ @Slf4j @ActiveProfiles("minio") @UseDatasafeSpringConfiguration -public class InjectionForMinioTest extends InjectionTest { +public class InjectionForMinioIT extends InjectionIT { @Autowired private SpringDFSCredentialProperties dfsCredentialProperties; diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java similarity index 99% rename from datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java rename to datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java index e10f39431..76b2c0505 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionIT.java @@ -47,7 +47,7 @@ @ContextConfiguration @SpringBootConfiguration @UseDatasafeSpringConfiguration -public class InjectionTest extends WithStorageProvider { +public class InjectionIT extends WithStorageProvider { public void testCreateUser(SimpleDatasafeService datasafeService) { assertThat(datasafeService).isNotNull(); diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java similarity index 95% rename from datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java rename to datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java index 52b6636ea..f7ab930ac 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForFilesystemIT.java @@ -18,7 +18,7 @@ @Slf4j @ActiveProfiles("fs-withoutPathEncryption") @UseDatasafeSpringConfiguration -public class InjectionWithoutPathEncryptionForFilesystemTest extends InjectionTest { +public class InjectionWithoutPathEncryptionForFilesystemIT extends InjectionIT { @Autowired private SpringDFSCredentialProperties dfsCredentialProperties; diff --git a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java similarity index 96% rename from datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java rename to datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java index 023f93952..e97aad298 100644 --- a/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioTest.java +++ b/datasafe-simple-adapter/datasafe-simple-adapter-spring/src/test/java/de/adorsys/datasafe/simple/adapter/spring/InjectionWithoutPathEncryptionForMinioIT.java @@ -19,7 +19,7 @@ @Slf4j @ActiveProfiles("minio-withoutPathEncryption") @UseDatasafeSpringConfiguration -public class InjectionWithoutPathEncryptionForMinioTest extends InjectionTest { +public class InjectionWithoutPathEncryptionForMinioIT extends InjectionIT { @Autowired private SpringDFSCredentialProperties dfsCredentialProperties; diff --git a/datasafe-simple-adapter/pom.xml b/datasafe-simple-adapter/pom.xml index 1db1b4c3c..02e9a2f82 100644 --- a/datasafe-simple-adapter/pom.xml +++ b/datasafe-simple-adapter/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-storage/datasafe-storage-api/pom.xml b/datasafe-storage/datasafe-storage-api/pom.xml index 640b8bb51..17e0d4f93 100644 --- a/datasafe-storage/datasafe-storage-api/pom.xml +++ b/datasafe-storage/datasafe-storage-api/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe-storage - 2.0.2 + 2.0.2-SNAPSHOT datasafe-storage-api diff --git a/datasafe-storage/datasafe-storage-impl-db/pom.xml b/datasafe-storage/datasafe-storage-impl-db/pom.xml index b54ca648e..e408805e0 100644 --- a/datasafe-storage/datasafe-storage-impl-db/pom.xml +++ b/datasafe-storage/datasafe-storage-impl-db/pom.xml @@ -5,7 +5,7 @@ datasafe-storage de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-storage/datasafe-storage-impl-fs/pom.xml b/datasafe-storage/datasafe-storage-impl-fs/pom.xml index 5c38d1b0a..48588ce8e 100644 --- a/datasafe-storage/datasafe-storage-impl-fs/pom.xml +++ b/datasafe-storage/datasafe-storage-impl-fs/pom.xml @@ -5,7 +5,7 @@ datasafe-storage de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-storage/datasafe-storage-impl-s3/pom.xml b/datasafe-storage/datasafe-storage-impl-s3/pom.xml index e1ee5a8c4..4f16cd52d 100644 --- a/datasafe-storage/datasafe-storage-impl-s3/pom.xml +++ b/datasafe-storage/datasafe-storage-impl-s3/pom.xml @@ -5,7 +5,7 @@ datasafe-storage de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamTest.java b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamIT.java similarity index 99% rename from datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamTest.java rename to datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamIT.java index bdbae0d63..df98f6d62 100644 --- a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamTest.java +++ b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3StorageOutputStreamIT.java @@ -30,7 +30,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -class MultipartUploadS3StorageOutputStreamTest extends BaseMockitoTest { +class MultipartUploadS3StorageOutputStreamIT extends BaseMockitoTest { private final byte[] shortChunk = randomBytes(100); private final byte[] exactOneMultipartChunk = randomBytes(BUFFER_SIZE); diff --git a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceTest.java b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceIT.java similarity index 98% rename from datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceTest.java rename to datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceIT.java index e8b52f3a8..f0b82c537 100644 --- a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceTest.java +++ b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/MultipartUploadS3SystemStorageServiceIT.java @@ -28,7 +28,7 @@ import static org.assertj.core.api.Assertions.fail; @Slf4j -public class MultipartUploadS3SystemStorageServiceTest extends S3SystemStorageServiceTest { +public class MultipartUploadS3SystemStorageServiceIT extends S3SystemStorageServiceIT { @TempDir protected Path tempDir; diff --git a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceTest.java b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceIT.java similarity index 99% rename from datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceTest.java rename to datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceIT.java index cb808a6d0..ee66097af 100644 --- a/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceTest.java +++ b/datasafe-storage/datasafe-storage-impl-s3/src/test/java/de/adorsys/datasafe/storage/impl/s3/S3SystemStorageServiceIT.java @@ -34,7 +34,7 @@ @Slf4j //TODO: Extract stuff related container start/stop/clear to separate class. Used in datasafe-business and in datasafe-storage-impl-s3 -class S3SystemStorageServiceTest extends BaseMockitoTest { +class S3SystemStorageServiceIT extends BaseMockitoTest { private static final String FILE = "file"; private static final String MESSAGE = "hello"; diff --git a/datasafe-storage/pom.xml b/datasafe-storage/pom.xml index 70881ff1e..505e45a0f 100644 --- a/datasafe-storage/pom.xml +++ b/datasafe-storage/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-test-storages/pom.xml b/datasafe-test-storages/pom.xml index e1fa0d67b..5b3956ce8 100644 --- a/datasafe-test-storages/pom.xml +++ b/datasafe-test-storages/pom.xml @@ -5,7 +5,7 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT 4.0.0 diff --git a/datasafe-types-api/pom.xml b/datasafe-types-api/pom.xml index 97ceaa5d9..1ede06a31 100644 --- a/datasafe-types-api/pom.xml +++ b/datasafe-types-api/pom.xml @@ -5,7 +5,7 @@ de.adorsys datasafe - 2.0.2 + 2.0.2-SNAPSHOT datasafe-types-api diff --git a/frontend/README.md b/frontend/README.md index ca8275e3a..174a51035 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -3,6 +3,8 @@ Use `npm run-script ng:serve:web` for local development Use `npm run-script start` for electron development +Use `ng serve -c dev` if you need to debug + ### Notes - API url and credentials are provided by env.js file (API_URL, API_USERNAME, API_PASSWORD). Credentials (API_USERNAME, API_PASSWORD) are intended for local use only. diff --git a/frontend/datasafe-ui/angular.json b/frontend/datasafe-ui/angular.json index 544edcee8..bb53be0a1 100755 --- a/frontend/datasafe-ui/angular.json +++ b/frontend/datasafe-ui/angular.json @@ -40,7 +40,6 @@ "optimization": true, "outputHashing": "all", "sourceMap": false, - "extractCss": true, "namedChunks": false, "aot": true, "extractLicenses": true, @@ -53,6 +52,17 @@ "maximumError": "5mb" } ] + }, + "dev": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.dev.ts" + } + ], + "optimization": false, + "extractLicenses": false, + "sourceMap": true } } }, @@ -64,6 +74,9 @@ "configurations": { "production": { "browserTarget": "my-app:build:production" + }, + "dev": { + "browserTarget": "my-app:build:dev" } } }, diff --git a/frontend/datasafe-ui/main.js b/frontend/datasafe-ui/main.js index 49966638b..c6746dce1 100644 --- a/frontend/datasafe-ui/main.js +++ b/frontend/datasafe-ui/main.js @@ -21,7 +21,7 @@ function createWindow() { }); if (serve) { require('electron-reload')(__dirname, { - electron: require(__dirname + "/node_modules/electron") + electron: require("".concat(__dirname, "/node_modules/electron")) }); win.loadURL('http://localhost:4200'); } diff --git a/frontend/datasafe-ui/main.js.map b/frontend/datasafe-ui/main.js.map deleted file mode 100644 index f967e92ff..000000000 --- a/frontend/datasafe-ui/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":";;AAAA,qCAAsD;AACtD,2BAA6B;AAC7B,yBAA2B;AAE3B,IAAI,GAAG,EAAE,KAAK,CAAC;AACf,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,SAAS,EAAjB,CAAiB,CAAC,CAAC;AAE5C,SAAS,YAAY;IAEnB,IAAM,cAAc,GAAG,iBAAM,CAAC;IAC9B,IAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC;IAE7D,6BAA6B;IAC7B,GAAG,GAAG,IAAI,wBAAa,CAAC;QACtB,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE;YACd,eAAe,EAAE,IAAI;SACtB;KACF,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE;QACT,OAAO,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE;YACpC,QAAQ,EAAE,OAAO,CAAI,SAAS,2BAAwB,CAAC;SACxD,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;KACtC;SAAM;QACL,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YACrB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;YACjD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;KACL;IAED,IAAI,KAAK,EAAE;QACT,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAChC;IAED,qCAAqC;IACrC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE;QACf,gEAAgE;QAChE,mEAAmE;QACnE,oDAAoD;QACpD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AAEL,CAAC;AAED,IAAI;IAEF,wDAAwD;IACxD,yDAAyD;IACzD,sDAAsD;IACtD,cAAG,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE9B,oCAAoC;IACpC,cAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE;QAC1B,2DAA2D;QAC3D,8DAA8D;QAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACjC,cAAG,CAAC,IAAI,EAAE,CAAC;SACZ;IACH,CAAC,CAAC,CAAC;IAEH,cAAG,CAAC,EAAE,CAAC,UAAU,EAAE;QACjB,gEAAgE;QAChE,4DAA4D;QAC5D,IAAI,GAAG,KAAK,IAAI,EAAE;YAChB,YAAY,EAAE,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;CAEJ;AAAC,OAAO,CAAC,EAAE;IACV,cAAc;IACd,WAAW;CACZ"} \ No newline at end of file diff --git a/frontend/datasafe-ui/package.json b/frontend/datasafe-ui/package.json index 3195a72de..7994278ae 100644 --- a/frontend/datasafe-ui/package.json +++ b/frontend/datasafe-ui/package.json @@ -4,7 +4,7 @@ "description": "datasafe-ui with web and electron interface", "keywords": [ "angular", - "angular 8", + "angular 15", "electron", "typescript", "sass" @@ -53,7 +53,7 @@ "@types/node": "20.8.0", "codelyzer": "6.0.2", "core-js": "3.33.0", - "electron": "26.2.4", + "electron": "^26.2.4", "electron-builder": "24.7.0", "electron-reload": "1.5.0", "hammerjs": "2.0.8", @@ -75,7 +75,7 @@ "wait-on": "7.0.1", "web-animations-js": "2.3.2", "webdriver-manager": "13.0.2", - "zone.js": "0.14.0" + "zone.js": "0.13.0" }, "engines": { "node": ">=18.10.0" diff --git a/frontend/datasafe-ui/src/app/app.component.ts b/frontend/datasafe-ui/src/app/app.component.ts index 788f93502..852e4d829 100644 --- a/frontend/datasafe-ui/src/app/app.component.ts +++ b/frontend/datasafe-ui/src/app/app.component.ts @@ -1,5 +1,5 @@ import {Component, OnInit} from '@angular/core'; -import {ErrorStateMatcher} from "@angular/material"; +import {ErrorStateMatcher} from "@angular/material/core"; import {FormControl, FormGroupDirective, NgForm} from "@angular/forms"; export class Env { diff --git a/frontend/datasafe-ui/src/app/component/filetree/filetree.component.ts b/frontend/datasafe-ui/src/app/component/filetree/filetree.component.ts index 57aee9256..9269168d4 100644 --- a/frontend/datasafe-ui/src/app/component/filetree/filetree.component.ts +++ b/frontend/datasafe-ui/src/app/component/filetree/filetree.component.ts @@ -7,7 +7,7 @@ import {ApiService} from "../../service/api/api.service"; import {CredentialsService} from "../../service/credentials/credentials.service"; import {Router} from "@angular/router"; import {ErrorMessageUtil} from "../../app.component"; -import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from "@angular/material"; +import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from "@angular/material/dialog"; class UserFileSystem { @@ -39,6 +39,7 @@ class UserFileSystem { var fullPath = ""; var folder = ""; + path = (path.startsWith('/')) ? path.substring(1) : path; path.split("/").forEach(segment => { fullPath += segment; fullPath += (fullPath === path ? "" : "/"); @@ -302,7 +303,7 @@ export class FiletreeComponent { this.error = ''; this.removePathFromUiCreatedFolders(path); this.api.deleteDocument(path, this.creds.getCredentialsForApi()) - .then(res => this.loadTree()) + .then(_ => this.loadTree()) .catch(err => this.error = 'Delete failed: ' + ErrorMessageUtil.extract(err)); } @@ -316,7 +317,7 @@ export class FiletreeComponent { uploadFile(event) { this.error = ''; this.api.uploadDocument(event.target.files[0], event.target.files[0].name, this.creds.getCredentialsForApi()) - .then(res => this.loadTree()) + .then(_ => this.loadTree()) .catch(err => { this.error = 'Upload failed: ' + ErrorMessageUtil.extract(err); }); @@ -328,7 +329,7 @@ export class FiletreeComponent { event.currentTarget.files[0], event.currentTarget.name + event.currentTarget.files[0].name, this.creds.getCredentialsForApi()) - .then(res => this.loadTree()) + .then(_ => this.loadTree()) .catch(err => { this.error = 'Upload failed: ' + ErrorMessageUtil.extract(err); }); diff --git a/frontend/datasafe-ui/src/app/component/login/login.component.ts b/frontend/datasafe-ui/src/app/component/login/login.component.ts index f943deeff..b2c947f34 100644 --- a/frontend/datasafe-ui/src/app/component/login/login.component.ts +++ b/frontend/datasafe-ui/src/app/component/login/login.component.ts @@ -3,7 +3,7 @@ import {Router} from '@angular/router'; import {FormBuilder, FormControl, Validators} from '@angular/forms'; import {CredentialsService} from '../../service/credentials/credentials.service'; import {Env, FieldErrorStateMatcher} from '../../app.component'; -import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material'; +import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog'; export interface ApiConfigData { apiUrl: string; diff --git a/frontend/datasafe-ui/src/app/component/register/register.component.ts b/frontend/datasafe-ui/src/app/component/register/register.component.ts index 4aff54c12..4c5542fe3 100644 --- a/frontend/datasafe-ui/src/app/component/register/register.component.ts +++ b/frontend/datasafe-ui/src/app/component/register/register.component.ts @@ -1,14 +1,14 @@ import {Component, OnInit} from '@angular/core'; -import {FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms"; -import {Router} from "@angular/router"; -import {ApiService} from "../../service/api/api.service"; -import {CredentialsService} from "../../service/credentials/credentials.service"; -import {ErrorMessageUtil, FieldErrorStateMatcher, ParentOrFieldErrorStateMatcher} from "../../app.component"; +import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms'; +import {Router} from '@angular/router'; +import {ApiService} from '../../service/api/api.service'; +import {CredentialsService} from '../../service/credentials/credentials.service'; +import {ErrorMessageUtil, FieldErrorStateMatcher, ParentOrFieldErrorStateMatcher} from '../../app.component'; class PasswordsMatchControl extends FormControl { constructor(private hidden: boolean) { - super('', []) + super('', []); } get Hidden(): boolean { @@ -31,6 +31,10 @@ class PasswordsMatchControl extends FormControl { }) export class RegisterComponent implements OnInit { + constructor(public router: Router, private api: ApiService, private fb: FormBuilder, + private creds: CredentialsService) { + } + userNameControl = new FormControl('', [ Validators.required, Validators.minLength(3) @@ -53,8 +57,12 @@ export class RegisterComponent implements OnInit { fieldMatcher = new FieldErrorStateMatcher(); parentOrFieldMatcher = new ParentOrFieldErrorStateMatcher(); - constructor(public router: Router, private api: ApiService, private fb: FormBuilder, - private creds: CredentialsService) { + private static checkPasswords(group: FormGroup) { // here we have the 'passwords' group + const matchControl = group.controls.matchPasswords; + const pass = group.controls.passwords.value; + const confirmPass = matchControl.value; + + return (matchControl.Hidden || pass === confirmPass) ? null : {notSame: true} } ngOnInit() { @@ -62,22 +70,14 @@ export class RegisterComponent implements OnInit { public handleCreateUserClick() { if (!this.registerForm.valid) { - return + return; } this.api.createUser(this.userNameControl.value, this.passwordControl.value) .then(res => { this.creds.setCredentials(this.userNameControl.value, this.passwordControl.value); - this.router.navigate(['/user']) + this.router.navigate(['/user']); }) .catch(error => this.registerForm.setErrors({'createFailed': ErrorMessageUtil.extract(error)})); } - - private static checkPasswords(group: FormGroup) { // here we have the 'passwords' group - let matchControl = group.controls.matchPasswords; - let pass = group.controls.passwords.value; - let confirmPass = matchControl.value; - - return (matchControl.Hidden || pass === confirmPass) ? null : {notSame: true} - } } diff --git a/frontend/datasafe-ui/src/app/polyfills.ts b/frontend/datasafe-ui/src/app/polyfills.ts index 5134b24e9..203549750 100755 --- a/frontend/datasafe-ui/src/app/polyfills.ts +++ b/frontend/datasafe-ui/src/app/polyfills.ts @@ -1,5 +1,4 @@ -import 'core-js/es6/reflect'; -import 'core-js/es7/reflect'; +import 'core-js/features/reflect'; import 'zone.js/dist/zone'; import 'hammerjs'; import 'web-animations-js'; \ No newline at end of file diff --git a/last-module-codecoverage-check/pom.xml b/last-module-codecoverage-check/pom.xml index fd80ffd30..fdaeb0053 100644 --- a/last-module-codecoverage-check/pom.xml +++ b/last-module-codecoverage-check/pom.xml @@ -5,8 +5,9 @@ datasafe de.adorsys - 2.0.2 + 2.0.2-SNAPSHOT + 4.0.0 last-module-codecoverage-check diff --git a/pom.xml b/pom.xml index 0eeb0d03d..16be9735c 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ de.adorsys datasafe - 2.0.2 + 2.0.2-SNAPSHOT datasafe Datasafe https://github.com/adorsys/datasafe @@ -73,37 +73,32 @@ none src/main/java src/test/java - - - ${basedir}/../../target/jacoco.exec - ${basedir}/../target/jacoco-e2e.exec - 19.2.0 - 3.11.0 + 3.12.1 17 17 - 3.6.0 + 3.6.1 1.18.30 2.8.9 - 2.46.1 + 2.50 32.1.1-jre 4.0.3 5.10.0 3.12.2 5.5.0 3.1.2 - 1.21 + 1.26.0 UTF-8 false 1.18.3 - 0.8.10 + 0.8.11 2.5 2.0.7 9.44.0.Final 1.18.20.0 3.0.0 1.0.2 - 1.12.402 + 1.12.646 3.0.0 1 1.9.0 @@ -117,9 +112,8 @@ 6.0.11 3.1.2 1.4.4 - 2.12.7 - 2.12.7.1 - 0.0.9 + 2.16.1 + 0.0.11-SNAPSHOT 2.1.1 2.3.1 2.8.1 @@ -339,6 +333,27 @@ jaxb-api ${jaxb-api.version} + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson.version} + test + @@ -387,6 +402,7 @@ + org.apache.maven.plugins maven-dependency-plugin ${maven.dependency.plugin.version} @@ -519,6 +535,7 @@ org.apache.maven.plugins maven-compiler-plugin + ${maven.compiler.plugin.version} @@ -586,8 +603,6 @@ sonatype https://oss.sonatype.org/ true - true - 30 @@ -608,11 +623,6 @@ maven-gpg-plugin ${maven-gpg-plugin.version} - opensource@adorsys.de - - --pinentry-mode - loopback - @@ -621,12 +631,6 @@ sign - - - --pinentry-mode - loopback - - @@ -716,8 +720,37 @@ + + IT + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.version} + + false + + **/*Test + **/*IT + + + + + + + + + sonatype + https://oss.sonatype.org/content/repositories/snapshots + + true + + + + sonatype diff --git a/scripts/mvn_deploy.sh b/scripts/mvn_deploy.sh new file mode 100755 index 000000000..dbf870f1f --- /dev/null +++ b/scripts/mvn_deploy.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -e + +echo "$GPG_SECRET_KEY" | base64 --decode | $GPG_EXECUTABLE --import --no-tty --batch --yes || true +echo "$GPG_OWNERTRUST" | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --no-tty --batch --yes || true + +mvn clean deploy -ntp --settings scripts/settings.xml gpg:sign -Prelease -DskipTests -U || exit 1 \ No newline at end of file diff --git a/.travis/settings.xml b/scripts/settings.xml similarity index 100% rename from .travis/settings.xml rename to scripts/settings.xml