From 96920d1ca3d1a7328c74f124cec132b7d9c80b7b Mon Sep 17 00:00:00 2001 From: teleivo Date: Wed, 25 Sep 2024 09:40:24 +0200 Subject: [PATCH 1/4] ci: merge maven module dhis-web-app with dhis-web-server (#18632) * ci: merge dhis-web-apps with dhis-web-server as creating a web apps war, extracting it into dhis.war is not necessary * ci: expect nodejs to be present there are plans to change the app bundling process. For now we require nodejs like maven to be present on any machine building DHIS2 * test: fix AuthTest by using embedded jetty * ci: sonar says it needs at least package so go back to what we had before --- .github/CODEOWNERS | 2 +- .github/dependabot.yml | 12 - .github/workflows/analyse-pr.yml | 12 +- .github/workflows/run-api-analytics-tests.yml | 22 +- .github/workflows/run-api-tests.yml | 24 +- .github/workflows/run-tests.yml | 24 +- CONTRIBUTING.md | 18 +- README.md | 10 +- dhis-2/.gitignore | 3 +- dhis-2/build-dev.sh | 9 +- dhis-2/dhis-web-apps/.gitignore | 2 - dhis-2/dhis-web-apps/apps-to-bundle.json | 29 -- dhis-2/dhis-web-apps/pom.xml | 81 ---- .../WEB-INF/classes/velocity.properties | 3 - .../README.md | 0 dhis-2/dhis-web-server/apps-to-bundle.json | 29 ++ .../package-lock.json | 0 .../package.json | 0 dhis-2/dhis-web-server/pom.xml | 354 ++++-------------- .../scripts/bundle-apps.js | 10 +- .../scripts/copy-apps.js | 0 .../scripts/git.js | 0 .../scripts/lib/sanitize.js | 0 .../scripts/write-bundle-json.js | 0 .../scripts/write-index-html.js | 0 .../dhis/web/jetty/EmbeddedJettyBase.java | 157 -------- ...EmbeddedJettyUncaughtExceptionHandler.java | 81 ---- .../jetty/InstrumentedQueuedThreadPool.java | 43 --- .../jetty/JettyStartupTimerSpringConfig.java | 53 --- .../java/org/hisp/dhis/web/jetty/Main.java | 112 ------ .../web/jetty/StartupFinishedRoutine.java | 45 --- .../java/org/hisp/dhis/web/tomcat/Main.java | 9 +- .../org/hisp/dhis/web/tomcat/TldPatterns.java | 1 - .../main/resources/jetty-logging.properties | 28 -- .../main/webapp/dhis-web-apps/template.html | 0 .../java/org/hisp/dhis/auth/AuthTest.java | 23 +- dhis-2/pom.xml | 68 +--- dhis-2/run-api.sh | 48 +-- jenkinsfiles/canary | 6 +- jenkinsfiles/dev | 6 +- jenkinsfiles/eos | 2 +- jenkinsfiles/stable | 2 +- 42 files changed, 231 insertions(+), 1097 deletions(-) delete mode 100644 dhis-2/dhis-web-apps/.gitignore delete mode 100644 dhis-2/dhis-web-apps/apps-to-bundle.json delete mode 100644 dhis-2/dhis-web-apps/pom.xml delete mode 100644 dhis-2/dhis-web-apps/src/main/webapp/WEB-INF/classes/velocity.properties rename dhis-2/{dhis-web-apps => dhis-web-server}/README.md (100%) create mode 100644 dhis-2/dhis-web-server/apps-to-bundle.json rename dhis-2/{dhis-web-apps => dhis-web-server}/package-lock.json (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/package.json (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/bundle-apps.js (84%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/copy-apps.js (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/git.js (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/lib/sanitize.js (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/write-bundle-json.js (100%) rename dhis-2/{dhis-web-apps => dhis-web-server}/scripts/write-index-html.js (100%) delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyBase.java delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyUncaughtExceptionHandler.java delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/InstrumentedQueuedThreadPool.java delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/JettyStartupTimerSpringConfig.java delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/Main.java delete mode 100644 dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/StartupFinishedRoutine.java delete mode 100644 dhis-2/dhis-web-server/src/main/resources/jetty-logging.properties rename dhis-2/{dhis-web-apps => dhis-web-server}/src/main/webapp/dhis-web-apps/template.html (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e936a14866bb..a8cf70ac4b6d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,7 +4,7 @@ dhis-2/*.sh @dhis2/devops -dhis-2/dhis-web-apps/apps-to-bundle.json @dhis2/devops +dhis-2/dhis-web-server/** @dhis2/devops docker/** @dhis2/devops diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6277901af7bc..b9a55d7720e4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -31,9 +31,6 @@ updates: - dependency-name: "org.apache.struts:*" # will be removed from core (significant work involved in upgrade with the risk of regressions) versions: - ">= 3.0" - - dependency-name: "org.eclipse.jetty:*" # Jetty 11 moved some code to a different package, updated the Servlet version which requires more work - versions: - - ">= 11.0" - dependency-name: "org.springframework:*" # Spring framework 6 requires minimum JDK 17 so it will require more effort/time until we update it versions: - ">= 6.0" @@ -120,9 +117,6 @@ updates: - dependency-name: "org.apache.struts:*" # will be removed from core (significant work involved in upgrade with the risk of regressions) versions: - ">= 3.0" - - dependency-name: "org.eclipse.jetty:*" # Jetty 11 moved some code to a different package, updated the Servlet version which requires more work - versions: - - ">= 11.0" - dependency-name: "org.springframework:*" # Spring framework 6 requires minimum JDK 17 so it will require more effort/time until we update it versions: - ">= 6.0" @@ -219,9 +213,6 @@ updates: - dependency-name: "org.apache.struts:*" # will be removed from core (significant work involved in upgrade with the risk of regressions) versions: - ">= 3.0" - - dependency-name: "org.eclipse.jetty:*" # Jetty 11 moved some code to a different package, updated the Servlet version which requires more work - versions: - - ">= 11.0" - dependency-name: "org.springframework:*" # Spring framework 6 requires minimum JDK 17 so it will require more effort/time until we update it versions: - ">= 6.0" @@ -309,9 +300,6 @@ updates: - dependency-name: "org.apache.struts:*" # will be removed from core (significant work involved in upgrade with the risk of regressions) versions: - ">= 3.0" - - dependency-name: "org.eclipse.jetty:*" # Jetty 11 moved some code to a different package, updated the Servlet version which requires more work - versions: - - ">= 11.0" - dependency-name: "org.antlr:antlr4-runtime" # Automatically upgrade ANTLR version can cause issues in rule-engine and antlr-parser libraries - dependency-name: "org.springframework:*" # Spring framework 6 requires minimum JDK 17 so it will require more effort/time until we update it versions: diff --git a/.github/workflows/analyse-pr.yml b/.github/workflows/analyse-pr.yml index 1099d8790185..6848973d1c1f 100644 --- a/.github/workflows/analyse-pr.yml +++ b/.github/workflows/analyse-pr.yml @@ -8,16 +8,16 @@ on: push: branches: - master - - '2.3[1-9]' - - '2.4[0-9]' + - "2.3[1-9]" + - "2.4[0-9]" pull_request: branches: - master - - '2.3[1-9]' - - '2.4[0-9]' + - "2.3[1-9]" + - "2.4[0-9]" concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - cancel-in-progress: true + group: ${{ github.workflow}}-${{ github.ref }} + cancel-in-progress: true jobs: sonarqube: runs-on: ubuntu-latest diff --git a/.github/workflows/run-api-analytics-tests.yml b/.github/workflows/run-api-analytics-tests.yml index 5eb7741f164d..7ded374aa677 100644 --- a/.github/workflows/run-api-analytics-tests.yml +++ b/.github/workflows/run-api-analytics-tests.yml @@ -5,7 +5,7 @@ env: on: pull_request: - types: [ opened, labeled, synchronize ] + types: [opened, labeled, synchronize] schedule: - cron: "16 1 * * *" # Run at 01:16 AM concurrency: @@ -39,10 +39,13 @@ jobs: distribution: temurin cache: maven - - name: Build core image + - name: Build container image run: | - mvn clean install --threads 2C --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true --update-snapshots -f dhis-2/pom.xml -pl -dhis-test-integration,-dhis-test-coverage,-dhis-web-server - mvn clean install -PjibDockerBuild -DactiveProfile=jibDockerBuild --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true -f ./dhis-2/dhis-web-server/pom.xml -Djib.to.image=$CORE_IMAGE_NAME + # only build image for running api tests in this workflow + mvn clean package --threads 2C --batch-mode --no-transfer-progress \ + -DskipTests -Dmaven.test.skip=true --update-snapshots --file dhis-2/pom.xml \ + --projects dhis-web-server --also-make --activate-profiles jibDockerBuild \ + -Djib.to.image=$CORE_IMAGE_NAME - name: Get Sierra Leone DB from cache uses: actions/cache@v4 @@ -57,9 +60,6 @@ jobs: mkdir -p ${{ env.SIERRA_LEONE_DB_PATH }} wget https://databases.dhis2.org/sierra-leone/${{ env.SIERRA_LEONE_DB_VERSION }}/analytics_be/dhis2-db-sierra-leone.sql.gz --no-clobber --directory-prefix ${{ env.SIERRA_LEONE_DB_PATH }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Run tests run: | cd dhis-2/dhis-test-e2e @@ -78,7 +78,7 @@ jobs: if: failure() with: name: "tomcat_logs" - path: '~/logs.txt' + path: "~/logs.txt" send-slack-message: runs-on: ubuntu-latest @@ -87,11 +87,11 @@ jobs: contains(needs.*.result, 'failure') && github.ref == 'refs/heads/master' - needs: [ api-analytics-test ] + needs: [api-analytics-test] steps: - uses: rtCamp/action-slack-notify@v2 env: SLACK_WEBHOOK: ${{ secrets.SLACK_BACKEND_WEBHOOK }} - SLACK_CHANNEL: 'team-backend' + SLACK_CHANNEL: "team-backend" SLACK_MESSAGE: "Latest analytics e2e test run on master failed and needs investigation :detective-duck:. \n Commit message: ${{ github.event.head_commit.message }}" - SLACK_COLOR: '#ff0000' + SLACK_COLOR: "#ff0000" diff --git a/.github/workflows/run-api-tests.yml b/.github/workflows/run-api-tests.yml index 0e44af46d582..49020edd0de1 100644 --- a/.github/workflows/run-api-tests.yml +++ b/.github/workflows/run-api-tests.yml @@ -35,21 +35,21 @@ jobs: username: ${{ secrets.DHIS2_BOT_DOCKER_HUB_USERNAME }} password: ${{ secrets.DHIS2_BOT_DOCKER_HUB_PASSWORD }} - - name: Build war - run: | - mvn clean install --threads 2C --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true --update-snapshots -f dhis-2/pom.xml -pl -dhis-test-integration,-dhis-test-coverage,-dhis-web-server - - name: Build container image run: | if [ "$DOCKERHUB_PUSH" = "true" ]; then # build and publish multi-arch images using Jib. Image is used for api tests in # this workflow and can be pulled from Dockerhub by devs to run locally, ... - mvn clean install -DactiveProfile=PjibBuild --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true -f dhis-2/dhis-web-server/pom.xml jib:build -PjibBuild \ - -Djib.to.image=$CORE_IMAGE_NAME -Djib.container.labels=DHIS2_BUILD_REVISION=${{github.event.pull_request.head.sha}},DHIS2_BUILD_BRANCH=${{github.head_ref}} + mvn clean package --threads 2C --batch-mode --no-transfer-progress \ + -DskipTests -Dmaven.test.skip=true --update-snapshots --file dhis-2/pom.xml \ + --projects dhis-web-server --also-make --activate-profiles jibBuild \ + -Djib.to.image=$CORE_IMAGE_NAME -Djib.container.labels=DHIS2_BUILD_REVISION=${{github.event.pull_request.head.sha}},DHIS2_BUILD_BRANCH=${{github.head_ref}} else # only build image for running api tests in this workflow i.e. master, 2.39, ... - mvn clean install -PjibDockerBuild -DactiveProfile=jibDockerBuild --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true -f ./dhis-2/dhis-web-server/pom.xml \ - -Djib.to.image=$CORE_IMAGE_NAME + mvn clean package --threads 2C --batch-mode --no-transfer-progress \ + -DskipTests -Dmaven.test.skip=true --update-snapshots --file dhis-2/pom.xml \ + --projects dhis-web-server --also-make --activate-profiles jibDockerBuild \ + -Djib.to.image=$CORE_IMAGE_NAME fi - name: Run tests @@ -67,7 +67,7 @@ jobs: if: failure() with: name: "tomcat_logs" - path: '~/logs.txt' + path: "~/logs.txt" send-slack-message: runs-on: ubuntu-latest @@ -76,11 +76,11 @@ jobs: contains(needs.*.result, 'failure') && github.ref == 'refs/heads/master' - needs: [ api-test ] + needs: [api-test] steps: - uses: rtCamp/action-slack-notify@v2 env: SLACK_WEBHOOK: ${{ secrets.SLACK_BACKEND_WEBHOOK }} - SLACK_CHANNEL: 'team-backend' + SLACK_CHANNEL: "team-backend" SLACK_MESSAGE: "Latest e2e test run on master failed and needs investigation :detective-duck:. \n Commit message: ${{ github.event.head_commit.message }}" - SLACK_COLOR: '#ff0000' + SLACK_COLOR: "#ff0000" diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index c28ef9dffcfe..a9ad5245bc20 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -8,8 +8,8 @@ on: - master pull_request: concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - cancel-in-progress: true + group: ${{ github.workflow}}-${{ github.ref }} + cancel-in-progress: true jobs: unit-test: runs-on: ubuntu-latest @@ -21,8 +21,8 @@ jobs: java-version: 17 distribution: temurin cache: maven - - name: Test core # NOTE: dhis-2/pom.xml needs to be installed as built artifacts are needed by dhis-web - run: mvn clean install --threads 2C --batch-mode --no-transfer-progress --update-snapshots -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-web-apps + - name: Test core + run: mvn clean verify --threads 2C --batch-mode --no-transfer-progress --update-snapshots --file ./dhis-2/pom.xml timeout-minutes: 30 - name: Report coverage to codecov uses: codecov/codecov-action@v3 @@ -41,7 +41,7 @@ jobs: path: coverage.tar retention-days: 5 - name: Generate surefire aggregate report - run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-test-coverage,-dhis-web-apps + run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress --file ./dhis-2/pom.xml --projects -dhis-test-coverage # tar due to https://github.com/actions/upload-artifact/blob/3cea5372237819ed00197afe530f5a7ea3e805c8/README.md?plain=1#L254 - name: Tar surefire individual reports run: find . -name "surefire-reports" -type d -exec find {} -type f -name "*.xml" -printf '%p\0' \; | tar --null --files-from=- -cvf surefire_reports.tar @@ -65,7 +65,7 @@ jobs: distribution: temurin cache: maven - name: Run integration tests - run: mvn clean verify --threads 2C --batch-mode --no-transfer-progress -Pintegration --update-snapshots -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-web-apps + run: mvn clean verify --threads 2C --batch-mode --no-transfer-progress -Pintegration --update-snapshots --file ./dhis-2/pom.xml timeout-minutes: 30 - uses: actions/upload-artifact@v4 name: Upload test logs on failure @@ -92,7 +92,7 @@ jobs: path: coverage.tar retention-days: 5 - name: Generate surefire aggregate report - run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-test-coverage,-dhis-web-apps + run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress --file ./dhis-2/pom.xml --projects -dhis-test-coverage # tar due to https://github.com/actions/upload-artifact/blob/3cea5372237819ed00197afe530f5a7ea3e805c8/README.md?plain=1#L254 - name: Tar surefire individual reports run: find . -name "surefire-reports" -type d -exec find {} -type f -name "*.xml" -printf '%p\0' \; | tar --null --files-from=- -cvf surefire_reports.tar @@ -116,7 +116,7 @@ jobs: distribution: temurin cache: maven - name: Run integration h2 tests - run: mvn clean verify --threads 2C --batch-mode --no-transfer-progress -PintegrationH2 --update-snapshots -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-web-apps + run: mvn clean verify --threads 2C --batch-mode --no-transfer-progress -PintegrationH2 --update-snapshots --file ./dhis-2/pom.xml timeout-minutes: 30 - uses: actions/upload-artifact@v4 name: Upload test logs on failure @@ -143,7 +143,7 @@ jobs: path: coverage.tar retention-days: 5 - name: Generate surefire aggregate report - run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress -f ./dhis-2/pom.xml -pl -dhis-web-server,-dhis-test-coverage,-dhis-web-apps + run: mvn surefire-report:report-only -Daggregate=true --batch-mode --no-transfer-progress --file ./dhis-2/pom.xml --projects -dhis-test-coverage # tar due to https://github.com/actions/upload-artifact/blob/3cea5372237819ed00197afe530f5a7ea3e805c8/README.md?plain=1#L254 - name: Tar surefire individual reports run: find . -name "surefire-reports" -type d -exec find {} -type f -name "*.xml" -printf '%p\0' \; | tar --null --files-from=- -cvf surefire_reports.tar @@ -163,11 +163,11 @@ jobs: contains(needs.*.result, 'failure') && github.ref == 'refs/heads/master' - needs: [ unit-test, integration-test, integration-h2-test ] + needs: [unit-test, integration-test, integration-h2-test] steps: - uses: rtCamp/action-slack-notify@v2 env: SLACK_WEBHOOK: ${{ secrets.SLACK_BACKEND_WEBHOOK }} - SLACK_CHANNEL: 'team-backend' + SLACK_CHANNEL: "team-backend" SLACK_MESSAGE: "Latest test run on master failed and needs investigation :detective-duck:. \n Commit message: ${{ github.event.head_commit.message }}" - SLACK_COLOR: '#ff0000' + SLACK_COLOR: "#ff0000" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 44e7e0c005a2..de3fabb88cc6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## Guidelines -Read the contribution [guidelines](https://developers.dhis2.org/community/contribute/). +Read the contribution [guidelines](https://developers.dhis2.org/community/contribute). ## Requirements @@ -10,6 +10,7 @@ You'll need the following software to run DHIS2 on your machine: - Java 17 - Maven +- Node.js at least v20 (used to bundle web apps) - Tomcat ## Fork @@ -24,14 +25,9 @@ Clone the repository: Go in the repo and run maven: - cd dhis-2 - mvn install - cd dhis-web - mvn install -U + mvn clean package --file dhis-2/pom.xml -DskipTests -Each project in the /dhis-2/dhis-web directory is an individual web module. The dhis-web-server project is an assembly of all the individual web modules. - -This should create a ready to use war in /dhis-2/dhis-web-server/target +This should create a ready to use war ./dhis-2/dhis-web-server/target/dhis.war ## Run locally @@ -41,7 +37,7 @@ Deploy the war in Tomcat using either the manager or a simple copy to the webapp Before starting tomcat, you need to create a DHIS2_HOME pointing to a folder on your machine: - export DHIS2_HOME=~/dhis2_home + export DHIS2_HOME=~/dhis2_home this folder will host the `dhis.conf` file with at minimum your database settings. To start as fast as possible, you can use the H2 in memory database using the following configuration: @@ -55,10 +51,10 @@ connection.password = You can get such a file in your DHIS2_HOME folder with a simple call: - wget -O $DHIS2_HOME/dhis.conf https://gist.githubusercontent.com/vanakenm/87b729fbf78ec52ca4c5da7856c62584/raw/9554680c8ab62d7f2bbecc3847406fa17d551a2e/dhis.conf + wget -O $DHIS2_HOME/dhis.conf https://gist.githubusercontent.com/vanakenm/87b729fbf78ec52ca4c5da7856c62584/raw/9554680c8ab62d7f2bbecc3847406fa17d551a2e/dhis.conf You can now start tomcat and go to localhost:8080/dhis - get in with admin/district as user/password. ## Alternative - Build and run in Docker -It is possible to build and run DHIS2 with Docker, on any operating system with no dependencies on local Java, Maven, or Tomcat, refer to the [documentation](https://github.com/dhis2/dhis2-core/blob/master/docker/README.md). +It is possible to build and run DHIS2 with Docker, on any operating system with no dependencies on local Java, Maven, or Tomcat, refer to the [documentation](README.md). diff --git a/README.md b/README.md index 94401b4adfd3..5054e9789583 100644 --- a/README.md +++ b/README.md @@ -84,11 +84,9 @@ using versions we for example publish to https://databases.dhis2.org/ ## Build process -This repository contains the source code for the server-side component of DHIS 2, which is developed in [Java](https://www.java.com/en/) and built with [Maven](https://maven.apache.org/). +This repository contains the source code for the server-side component of DHIS2, which is developed in [Java](https://www.java.com/en/) and built with [Maven](https://maven.apache.org/). -To build it you must first install the root `POM` file, navigate to the `dhis-web` directory and then build the web `POM` file. - -See the [contributing](https://github.com/dhis2/dhis2-core/blob/master/CONTRIBUTING.md) page to learn how to run locally. +See the [contributing](./CONTRIBUTING.md) page to learn how to run locally. ### Docker image @@ -115,7 +113,9 @@ It should now be available at `http://localhost:8080`. To build using a custom tag run ```sh -mvn -DskipTests -Dmaven.test.skip=true -f dhis-2/dhis-web-server/pom.xml jib:dockerBuild -Djib.to.image=dhis2/core-dev:mytag +mvn clean package -DskipTests -Dmaven.test.skip=true --file dhis-2/pom.xml \ + --projects dhis-web-server --also-make --activate-profiles jibDockerBuild \ + -Djib.to.image=dhis2/core-dev:mytag ``` For more configuration options related to Jib or Docker go to the diff --git a/dhis-2/.gitignore b/dhis-2/.gitignore index a14ef7f44000..6ecd25623428 100644 --- a/dhis-2/.gitignore +++ b/dhis-2/.gitignore @@ -33,7 +33,6 @@ /dhis-web-portal/target/ /dhis-web-server/target/ /dhis-web-reporting/target/ -/dhis-web-embedded-jetty/target/ # Datasource local storage ignored files /.idea/dataSources/ @@ -54,4 +53,4 @@ http-client.private.env.json .java-version # VS Code -.vscode/ \ No newline at end of file +.vscode/ diff --git a/dhis-2/build-dev.sh b/dhis-2/build-dev.sh index 56749bf9abe5..eb7a514f2093 100755 --- a/dhis-2/build-dev.sh +++ b/dhis-2/build-dev.sh @@ -16,17 +16,16 @@ BUILD_BRANCH=$(git --git-dir "$DIR/../.git" branch --show-current) # There might be ways like using https://maven.apache.org/enforcer/enforcer-rules/requireActiveProfile.html # to prevent that but they would require more work. ARCH=$(mvn help:system | grep "os\.arch") -JIB_PROFILE= +JIB_PROFILE="jibDockerBuild" if [[ "$ARCH" == *arm64* || "$ARCH" == *aarch64* ]]; then - JIB_PROFILE="-P jibBuildArmOnly" + JIB_PROFILE="$JIB_PROFILE,jibBuildArmOnly" fi echo "Building dhis2-core and Docker image..." export MAVEN_OPTS="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.httpconnectionManager.ttlSeconds=25" -mvn clean install --threads 2C -DskipTests -Dmaven.test.skip=true -f "${DIR}/pom.xml" -pl -dhis-test-integration,-dhis-test-coverage,-dhis-web-server -mvn clean install -PjibDockerBuild -DactiveProfile=jibDockerBuild -DskipTests -Dmaven.test.skip=true -f "${DIR}/dhis-web-server/pom.xml" $JIB_PROFILE \ - -Djib.container.labels=DHIS2_BUILD_REVISION="${BUILD_REVISION}",DHIS2_BUILD_BRANCH="${BUILD_BRANCH}" +mvn clean package --threads 2C -DskipTests -Dmaven.test.skip=true --file "${DIR}/pom.xml" --projects dhis-web-server --also-make \ + --activate-profiles "$JIB_PROFILE" -Djib.container.labels=DHIS2_BUILD_REVISION="${BUILD_REVISION}",DHIS2_BUILD_BRANCH="${BUILD_BRANCH}" if test -z "$D2CLUSTER"; then echo "No cluster name specified, skipping deploy" diff --git a/dhis-2/dhis-web-apps/.gitignore b/dhis-2/dhis-web-apps/.gitignore deleted file mode 100644 index f4af8abeabd4..000000000000 --- a/dhis-2/dhis-web-apps/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -node/ diff --git a/dhis-2/dhis-web-apps/apps-to-bundle.json b/dhis-2/dhis-web-apps/apps-to-bundle.json deleted file mode 100644 index 2e3b1508f506..000000000000 --- a/dhis-2/dhis-web-apps/apps-to-bundle.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - "https://github.com/d2-ci/aggregate-data-entry-app", - "https://github.com/d2-ci/approval-app", - "https://github.com/d2-ci/app-management-app", - "https://github.com/d2-ci/cache-cleaner-app", - "https://github.com/d2-ci/capture-app", - "https://github.com/d2-ci/dashboard-app", - "https://github.com/d2-ci/data-administration-app", - "https://github.com/d2-ci/data-visualizer-app", - "https://github.com/d2-ci/data-quality-app", - "https://github.com/d2-ci/datastore-app", - "https://github.com/d2-ci/event-reports-app", - "https://github.com/d2-ci/event-charts-app", - "https://github.com/d2-ci/import-export-app", - "https://github.com/d2-ci/interpretation-app", - "https://github.com/d2-ci/maintenance-app", - "https://github.com/d2-ci/maps-app", - "https://github.com/d2-ci/menu-management-app", - "https://github.com/d2-ci/messaging-app", - "https://github.com/d2-ci/reports-app", - "https://github.com/d2-ci/scheduler-app", - "https://github.com/d2-ci/sms-configuration-app", - "https://github.com/d2-ci/settings-app", - "https://github.com/d2-ci/translations-app", - "https://github.com/d2-ci/usage-analytics-app", - "https://github.com/d2-ci/user-app", - "https://github.com/d2-ci/user-profile-app", - "https://github.com/d2-ci/login-app#main" -] diff --git a/dhis-2/dhis-web-apps/pom.xml b/dhis-2/dhis-web-apps/pom.xml deleted file mode 100644 index 72ed8b79453e..000000000000 --- a/dhis-2/dhis-web-apps/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - 4.0.0 - - - org.hisp.dhis - dhis - 2.42-SNAPSHOT - - - dhis-web-apps - war - DHIS Web Apps - - - ../ - - - - - org.junit.jupiter - junit-jupiter - test - - - - - dhis-web-apps - - - - com.github.eirslett - frontend-maven-plugin - 1.15.0 - - target - - ${project.build.directory} - ${project.artifactId} - ./apps-to-bundle.json - master - - - - - - install node and npm - - install-node-and-npm - - generate-resources - - v16.13.2 - - - - - npm install - - npm - - generate-resources - - - - clone apps - - npm - - generate-resources - - run bundle-apps - - - - - - - - - diff --git a/dhis-2/dhis-web-apps/src/main/webapp/WEB-INF/classes/velocity.properties b/dhis-2/dhis-web-apps/src/main/webapp/WEB-INF/classes/velocity.properties deleted file mode 100644 index 56d1a99a0e7e..000000000000 --- a/dhis-2/dhis-web-apps/src/main/webapp/WEB-INF/classes/velocity.properties +++ /dev/null @@ -1,3 +0,0 @@ -resource.loader = dev -dev.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader -dev.resource.loader.path = src/main/webapp \ No newline at end of file diff --git a/dhis-2/dhis-web-apps/README.md b/dhis-2/dhis-web-server/README.md similarity index 100% rename from dhis-2/dhis-web-apps/README.md rename to dhis-2/dhis-web-server/README.md diff --git a/dhis-2/dhis-web-server/apps-to-bundle.json b/dhis-2/dhis-web-server/apps-to-bundle.json new file mode 100644 index 000000000000..e4bae6a9240a --- /dev/null +++ b/dhis-2/dhis-web-server/apps-to-bundle.json @@ -0,0 +1,29 @@ +[ + "https://github.com/d2-ci/aggregate-data-entry-app", + "https://github.com/d2-ci/approval-app", + "https://github.com/d2-ci/app-management-app", + "https://github.com/d2-ci/cache-cleaner-app", + "https://github.com/d2-ci/capture-app", + "https://github.com/d2-ci/dashboard-app", + "https://github.com/d2-ci/data-administration-app", + "https://github.com/d2-ci/data-visualizer-app", + "https://github.com/d2-ci/data-quality-app", + "https://github.com/d2-ci/datastore-app", + "https://github.com/d2-ci/event-reports-app", + "https://github.com/d2-ci/event-charts-app", + "https://github.com/d2-ci/import-export-app", + "https://github.com/d2-ci/interpretation-app", + "https://github.com/d2-ci/maintenance-app", + "https://github.com/d2-ci/maps-app", + "https://github.com/d2-ci/menu-management-app", + "https://github.com/d2-ci/messaging-app", + "https://github.com/d2-ci/reports-app", + "https://github.com/d2-ci/scheduler-app", + "https://github.com/d2-ci/sms-configuration-app", + "https://github.com/d2-ci/settings-app", + "https://github.com/d2-ci/translations-app", + "https://github.com/d2-ci/usage-analytics-app", + "https://github.com/d2-ci/user-app", + "https://github.com/d2-ci/user-profile-app", + "https://github.com/d2-ci/login-app#main" +] diff --git a/dhis-2/dhis-web-apps/package-lock.json b/dhis-2/dhis-web-server/package-lock.json similarity index 100% rename from dhis-2/dhis-web-apps/package-lock.json rename to dhis-2/dhis-web-server/package-lock.json diff --git a/dhis-2/dhis-web-apps/package.json b/dhis-2/dhis-web-server/package.json similarity index 100% rename from dhis-2/dhis-web-apps/package.json rename to dhis-2/dhis-web-server/package.json diff --git a/dhis-2/dhis-web-server/pom.xml b/dhis-2/dhis-web-server/pom.xml index c652eb5435c5..52d938f4a04b 100644 --- a/dhis-2/dhis-web-server/pom.xml +++ b/dhis-2/dhis-web-server/pom.xml @@ -15,18 +15,11 @@ ../ ${maven.build.timestamp} - org.hisp.dhis.web.tomcat.Main 9.0.90 3.3.3 - default - - org.hisp.dhis - dhis-web-apps - war - org.hisp.dhis dhis-web-api @@ -57,22 +50,10 @@ tomcat-embed-core ${tomcat.version} - - org.eclipse.jetty - jetty-servlet - - - org.eclipse.jetty - jetty-server - org.springframework spring-core - - javax.media - jai_imageio - org.projectlombok lombok @@ -103,18 +84,10 @@ dhis-service-administration jar - - org.eclipse.jetty - jetty-util - org.springframework spring-web - - org.springframework - spring-context - org.slf4j slf4j-api @@ -123,14 +96,6 @@ javax.servlet javax.servlet-api - - com.google.guava - guava - - - org.springframework.security - spring-security-web - org.hisp.dhis dhis-support-system @@ -159,107 +124,98 @@ com.google.cloud.tools jib-maven-plugin ${jib.version} + + + + + -Dcontext.path="" + + + ${project.version} + + /usr/local/tomcat/webapps/ROOT + + + + com.google.cloud.tools.jib.maven.extension.ownership.JibOwnershipExtension + + + + + /opt/dhis2 + ${jib.container.user}:${jib.container.user} + + + /opt/dhis2/** + ${jib.container.user}:${jib.container.user} + + + + + + + + + com.google.cloud.tools + jib-ownership-extension-maven + 0.1.0 + + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + false + + dhis-web-apps/template.html + + true + + + - - org.apache.maven.plugins - maven-dependency-plugin + org.codehaus.mojo + exec-maven-plugin + + npm + + run + bundle-apps + + + ${project.build.directory}/classes/static + dhis-web-apps + ./apps-to-bundle.json + master + + + bundle-apps - unpack + exec - - - - org.hisp.dhis - dhis-web-apps - ${project.version} - war - **/* - - - ${project.build.directory}/classes/static - + generate-resources - org.apache.maven.plugins maven-war-plugin - ${maven-war-plugin.version} - - false - true - **/web.xml - - ${useWarCompression} - - dhis-web-*/** - - - - com.google.cloud.tools - jib-maven-plugin - ${jib.version} - - - - - -Dcontext.path="" - - - ${project.version} - - /usr/local/tomcat/webapps/ROOT - - - - com.google.cloud.tools.jib.maven.extension.ownership.JibOwnershipExtension - - - - - /opt/dhis2 - ${jib.container.user}:${jib.container.user} - - - /opt/dhis2/** - ${jib.container.user}:${jib.container.user} - - - - - - - - - com.google.cloud.tools - jib-ownership-extension-maven - 0.1.0 - - - - - - default - - - - !activeProfile - - + embedded @@ -273,12 +229,6 @@ false - - - org.hisp.dhis - dhis-web-apps - - @@ -334,6 +284,14 @@ + + + + build + + package + + @@ -360,159 +318,5 @@ - - - no-boot - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - boot-war - - none - - - - - - - - - - jetty - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.6.0 - - - rebuild - - shade - - package - - false - - - *:* - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - META-INF/VERSION.txt - META-INF/LICENSE.txt - META-INF/notice.txt - - - - - - javax.annotation:* - - META-INF/MANIFEST.MF - - - - javax.servlet:* - - META-INF/MANIFEST.MF - - - - javax.websocket:* - - META-INF/MANIFEST.MF - - - - org.eclipse.jetty:* - - META-INF/MANIFEST.MF - - - - org.eclipse.jetty.websocket:* - - META-INF/MANIFEST.MF - - - - org.ow2.asm:* - - META-INF/MANIFEST.MF - - - - - - - ${mainClass} - ${project.artifactId} - ${project.version} - ${project.groupId} - ${project.artifactId} - ${project.version} - ${project.groupId} - - - - - - - - META-INF/spring.handlers - - - META-INF/spring.schemas - - - - - META-INF/services/org.jclouds.apis.ApiMetadata - - - - META-INF/services/javax.imageio.spi.ImageInputStreamSpi - - - - META-INF/services/javax.imageio.spi.ImageOutputStreamSpi - - - - META-INF/services/javax.imageio.spi.ImageReaderSpi - - - - META-INF/services/javax.imageio.spi.ImageWriterSpi - - - - META-INF/services/com.sun.media.imageioimpl.stream.ChannelImageInputStreamSpi - - - - - - - - - - - diff --git a/dhis-2/dhis-web-apps/scripts/bundle-apps.js b/dhis-2/dhis-web-server/scripts/bundle-apps.js similarity index 84% rename from dhis-2/dhis-web-apps/scripts/bundle-apps.js rename to dhis-2/dhis-web-server/scripts/bundle-apps.js index 715ab3184279..3ea82d3e8d30 100644 --- a/dhis-2/dhis-web-apps/scripts/bundle-apps.js +++ b/dhis-2/dhis-web-server/scripts/bundle-apps.js @@ -36,22 +36,22 @@ async function main(opts = {}) { const { apps, artifact, build_dir, root } = opts // paths for resources - const target_path = path.join(build_dir, artifact) + const target_path = build_dir const bundle_path = path.join(target_path, artifact, 'apps-bundle.json') const html_template_path = path.join(root, 'src', 'main', 'webapp', 'dhis-web-apps', 'template.html') - const html_index_path = path.join(build_dir, artifact, artifact, 'index.html') + const html_index_path = path.join(target_path, artifact, 'index.html') const xml_template_path = path.join(root, 'src', 'main', 'resources') try { await access(bundle_path) - console.log(`${path.basename(bundle_path)} exists; re-use cached apps for bundle`) + console.log(`${path.basename(bundle_path)} exists; reuse cached apps for bundle`) process.exit(0) } catch (err) { console.log(`${path.basename(bundle_path)} doesn't exist; run full bundle operation`) } try { - await mkdir(target_path) + await mkdir(target_path, { recursive: true }) } catch (err) { if (err.code === 'EEXIST') { console.log(`[bundle] ${target_path} exists already`) @@ -63,7 +63,7 @@ async function main(opts = {}) { const new_apps = [] for (const app of apps) { - const promise = clone_app(app, path.join(build_dir, artifact), default_branch) + const promise = clone_app(app, path.join(target_path), default_branch) new_apps.push(promise) } diff --git a/dhis-2/dhis-web-apps/scripts/copy-apps.js b/dhis-2/dhis-web-server/scripts/copy-apps.js similarity index 100% rename from dhis-2/dhis-web-apps/scripts/copy-apps.js rename to dhis-2/dhis-web-server/scripts/copy-apps.js diff --git a/dhis-2/dhis-web-apps/scripts/git.js b/dhis-2/dhis-web-server/scripts/git.js similarity index 100% rename from dhis-2/dhis-web-apps/scripts/git.js rename to dhis-2/dhis-web-server/scripts/git.js diff --git a/dhis-2/dhis-web-apps/scripts/lib/sanitize.js b/dhis-2/dhis-web-server/scripts/lib/sanitize.js similarity index 100% rename from dhis-2/dhis-web-apps/scripts/lib/sanitize.js rename to dhis-2/dhis-web-server/scripts/lib/sanitize.js diff --git a/dhis-2/dhis-web-apps/scripts/write-bundle-json.js b/dhis-2/dhis-web-server/scripts/write-bundle-json.js similarity index 100% rename from dhis-2/dhis-web-apps/scripts/write-bundle-json.js rename to dhis-2/dhis-web-server/scripts/write-bundle-json.js diff --git a/dhis-2/dhis-web-apps/scripts/write-index-html.js b/dhis-2/dhis-web-server/scripts/write-index-html.js similarity index 100% rename from dhis-2/dhis-web-apps/scripts/write-index-html.js rename to dhis-2/dhis-web-server/scripts/write-index-html.js diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyBase.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyBase.java deleted file mode 100644 index 307304d85666..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyBase.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import com.google.common.base.Preconditions; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.stream.Collectors; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; -import org.eclipse.jetty.server.handler.HandlerList; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.springframework.core.io.ClassPathResource; - -@Slf4j -public abstract class EmbeddedJettyBase { - protected EmbeddedJettyBase() { - Thread.currentThread() - .setUncaughtExceptionHandler(EmbeddedJettyUncaughtExceptionHandler.systemExit(log)); - } - - public void startJetty() throws Exception { - Integer queueSize = getIntSystemProperty("jetty.thread.queue", 6000); - BlockingQueue queue = new ArrayBlockingQueue<>(queueSize); - - Integer maxThreads = getIntSystemProperty("jetty.threads.max", 200); - QueuedThreadPool threadPool = new InstrumentedQueuedThreadPool(maxThreads, 10, 60000, queue); - - threadPool.setDetailedDump(getBooleanSystemProperty("jetty.detailedDump", false)); - - Server server = new Server(threadPool); - server.addBean(new org.eclipse.jetty.util.thread.ScheduledExecutorScheduler()); - - HandlerList handlers = new HandlerList(); - handlers.setHandlers(new Handler[] {getServletContextHandler(), new DefaultHandler()}); - server.setHandler(handlers); - - final HttpConfiguration httpConfig = getHttpConfiguration(); - addHttpConnector(server, httpConfig); - - server.setStopAtShutdown(true); - server.setStopTimeout(5000); - server.setDumpBeforeStop(getBooleanSystemProperty("jetty.dumpBeforeStop", false)); - server.setDumpAfterStart(getBooleanSystemProperty("jetty.dumpBeforeStart", false)); - - server.start(); - server.join(); - - log.info("DHIS2 Server stopped!"); - } - - private void addHttpConnector(Server server, HttpConfiguration httpConfig) { - setDefaultPropertyValue("jetty.port", System.getProperty("jetty.http.port")); - server.addConnector(setupHTTPConnector(server, httpConfig)); - } - - private HttpConfiguration getHttpConfiguration() { - HttpConfiguration httpConfig = new HttpConfiguration(); - httpConfig.setOutputBufferSize(32768); - httpConfig.setRequestHeaderSize(8192); - httpConfig.setResponseHeaderSize(8192); - httpConfig.setSendServerVersion(true); - httpConfig.setSendDateHeader(false); - httpConfig.setHeaderCacheSize(512); - return httpConfig; - } - - private Connector setupHTTPConnector(Server server, HttpConfiguration httpConfig) { - ServerConnector httpConnector = - new ServerConnector( - server, - getIntSystemProperty("jetty.http.acceptors", -1), - getIntSystemProperty("jetty.http.selectors", -1), - new HttpConnectionFactory(httpConfig)); - - httpConnector.setHost(getStringSystemProperty("jetty.host", null)); - httpConnector.setPort(getIntSystemProperty("jetty.http.port", -1)); - httpConnector.setIdleTimeout(getIntSystemProperty("jetty.http.idleTimeout", 300000)); - - return httpConnector; - } - - protected void printBanner(String name) { - String msg = "Starting: " + name; - try (final InputStream resourceStream = new ClassPathResource("banner.txt").getInputStream(); - final InputStreamReader inputStreamReader = - new InputStreamReader(resourceStream, StandardCharsets.UTF_8); - final BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { - final String banner = bufferedReader.lines().collect(Collectors.joining(String.format("%n"))); - msg = String.format("Starting: %n%s", banner); - } catch (IllegalArgumentException | IOException ignored) { - // Ignore - } - log.info(msg); - } - - public static Boolean getBooleanSystemProperty(String key, Boolean defaultValue) { - Preconditions.checkNotNull(key, "Key can not be NULL!"); - return Boolean.valueOf(System.getProperty(key, defaultValue.toString())); - } - - public static String getStringSystemProperty(String key, String defaultValue) { - Preconditions.checkNotNull(key, "'key' can not be NULL!"); - return System.getProperty(key, defaultValue); - } - - public static Integer getIntSystemProperty(String key, Integer defaultValue) { - Preconditions.checkNotNull(key, "Key can not be NULL!"); - return Integer.valueOf(System.getProperty(key, String.valueOf(defaultValue))); - } - - public static void setDefaultPropertyValue(String key, String defaultValue) { - Preconditions.checkNotNull(key); - Preconditions.checkNotNull(defaultValue); - String property = System.getProperty(key, defaultValue); - System.setProperty(key, property); - } - - public abstract ServletContextHandler getServletContextHandler(); -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyUncaughtExceptionHandler.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyUncaughtExceptionHandler.java deleted file mode 100644 index 80377556c8fd..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/EmbeddedJettyUncaughtExceptionHandler.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import org.slf4j.Logger; - -public final class EmbeddedJettyUncaughtExceptionHandler { - - private EmbeddedJettyUncaughtExceptionHandler() {} - - /** - * Returns an exception handler that exits the system. This is particularly useful for the main - * thread, which may start up other, non-daemon threads, but fail to fully initialize the - * application successfully. - * - *

Example usage: - * - *

-   * public static void main(String[] args) {
-   *   Thread.currentThread().setUncaughtExceptionHandler(UncaughtExceptionHandlers.systemExit());
-   *   ...
-   * 
- * - *

The returned handler logs any exception as error and then shuts down the process with an - * exit status of 1, indicating abnormal termination. - */ - public static Thread.UncaughtExceptionHandler systemExit(Logger log) { - return new Exiter(log, Runtime.getRuntime()); - } - - static final class Exiter implements Thread.UncaughtExceptionHandler { - private final Runtime runtime; - - private final Logger logger; - - Exiter(Logger log, Runtime runtime) { - this.logger = log; - this.runtime = runtime; - } - - @Override - public void uncaughtException(Thread t, Throwable e) { - try { - logger.error(String.format("Caught an exception in %s. Shutting down.", t), e); - } catch (Throwable errorInLogging) { - // If logging fails, e.g. due to low memory conditions, at least - // try to log the message and the cause for the failed logging - // to system error - System.err.println(e.getMessage()); - System.err.println(errorInLogging.getMessage()); - } finally { - runtime.exit(1); - } - } - } -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/InstrumentedQueuedThreadPool.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/InstrumentedQueuedThreadPool.java deleted file mode 100644 index 87e7ba701bf6..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/InstrumentedQueuedThreadPool.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import java.util.concurrent.BlockingQueue; -import org.eclipse.jetty.util.thread.QueuedThreadPool; - -/** - * DHIS2 specific implementation of {@link - * io.micrometer.core.instrument.binder.jetty.InstrumentedQueuedThreadPool} Created to implement - * support for more fine grained control over thread parameters - */ -public class InstrumentedQueuedThreadPool extends QueuedThreadPool { - public InstrumentedQueuedThreadPool( - int maxThreads, int minThreads, int idleTimeout, BlockingQueue queue) { - super(maxThreads, minThreads, idleTimeout, queue); - } -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/JettyStartupTimerSpringConfig.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/JettyStartupTimerSpringConfig.java deleted file mode 100644 index 09b6f764ff00..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/JettyStartupTimerSpringConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; - -/** - * Configuration class for a simple startup timer for embedded Jetty. - * - * @author Morten Svanæs - */ -@Configuration -@Order(100) -@ComponentScan(basePackages = {"org.hisp.dhis"}) -public class JettyStartupTimerSpringConfig { - - @Bean("org.hisp.dhis.web.embeddedjetty.StartupFinishedRoutine") - public StartupFinishedRoutine startupFinishedRoutine() { - StartupFinishedRoutine startupRoutine = new StartupFinishedRoutine(); - startupRoutine.setName("StartupFinishedRoutine"); - startupRoutine.setRunlevel(42); - startupRoutine.setSkipInTests(true); - return startupRoutine; - } -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/Main.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/Main.java deleted file mode 100644 index e9eb12212fef..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/Main.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import static org.hisp.dhis.webapi.servlet.DhisWebApiWebAppInitializer.setupServlets; -import static org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME; - -import java.security.Security; -import java.util.EnumSet; -import javax.servlet.DispatcherType; -import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.servlet.FilterHolder; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.hisp.dhis.system.startup.StartupListener; -import org.springframework.security.web.session.HttpSessionEventPublisher; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.filter.DelegatingFilterProxy; - -/** - * This class is the main entry point for the embedded server. It starts an embedded Jetty server - * and deploys the DHIS2 API web application. - * - * @author Morten Svanæs - */ -public class Main extends EmbeddedJettyBase { - - private static final int DEFAULT_HTTP_PORT = 9090; - private static final String SERVER_HOSTNAME_OR_IP = "localhost"; - private static final Long ELAPSED_SINCE_START = System.currentTimeMillis(); - - public Main() { - super(); - } - - public static void main(String[] args) throws Exception { - Security.setProperty("crypto.policy", "unlimited"); - Security.setProperty("networkaddress.cache.ttl", "FOREVER"); - Security.setProperty("networkaddress.cache.negative.ttl", "10"); - - setDefaultPropertyValue("jetty.host", SERVER_HOSTNAME_OR_IP); - setDefaultPropertyValue("jetty.http.port", String.valueOf(DEFAULT_HTTP_PORT)); - - setDefaultPropertyValue("spring.profiles.active", "embeddedJetty"); - - Main jettyEmbeddedCoreWeb = new Main(); - jettyEmbeddedCoreWeb.printBanner("DHIS2 API Server"); - jettyEmbeddedCoreWeb.startJetty(); - } - - public ServletContextHandler getServletContextHandler() { - ServletContextHandler contextHandler = - new ServletContextHandler(ServletContextHandler.SESSIONS); - contextHandler.setErrorHandler(null); - - RequestContextListener requestContextListener = new RequestContextListener(); - contextHandler.addEventListener(requestContextListener); - - AnnotationConfigWebApplicationContext webApplicationContext = getWebApplicationContext(); - contextHandler.addEventListener(new ContextLoaderListener(webApplicationContext)); - contextHandler.addEventListener(new StartupListener()); - contextHandler.addEventListener(new HttpSessionEventPublisher()); - - // Spring Security Filter - contextHandler.addFilter( - new FilterHolder(new DelegatingFilterProxy(DEFAULT_FILTER_NAME)), - "/*", - EnumSet.allOf(DispatcherType.class)); - - ContextHandler.Context context = contextHandler.getServletContext(); - - setupServlets(context, webApplicationContext); - - return contextHandler; - } - - private static AnnotationConfigWebApplicationContext getWebApplicationContext() { - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - context.register(JettyStartupTimerSpringConfig.class); - return context; - } - - public static Long getElapsedMsSinceStart() { - return System.currentTimeMillis() - ELAPSED_SINCE_START; - } -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/StartupFinishedRoutine.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/StartupFinishedRoutine.java deleted file mode 100644 index 5eeeae10acde..000000000000 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/jetty/StartupFinishedRoutine.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004-2022, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.hisp.dhis.web.jetty; - -import lombok.extern.slf4j.Slf4j; -import org.hisp.dhis.system.startup.AbstractStartupRoutine; - -/** - * @author Morten Svanæs - */ -@Slf4j -public class StartupFinishedRoutine extends AbstractStartupRoutine { - @Override - public void execute() throws Exception { - log.info( - String.format( - "DHIS2 API Server Startup Finished In %s Seconds! Running on port: %s", - (Main.getElapsedMsSinceStart() / 1000), System.getProperty("jetty.http.port"))); - } -} diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/Main.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/Main.java index 2f07db6921a1..c7bae342bb5b 100644 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/Main.java +++ b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/Main.java @@ -27,8 +27,6 @@ */ package org.hisp.dhis.web.tomcat; -import static org.hisp.dhis.util.ObjectUtils.firstNonNull; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -81,16 +79,13 @@ public class Main { private static final int DEFAULT_HTTP_PORT = 8080; private static int getPort() { - return Integer.parseInt( - firstNonNull(System.getenv("DHIS2_HTTP_PORT"), Integer.toString(DEFAULT_HTTP_PORT))); + return Integer.parseInt(System.getProperty("server.port", Integer.toString(DEFAULT_HTTP_PORT))); } public static void main(String[] args) throws Exception { - - int port = getPort(); - Tomcat tomcat = new Tomcat(); tomcat.setBaseDir(createTempDir()); + int port = getPort(); tomcat.setPort(port); Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); diff --git a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/TldPatterns.java b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/TldPatterns.java index 93552da35496..2c7a086c3459 100644 --- a/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/TldPatterns.java +++ b/dhis-2/dhis-web-server/src/main/java/org/hisp/dhis/web/tomcat/TldPatterns.java @@ -97,7 +97,6 @@ final class TldPatterns { skipPatterns.add("jaxen-*.jar"); skipPatterns.add("jaxws-rt-*.jar"); skipPatterns.add("jdom-*.jar"); - skipPatterns.add("jetty-*.jar"); skipPatterns.add("jmx-tools.jar"); skipPatterns.add("jmx.jar"); skipPatterns.add("jsp-api.jar"); diff --git a/dhis-2/dhis-web-server/src/main/resources/jetty-logging.properties b/dhis-2/dhis-web-server/src/main/resources/jetty-logging.properties deleted file mode 100644 index 55ffcb03a1b7..000000000000 --- a/dhis-2/dhis-web-server/src/main/resources/jetty-logging.properties +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright (c) 2004-2022, University of Oslo -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# Neither the name of the HISP project nor the names of its contributors may -# be used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# File to add Jetty specific logging config https://www.eclipse.org/jetty/documentation/jetty-11/programming-guide/index.html#pg-troubleshooting-logging \ No newline at end of file diff --git a/dhis-2/dhis-web-apps/src/main/webapp/dhis-web-apps/template.html b/dhis-2/dhis-web-server/src/main/webapp/dhis-web-apps/template.html similarity index 100% rename from dhis-2/dhis-web-apps/src/main/webapp/dhis-web-apps/template.html rename to dhis-2/dhis-web-server/src/main/webapp/dhis-web-apps/template.html diff --git a/dhis-2/dhis-web-server/src/test/java/org/hisp/dhis/auth/AuthTest.java b/dhis-2/dhis-web-server/src/test/java/org/hisp/dhis/auth/AuthTest.java index 40d5f34c1a49..38b5b2b98402 100644 --- a/dhis-2/dhis-web-server/src/test/java/org/hisp/dhis/auth/AuthTest.java +++ b/dhis-2/dhis-web-server/src/test/java/org/hisp/dhis/auth/AuthTest.java @@ -78,7 +78,6 @@ class AuthTest { @BeforeAll static void setup() throws Exception { - availablePort = findAvailablePort(); POSTGRES_CONTAINER = @@ -107,8 +106,8 @@ static void setup() throws Exception { new Thread( () -> { try { - System.setProperty("jetty.http.port", Integer.toString(availablePort)); - org.hisp.dhis.web.jetty.Main.main(null); + System.setProperty("server.port", Integer.toString(availablePort)); + org.hisp.dhis.web.tomcat.Main.main(null); } catch (InterruptedException ignored) { } catch (Exception e) { throw new RuntimeException(e); @@ -126,15 +125,15 @@ private static void createTmpDhisConf() { log.info("JDBC URL: " + jdbcUrl); String multiLineString = """ - connection.dialect = org.hibernate.dialect.PostgreSQLDialect - connection.driver_class = org.postgresql.Driver - connection.url = %s - connection.username = dhis - connection.password = dhis - # Database schema behavior, can be validate, update, create, create-drop - connection.schema = update - system.audit.enabled = false - """ + connection.dialect = org.hibernate.dialect.PostgreSQLDialect + connection.driver_class = org.postgresql.Driver + connection.url = %s + connection.username = dhis + connection.password = dhis + # Database schema behavior, can be validate, update, create, create-drop + connection.schema = update + system.audit.enabled = false + """ .formatted(jdbcUrl); try { String tmpDir = System.getProperty("java.io.tmpdir"); diff --git a/dhis-2/pom.xml b/dhis-2/pom.xml index ae4e6e32dd46..ff0798893ecf 100644 --- a/dhis-2/pom.xml +++ b/dhis-2/pom.xml @@ -9,8 +9,7 @@ DHIS2 is a free and open-source software platform for collecting, managing, analyzing, and sharing data. It supports online and offline data capture via web and mobile devices, and includes built-in features for data validation and visualization. - The generic DHIS2 data model supports both routine aggregate/statistical data collection and individual/event data, a - nd can be applied to use cases in any sector, allowing decentralized access to data throughout an organizational hierarchy. + The generic DHIS2 data model supports both routine aggregate/statistical data collection and individual/event data, and can be applied to use cases in any sector, allowing decentralized access to data throughout an organizational hierarchy. DHIS2 is fully customizable through the user interface without the need for coding skills, and can be extended with custom applications, scripts, and integrations. Each DHIS2 instance and the data stored within it are locally owned and managed. @@ -40,7 +39,6 @@ dhis-test-web-api dhis-test-coverage dhis-test-integration - dhis-web-apps dhis-web-server @@ -60,7 +58,7 @@ - ${project.basedir}/src/main/java @@ -74,7 +72,7 @@ https://sonarcloud.io -Xmx2024m - false @@ -86,7 +84,6 @@ 65534 /usr/local/tomcat/webapps/ROOT - true 8.5.47 1.1.6 3.4.0 @@ -185,7 +182,6 @@ 3.0.1 2.9.0 1.18.1 - 10.0.24 33.3.0-jre @@ -236,6 +232,7 @@ 3.5.0 3.13.0 + 3.4.1 3.3.1 3.5.0 3.10.0 @@ -259,12 +256,6 @@ - - org.hisp.dhis - dhis-web-apps - ${project.version} - war - org.hisp.dhis dhis-api @@ -1579,32 +1570,6 @@ semver4j ${semver4j.version} - - org.eclipse.jetty - jetty-rewrite - ${jetty.version} - - - org.eclipse.jetty - jetty-util - ${jetty.version} - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} - - - org.eclipse.jetty - jetty-server - ${jetty.version} - - - org.eclipse.jetty.toolchain - jetty-servlet-api - - - @@ -1667,8 +1632,8 @@ ${mockito.version} test - org.mockito @@ -1727,9 +1692,9 @@ org.hamcrest hamcrest-core - - io.lettuce:lettuce-core - org.apache.struts:struts2-spring-plugin + org.apache.velocity.tools:velocity-tools-generic org.springframework:spring-context-support + org.springframework:spring-web org.apache.xmlgraphics:batik-codec commons-fileupload:commons-fileupload @@ -2080,8 +2049,6 @@ jasperreports.version=${jasperreports.version} org.apache.jclouds.api:s3 org.hibernate:hibernate-ehcache - - javax.media:jai_imageio org.hisp.dhis:dhis-support-hibernate org.hisp.dhis:dhis-support-db-migration @@ -2096,7 +2063,6 @@ jasperreports.version=${jasperreports.version} org.hisp.dhis:dhis-web-commons org.hisp.dhis:dhis-web-dataentry org.hisp.dhis:dhis-web-approval - org.hisp.dhis:dhis-web-apps org.flywaydb:flyway-core @@ -2110,7 +2076,6 @@ jasperreports.version=${jasperreports.version} org.springframework:spring-jcl ognl:ognl org.springframework.session:spring-session-core - org.eclipse.jetty.toolchain:jetty-servlet-api @@ -2118,6 +2083,9 @@ jasperreports.version=${jasperreports.version} io.debezium:debezium-connector-postgres org.springframework.security:spring-security-core com.fasterxml.jackson.core:jackson-databind + + org.springframework:spring-web + org.hisp.dhis:dhis-support-system diff --git a/dhis-2/run-api.sh b/dhis-2/run-api.sh index 388c892d6810..d5202af38281 100755 --- a/dhis-2/run-api.sh +++ b/dhis-2/run-api.sh @@ -1,38 +1,34 @@ #!/usr/bin/env bash -# Command for running DHIS 2 in an embedded Jetty container +# Command for running DHIS2 in an embedded Tomcat # Requires JDK 11 # Supported options: # -# -d DHIS 2 home directory -# -h Hostname (default is localhost) +# -d DHIS2 home directory # -p Port number (default is 9090) # -s Skip compilation of source code # -m Print this manual set -e -# DHIS 2 home directory +# DHIS2 home directory DHIS2_HOME_DIR="/opt/dhis2" -# Hostname or IP for DHIS2/Jetty to listen -DHIS2_HOSTNAME="localhost" -# Port number for DHIS2/Jetty to listen +# Port number for DHIS2 to listen to DHIS2_PORT=9090 -# Skip compilation of DHIS 2 source code +# Skip compilation of DHIS2 source code SKIP_COMPILE=0 -# Set DHIS 2 home directory to DHIS2_HOME_DIR env variable if set +# Set DHIS2 home directory to DHIS2_HOME_DIR env variable if set if [[ -v "$DHIS2_HOME" ]]; then DHIS2_HOME_DIR=$DHIS2_HOME fi # Print usage help function print_usage() { - echo "Usage: $0 [-d dhis2_home] [-h hostname] [-p port] [-s]" >&2 - echo " -d DHIS 2 home directory" >&2 - echo " -h Hostname (default is localhost)" >&2 + echo "Usage: $0 [-d dhis2_home] [-p port] [-s]" >&2 + echo " -d DHIS2 home directory" >&2 echo " -s Skip compilation of source code" >&2 echo " -p Port number (default is 9090)" >&2 echo " -m Print this manual" >&2 @@ -42,39 +38,36 @@ function print_usage() { function print_variables() { echo "JAVA_HOME: $JAVA_HOME" echo "DHIS2_HOME_DIR: $DHIS2_HOME_DIR" - echo "HOSTNAME: $DHIS2_HOSTNAME" echo "PORT: $DHIS2_PORT" echo "SKIP_COMPILE: $SKIP_COMPILE" echo "" } -# Start DHIS 2 in embedded Jetty container +# Start DHIS2 in embedded Tomcat function start_dhis2() { + DHIS2_HTTP_PORT="$DHIS2_PORT" \ + DHIS2_HOME="$DHIS2_HOME_DIR" \ java \ - -Ddhis2.home=$DHIS2_HOME_DIR \ - -Djetty.host=$DHIS2_HOSTNAME \ - -Djetty.http.port=$DHIS2_PORT \ + -Ddhis2.home="$DHIS2_DHIS2_HOME_DIR" \ + -Dserver.port="$DHIS2_PORT" \ -jar "$(dirname "$0")/dhis-web-server/target/dhis.war" } -# Build and install DHIS 2 source code without running tests +# Build and install DHIS2 source code without running tests function build_dhis2() { - mvn clean install \ - -f "$(dirname "$0")/pom.xml" \ - --batch-mode \ - -Pdev -T 100C \ - -DskipTests -Dmaven.test.skip=true -Dmaven.site.skip=true -Dmaven.javadoc.skip=true + mvn clean package \ + --file "$(dirname "$0")/pom.xml" \ + --batch-mode --threads 100C \ + -DskipTests -Dmaven.test.skip=true -Dmaven.site.skip=true -Dmaven.javadoc.skip=true \ + --activate-profiles dev,embedded } # Read command line options -while getopts "d:h:p:sm" OPT; do +while getopts "d:p:sm" OPT; do case "$OPT" in d) DHIS2_HOME_DIR=$OPTARG ;; - h) - DHIS2_HOSTNAME=$OPTARG - ;; p) DHIS2_PORT=$OPTARG ;; @@ -106,6 +99,5 @@ if [[ $SKIP_COMPILE == 0 ]]; then build_dhis2 fi -# Start DHIS 2 start_dhis2 exit 0 diff --git a/jenkinsfiles/canary b/jenkinsfiles/canary index 24a8e63db3c5..463f291e93b4 100644 --- a/jenkinsfiles/canary +++ b/jenkinsfiles/canary @@ -30,14 +30,14 @@ pipeline { def formatted = "${today.format('yyyyMMdd')}" def source = "dhis2/core-dev:${branch}" def target = "dhis2/core-canary:${branch}" - + sh "docker pull ${source}" sh "docker tag ${source} ${target}" sh "docker tag ${source} ${target}-${formatted}" withDockerRegistry([credentialsId: "docker-hub-credentials", url: ""]) { sh "docker push ${target}" sh "docker push ${target}-${formatted}" - } + } } } } @@ -47,7 +47,7 @@ pipeline { echo 'Building DHIS2 ...' script { withMaven(options: [artifactsPublisher(disabled: true)]) { - sh 'mvn -X -T 4 --batch-mode --no-transfer-progress clean install -f dhis-2/pom.xml -P -default --update-snapshots -pl -dhis-test-coverage' + sh 'mvn --threads 4 --batch-mode --no-transfer-progress clean install --file dhis-2/pom.xml --activate-profiles -default --update-snapshots' } } } diff --git a/jenkinsfiles/dev b/jenkinsfiles/dev index 41204e359419..373d1693c5ba 100644 --- a/jenkinsfiles/dev +++ b/jenkinsfiles/dev @@ -37,7 +37,7 @@ pipeline { gitHelper.setCommitStatus("${env.DHIS2_COMMIT_SHA}", "${env.DHIS2_REPO_URL}") withMaven(options: [artifactsPublisher(disabled: true)]) { - sh 'mvn -T 4 --batch-mode --no-transfer-progress clean install -f dhis-2/pom.xml -P -default --update-snapshots -pl -dhis-test-coverage' + sh 'mvn --threads 4 --batch-mode --no-transfer-progress clean install --file dhis-2/pom.xml --activate-profiles -default --update-snapshots' } } } @@ -75,8 +75,8 @@ pipeline { steps { withDockerRegistry([credentialsId: "docker-hub-credentials", url: ""]) { withMaven(options: [artifactsPublisher(disabled: true)]) { - sh "mvn --batch-mode --no-transfer-progress -DactiveProfile=PjibBuild -DskipTests -Dmaven.test.skip=true \ - -f dhis-2/dhis-web-server/pom.xml jib:build -PjibBuild \ + sh "mvn --batch-mode --no-transfer-progress -DskipTests -Dmaven.test.skip=true \ + --file dhis-2/dhis-web-server/pom.xml --activate-profiles jibBuild jib:build \ -Djib.from.image=${DOCKER_IMAGE_NAME_BASE_FULL} -Djib.to.image=${DOCKER_IMAGE_NAME_FULL} \ -Djib.container.labels=DHIS2_VERSION=${DHIS2_VERSION},DHIS2_BUILD_REVISION=${GIT_COMMIT},DHIS2_BUILD_BRANCH=${env.GIT_BRANCH}" } diff --git a/jenkinsfiles/eos b/jenkinsfiles/eos index 9bad3567e3e7..1fb494f662cd 100644 --- a/jenkinsfiles/eos +++ b/jenkinsfiles/eos @@ -26,7 +26,7 @@ pipeline { echo 'Building DHIS2 ...' script { withMaven(options: [artifactsPublisher(disabled: true)]) { - sh 'mvn -X -T 4 --batch-mode --no-transfer-progress clean install -f dhis-2/pom.xml -P -default --update-snapshots -pl -dhis-test-coverage' + sh 'mvn --threads 4 --batch-mode --no-transfer-progress clean install --file dhis-2/pom.xml --activate-profiles -default --update-snapshots' } } } diff --git a/jenkinsfiles/stable b/jenkinsfiles/stable index 6868aa4e7995..28f2b0bd2572 100644 --- a/jenkinsfiles/stable +++ b/jenkinsfiles/stable @@ -52,7 +52,7 @@ pipeline { echo 'Building DHIS2 ...' script { withMaven(options: [artifactsPublisher(disabled: true)]) { - sh 'mvn -X -T 4 --batch-mode --no-transfer-progress clean install -f dhis-2/pom.xml -P -default --update-snapshots -pl -dhis-test-coverage' + sh 'mvn --threads 4 --batch-mode --no-transfer-progress clean install --file dhis-2/pom.xml --activate-profiles -default --update-snapshots' } } } From 8583e70cc7f9ce77893db9ac92d444a99059ed50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 09:49:05 +0200 Subject: [PATCH 2/4] chore(deps): bump mapstruct.version from 1.6.0 to 1.6.2 in /dhis-2 (#18662) Bumps `mapstruct.version` from 1.6.0 to 1.6.2. Updates `org.mapstruct:mapstruct` from 1.6.0 to 1.6.2 - [Release notes](https://github.com/mapstruct/mapstruct/releases) - [Commits](https://github.com/mapstruct/mapstruct/compare/1.6.0...1.6.2) Updates `org.mapstruct:mapstruct-processor` from 1.6.0 to 1.6.2 - [Release notes](https://github.com/mapstruct/mapstruct/releases) - [Commits](https://github.com/mapstruct/mapstruct/compare/1.6.0...1.6.2) --- updated-dependencies: - dependency-name: org.mapstruct:mapstruct dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.mapstruct:mapstruct-processor dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dhis-2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhis-2/pom.xml b/dhis-2/pom.xml index ff0798893ecf..dd45f9eb36fd 100644 --- a/dhis-2/pom.xml +++ b/dhis-2/pom.xml @@ -166,7 +166,7 @@ 1.17 2.9 - 1.6.0 + 1.6.2 29.6 1.20.0 From a846e6e151bb1c8c99a5b36945698be245911cb1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:22:49 +0200 Subject: [PATCH 3/4] chore(deps-dev): bump junit.version in /dhis-2/dhis-test-e2e (#18665) Bumps `junit.version` from 5.11.0 to 5.11.1. Updates `org.junit.jupiter:junit-jupiter` from 5.11.0 to 5.11.1 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.1) Updates `org.junit.jupiter:junit-jupiter-params` from 5.11.0 to 5.11.1 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: org.junit.jupiter:junit-jupiter-params dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dhis-2/dhis-test-e2e/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhis-2/dhis-test-e2e/pom.xml b/dhis-2/dhis-test-e2e/pom.xml index 8ff9d1ee56f7..c9003940a83c 100644 --- a/dhis-2/dhis-test-e2e/pom.xml +++ b/dhis-2/dhis-test-e2e/pom.xml @@ -13,7 +13,7 @@ 3.13.0 3.5.0 1.3.0 - 5.11.0 + 5.11.1 2.11.0 2.24.0 5.5.0 From cc71e1b0e6d2a3e439970dcaa37f83a4c58ab94c Mon Sep 17 00:00:00 2001 From: Enrico Colasante Date: Wed, 25 Sep 2024 12:57:35 +0200 Subject: [PATCH 4/4] chore: Remove userid from tracker import params [DHIS2-18001] (#18660) * chore: Remove userid from tracker import params [DHIS2-18001] * Fix review comments --- .../imports/DefaultTrackerImportService.java | 2 +- .../tracker/imports/TrackerImportParams.java | 3 - .../tracker/imports/TrackerUserService.java | 17 +---- .../imports/sms/DeleteEventSMSListener.java | 8 +-- .../imports/sms/RelationshipSMSListener.java | 8 +-- .../imports/sms/TrackerEventSMSListener.java | 4 -- .../bundle/TrackerImporterServiceTest.java | 8 +-- .../OrderAndPaginationExporterTest.java | 2 +- .../export/event/AclEventExporterTest.java | 2 +- .../event/EventChangeLogServiceTest.java | 2 +- .../export/event/EventExporterTest.java | 2 +- .../imports/bundle/EventDataValueTest.java | 2 +- .../imports/bundle/LastUpdateImportTest.java | 50 +++++---------- .../tracker/imports/bundle/OwnershipTest.java | 28 +++------ .../bundle/RelationshipImportTest.java | 22 ++++--- .../ReportSummaryDeleteIntegrationTest.java | 46 ++++++-------- .../bundle/ReportSummaryIntegrationTest.java | 63 +++---------------- .../bundle/TrackedEntityAttributeTest.java | 2 +- ...ckedEntityAttributeValueChangeLogTest.java | 4 +- ...dEntityProgramAttributeEncryptionTest.java | 2 +- ...ntityProgramAttributeFileResourceTest.java | 2 +- .../TrackedEntityProgramAttributeTest.java | 6 +- .../bundle/TrackerEventBundleServiceTest.java | 3 +- ...TrackerNotificationHandlerServiceTest.java | 15 +---- ...leEngineSideEffectsHandlerServiceTest.java | 3 +- .../EnrollmentAttrValidationTest.java | 22 +++---- .../EnrollmentImportValidationTest.java | 28 ++++----- ...nrollmentSecurityImportValidationTest.java | 13 +--- .../validation/EventImportValidationTest.java | 52 +++++++-------- .../EventSecurityImportValidationTest.java | 14 +++-- ...ationshipSecurityImportValidationTest.java | 45 +++++++------ .../TeTaEncryptionValidationTest.java | 4 +- .../validation/TeTaValidationTest.java | 14 ++--- .../TrackedEntityImportValidationTest.java | 61 +++++++++--------- ...dEntitiesExportControllerPostgresTest.java | 2 +- .../imports/TrackerImportController.java | 19 ++---- .../imports/TrackerImportParamsMapper.java | 6 +- .../imports/TrackerImportControllerTest.java | 5 +- .../TrackerImportParamsMapperTest.java | 31 +++++---- 39 files changed, 236 insertions(+), 386 deletions(-) diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/DefaultTrackerImportService.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/DefaultTrackerImportService.java index 48a79ca35c8f..ffc709c9411e 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/DefaultTrackerImportService.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/DefaultTrackerImportService.java @@ -82,7 +82,7 @@ private PersistenceReport commit(TrackerImportParams params, TrackerBundle track @IndirectTransactional public ImportReport importTracker( TrackerImportParams params, TrackerObjects trackerObjects, JobProgress jobProgress) { - User user = trackerUserService.getUser(params.getUserId()); + User user = trackerUserService.getCurrentUser(); jobProgress.startingStage("Running PreHeat"); TrackerBundle trackerBundle = diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerImportParams.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerImportParams.java index fa3b48a65d76..361f4e7faa4a 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerImportParams.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerImportParams.java @@ -43,9 +43,6 @@ @NoArgsConstructor @AllArgsConstructor public class TrackerImportParams implements JobParameters { - /** User uid to use for import job. */ - @JsonProperty private String userId; - /** Should import be imported or just validated. */ @JsonProperty @Builder.Default private final TrackerBundleMode importMode = TrackerBundleMode.COMMIT; diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerUserService.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerUserService.java index 0990b7709790..b50b3c9b45ad 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerUserService.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/TrackerUserService.java @@ -28,7 +28,6 @@ package org.hisp.dhis.tracker.imports; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.StringUtils; import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.tracker.imports.preheat.mappers.FullUserMapper; import org.hisp.dhis.user.CurrentUserUtil; @@ -47,22 +46,10 @@ public class TrackerUserService { private final IdentifiableObjectManager manager; - /** - * Fetch a User by user uid - * - * @param userUid a User uid - * @return a User - */ @Transactional(readOnly = true) - public User getUser(String userUid) { - User user = null; + public User getCurrentUser() { + User user = manager.get(User.class, CurrentUserUtil.getCurrentUserDetails().getUid()); - if (!StringUtils.isEmpty(userUid)) { - user = manager.get(User.class, userUid); - } - if (user == null) { - user = manager.get(User.class, CurrentUserUtil.getCurrentUserDetails().getUid()); - } // Make a copy of the user object, retaining only the properties // required for // the import operation diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/DeleteEventSMSListener.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/DeleteEventSMSListener.java index f71db173c8f5..a275b96aebba 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/DeleteEventSMSListener.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/DeleteEventSMSListener.java @@ -94,13 +94,7 @@ protected SmsResponse postProcess(IncomingSms sms, SmsSubmission submission, Use DeleteSmsSubmission subm = (DeleteSmsSubmission) submission; TrackerImportParams params = - TrackerImportParams.builder() - .importStrategy(TrackerImportStrategy.DELETE) - .userId( - user.getUid()) // SMS processing is done inside a job executed as the user that sent - // the SMS. We might want to remove the params user in favor of the currentUser set on - // the thread. - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); TrackerObjects trackerObjects = TrackerObjects.builder() .events(List.of(Event.builder().event(subm.getEvent().getUid()).build())) diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/RelationshipSMSListener.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/RelationshipSMSListener.java index ca365524e430..bc93c1dc1d4b 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/RelationshipSMSListener.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/RelationshipSMSListener.java @@ -110,13 +110,7 @@ protected SmsResponse postProcess(IncomingSms sms, SmsSubmission submission, Use } TrackerImportParams params = - TrackerImportParams.builder() - .importStrategy(TrackerImportStrategy.CREATE) - .userId( - user.getUid()) // SMS processing is done inside a job executed as the user that sent - // the SMS. We might want to remove the params user in favor of the currentUser set on - // the thread. - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.CREATE).build(); TrackerObjects trackerObjects = TrackerObjects.builder() .relationships( diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/TrackerEventSMSListener.java b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/TrackerEventSMSListener.java index 64b7a1178b63..21f804135388 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/TrackerEventSMSListener.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/tracker/imports/sms/TrackerEventSMSListener.java @@ -122,10 +122,6 @@ protected SmsResponse postProcess(IncomingSms sms, SmsSubmission submission, Use TrackerImportParams params = TrackerImportParams.builder() .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) - .userId( - user.getUid()) // SMS processing is done inside a job executed as the user that sent - // the SMS. We might want to remove the params user in favor of the currentUser set on - // the thread. .build(); TrackerObjects trackerObjects = TrackerObjects.builder().events(List.of(event.build())).build(); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerImporterServiceTest.java b/dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerImporterServiceTest.java index 2ddb8d802654..3b9b4fe5c8cf 100644 --- a/dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerImporterServiceTest.java +++ b/dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerImporterServiceTest.java @@ -32,7 +32,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -94,7 +93,7 @@ public void setUp() { event.setEvent("EventUid"); final List events = List.of(event); - params = TrackerImportParams.builder().userId("123").build(); + params = TrackerImportParams.builder().build(); trackerObjects = TrackerObjects.builder() @@ -104,7 +103,7 @@ public void setUp() { .trackedEntities(new ArrayList<>()) .build(); - when(trackerUserService.getUser(anyString())).thenReturn(getUser()); + when(trackerUserService.getCurrentUser()).thenReturn(getUser()); when(validationService.validate(any(TrackerBundle.class))).thenReturn(validationResult); when(validationService.validateRuleEngine(any(TrackerBundle.class))) @@ -115,8 +114,7 @@ public void setUp() { @Test void testSkipSideEffect() { - TrackerImportParams parameters = - TrackerImportParams.builder().skipSideEffects(true).userId("123").build(); + TrackerImportParams parameters = TrackerImportParams.builder().skipSideEffects(true).build(); TrackerObjects objects = TrackerObjects.builder() diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/OrderAndPaginationExporterTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/OrderAndPaginationExporterTest.java index e02a59500c9b..fb687ce4a5a1 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/OrderAndPaginationExporterTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/OrderAndPaginationExporterTest.java @@ -118,7 +118,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker(params, fromJson("tracker/event_and_enrollment.json"))); orgUnit = get(OrganisationUnit.class, "h4w96yEMlzO"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/AclEventExporterTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/AclEventExporterTest.java index c32567238114..b81cd00c2cd1 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/AclEventExporterTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/AclEventExporterTest.java @@ -90,7 +90,7 @@ void setUp() throws IOException { User userA = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(userA); - TrackerImportParams params = TrackerImportParams.builder().userId(userA.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker(params, fromJson("tracker/event_and_enrollment.json"))); orgUnit = get(OrganisationUnit.class, "h4w96yEMlzO"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventChangeLogServiceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventChangeLogServiceTest.java index 1d333c4421c4..63e6932ecfb3 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventChangeLogServiceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventChangeLogServiceTest.java @@ -80,7 +80,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - importParams = TrackerImportParams.builder().userId(importUser.getUid()).build(); + importParams = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( importParams, fromJson("tracker/event_and_enrollment.json"))); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventExporterTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventExporterTest.java index b3ef9aae392a..82e8cc7124b9 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventExporterTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/export/event/EventExporterTest.java @@ -114,7 +114,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker(params, fromJson("tracker/event_and_enrollment.json"))); orgUnit = get(OrganisationUnit.class, "h4w96yEMlzO"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/EventDataValueTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/EventDataValueTest.java index 4d5649745c01..eb33aaa1ff77 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/EventDataValueTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/EventDataValueTest.java @@ -67,7 +67,7 @@ void setUp() throws IOException { final User userA = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(userA); - TrackerImportParams params = TrackerImportParams.builder().userId(userA.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); TrackerObjects enTrackerObjects = fromJson("tracker/single_enrollment.json"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/LastUpdateImportTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/LastUpdateImportTest.java index 91a2edd7e1bc..5a80340cecbd 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/LastUpdateImportTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/LastUpdateImportTest.java @@ -81,7 +81,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -114,10 +114,8 @@ void shouldUpdateTrackedEntityWhenTrackedEntityIsUpdated() throws IOException { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.UPDATE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.UPDATE).build(); + assertNoErrors(trackerImportService.importTracker(params, fromJson("tracker/single_te.json"))); Date lastUpdateAfter = getTrackedEntity().getLastUpdated(); @@ -135,16 +133,13 @@ void shouldUpdateTrackedEntityWhenEventIsUpdated() throws IOException { clearSession(); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/event_with_data_values.json"))); - params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.UPDATE) - .build(); + params = TrackerImportParams.builder().importStrategy(TrackerImportStrategy.UPDATE).build(); + assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/event_with_updated_data_values.json"))); @@ -174,10 +169,8 @@ void shouldUpdateTrackedEntityWhenEnrollmentIsUpdated() { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.UPDATE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.UPDATE).build(); + enrollment.setStatus(EnrollmentStatus.COMPLETED); assertNoErrors( @@ -209,10 +202,8 @@ void shouldUpdateAndDeleteTrackedEntityWhenTeIsDeleted() { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + ImportReport importReport = trackerImportService.importTracker( params, TrackerObjects.builder().trackedEntities(List.of(trackedEntity)).build()); @@ -244,10 +235,8 @@ void shouldUpdateAndDeleteTrackedEntityCascadeWhenTeWithEnrollmentIsDeleted() { // delete cascade TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + ImportReport importReport = trackerImportService.importTracker( params, TrackerObjects.builder().trackedEntities(List.of(trackedEntity)).build()); @@ -294,10 +283,7 @@ void shouldUpdateTrackedEntityAndDeleteEnrollmentWhenEnrollmentIsDeleted() { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(user.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); ImportReport importReport = trackerImportService.importTracker( params, TrackerObjects.builder().enrollments(List.of(enrollment)).build()); @@ -370,10 +356,7 @@ void shouldUpdateTrackedEntityAndDeleteEnrolledEventWhenEventIsDeleted() { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(user.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); assertNoErrors( trackerImportService.importTracker( @@ -443,10 +426,7 @@ void shouldUpdatedEventProgramWhenEventIsDeleted() throws IOException { clearSession(); TrackerImportParams params = - TrackerImportParams.builder() - .userId(user.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); assertNoErrors( trackerImportService.importTracker( diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/OwnershipTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/OwnershipTest.java index a19cecfa3921..b09fd731b169 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/OwnershipTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/OwnershipTest.java @@ -83,7 +83,7 @@ void setUp() throws IOException { User importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker(params, fromJson("tracker/ownership_te.json"))); assertNoErrors( @@ -119,8 +119,7 @@ void testProgramOwnerWhenEnrolled() throws IOException { void testClientDatesForTrackedEntityEnrollmentEvent() throws IOException { User nonSuperUser = userService.getUser(this.nonSuperUser.getUid()); injectSecurityContextUser(nonSuperUser); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_event.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); manager.flush(); @@ -166,8 +165,7 @@ void testClientDatesForTrackedEntityEnrollmentEvent() throws IOException { @Test void testUpdateEnrollment() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); List enrollments = manager.getAll(Enrollment.class); assertEquals(2, enrollments.size()); Enrollment enrollment = @@ -198,8 +196,7 @@ void testUpdateEnrollment() throws IOException { @Test void testDeleteEnrollment() throws IOException { - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); List enrollments = manager.getAll(Enrollment.class); assertEquals(2, enrollments.size()); @@ -215,8 +212,7 @@ void testDeleteEnrollment() throws IOException { @Test void testCreateEnrollmentAfterDeleteEnrollment() throws IOException { injectSecurityContextUser(userService.getUser(nonSuperUser.getUid())); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); List enrollments = manager.getAll(Enrollment.class); assertEquals(2, enrollments.size()); @@ -238,8 +234,7 @@ void testCreateEnrollmentAfterDeleteEnrollment() throws IOException { @Test void testCreateEnrollmentWithoutOwnership() throws IOException, ForbiddenException { injectSecurityContextUser(userService.getUser(nonSuperUser.getUid())); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); List enrollments = manager.getAll(Enrollment.class); assertEquals(2, enrollments.size()); @@ -262,10 +257,7 @@ void testCreateEnrollmentWithoutOwnership() throws IOException, ForbiddenExcepti void shouldFailWhenCreatingTEAndEnrollmentAndUserHasNoAccessToEnrollmentOU() throws IOException { injectSecurityContextUser(userService.getUser(nonSuperUser.getUid())); TrackerImportParams params = - TrackerImportParams.builder() - .userId(nonSuperUser.getUid()) - .atomicMode(AtomicMode.OBJECT) - .build(); + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_te_ok_enrollment_no_access.json"); ImportReport report = trackerImportService.importTracker(params, trackerObjects); assertEquals(1, report.getStats().getCreated()); @@ -279,8 +271,7 @@ void testDeleteEnrollmentWithoutOwnership() throws IOException, ForbiddenExcepti TrackedEntity trackedEntity = manager.get(TrackedEntity.class, "IOR1AXXl24H"); OrganisationUnit ou = manager.get(OrganisationUnit.class, "B1nCbRV3qtP"); Program pgm = manager.get(Program.class, "BFcipDERJnf"); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); trackerOwnershipManager.transferOwnership(trackedEntity, pgm, ou); params.setImportStrategy(TrackerImportStrategy.DELETE); @@ -296,8 +287,7 @@ void testUpdateEnrollmentWithoutOwnership() throws IOException, ForbiddenExcepti OrganisationUnit ou = manager.get(OrganisationUnit.class, "B1nCbRV3qtP"); Program pgm = manager.get(Program.class, "BFcipDERJnf"); trackerOwnershipManager.transferOwnership(trackedEntity, pgm, ou); - TrackerImportParams params = - TrackerImportParams.builder().userId(nonSuperUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/ownership_enrollment.json"); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport updatedReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/RelationshipImportTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/RelationshipImportTest.java index 5f385c1c6128..939ab1a5f37b 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/RelationshipImportTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/RelationshipImportTest.java @@ -45,6 +45,7 @@ import org.hisp.dhis.tracker.imports.validation.ValidationCode; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -66,7 +67,7 @@ void setUp() throws IOException { userA = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(userA); - TrackerImportParams params = TrackerImportParams.builder().userId(userA.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors(trackerImportService.importTracker(params, fromJson("tracker/single_te.json"))); assertNoErrors( trackerImportService.importTracker(params, fromJson("tracker/single_enrollment.json"))); @@ -75,10 +76,15 @@ void setUp() throws IOException { manager.flush(); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(userA); + } + @Test void successImportingRelationships() throws IOException { - userA = userService.getUser("M5zQapPyTZI"); - TrackerImportParams params = TrackerImportParams.builder().userId(userA.getUid()).build(); + injectSecurityContextUser(userService.getUser("M5zQapPyTZI")); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker(params, fromJson("tracker/relationships.json")); assertThat(importReport.getStatus(), is(Status.OK)); @@ -87,8 +93,8 @@ void successImportingRelationships() throws IOException { @Test void shouldFailWhenUserNotAuthorizedToCreateRelationship() throws IOException { - userA = userService.getUser("o1HMTIzBGo7"); - TrackerImportParams params = TrackerImportParams.builder().userId(userA.getUid()).build(); + injectSecurityContextUser(userService.getUser("o1HMTIzBGo7")); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker(params, fromJson("tracker/relationships.json")); @@ -99,8 +105,7 @@ void shouldFailWhenUserNotAuthorizedToCreateRelationship() throws IOException { @Test void successUpdateRelationships() throws IOException { - TrackerImportParams trackerImportParams = - TrackerImportParams.builder().userId(userA.getUid()).build(); + TrackerImportParams trackerImportParams = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/relationships.json"); trackerImportService.importTracker(trackerImportParams, trackerObjects); trackerObjects = fromJson("tracker/relationshipToUpdate.json"); @@ -114,8 +119,7 @@ void successUpdateRelationships() throws IOException { @Test void shouldFailWhenTryingToUpdateADeletedRelationship() throws IOException { - TrackerImportParams trackerImportParams = - TrackerImportParams.builder().userId(userA.getUid()).build(); + TrackerImportParams trackerImportParams = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/relationships.json"); trackerImportService.importTracker(trackerImportParams, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryDeleteIntegrationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryDeleteIntegrationTest.java index 72b05ffe5bdf..d7fc13b98cfb 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryDeleteIntegrationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryDeleteIntegrationTest.java @@ -54,6 +54,7 @@ import org.hisp.dhis.tracker.imports.validation.ValidationCode; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -74,7 +75,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/tracker_basic_data_before_deletion.json"); assertEquals(13, trackerObjects.getTrackedEntities().size()); @@ -97,13 +98,17 @@ void setUp() throws IOException { manager.clear(); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(importUser); + } + @Test void shouldFailToDeleteNotExistentRelationship() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/relationships_existent_and_not_existent_for_deletion.json"); TrackerImportParams params = TrackerImportParams.builder() - .userId(importUser.getUid()) .importStrategy(TrackerImportStrategy.DELETE) .atomicMode(AtomicMode.OBJECT) .build(); @@ -119,10 +124,7 @@ void shouldSuccessfullyDeleteRelationships() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/relationships_basic_data_for_deletion.json"); assertEquals(2, trackerObjects.getRelationships().size()); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -132,11 +134,11 @@ void shouldSuccessfullyDeleteRelationships() throws IOException { @Test void shouldSuccessfullyDeleteTrackedEntityAndNotAccessibleRelationshipLinkedToIt() throws IOException { + injectSecurityContextUser(userService.getUser(USER_10)); TrackerObjects trackerObjects = fromJson("tracker/te_with_inaccessible_relationship_for_deletion.json"); TrackerImportParams params = TrackerImportParams.builder() - .userId(USER_10) .importStrategy(TrackerImportStrategy.DELETE) .atomicMode(AtomicMode.OBJECT) .build(); @@ -152,10 +154,8 @@ void shouldSuccessfullyDeleteTrackedEntityAndNotAccessibleRelationshipLinkedToIt void testTrackedEntityDeletion() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/tracked_entity_basic_data_for_deletion.json"); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + assertEquals(9, trackerObjects.getTrackedEntities().size()); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -174,10 +174,8 @@ void testEnrollmentDeletion() throws IOException { dbmsManager.clearSession(); assertEquals(2, manager.getAll(Event.class).size()); TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + TrackerObjects trackerObjects = fromJson("tracker/enrollment_basic_data_for_deletion.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -193,10 +191,8 @@ void testEnrollmentDeletion() throws IOException { @Test void testEventDeletion() throws IOException { TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + TrackerObjects trackerObjects = fromJson("tracker/event_basic_data_for_deletion.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -211,10 +207,8 @@ void testEventDeletion() throws IOException { @Test void testNonExistentEnrollment() throws IOException { TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + TrackerObjects trackerObjects = fromJson("tracker/non_existent_enrollment_basic_data_for_deletion.json"); @@ -226,10 +220,8 @@ void testNonExistentEnrollment() throws IOException { @Test void testDeleteMultipleEntities() throws IOException { TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.DELETE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.DELETE).build(); + TrackerObjects trackerObjects = fromJson("tracker/tracker_data_for_deletion.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryIntegrationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryIntegrationTest.java index 190e88e1c8b9..5c8a07508bcf 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryIntegrationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/ReportSummaryIntegrationTest.java @@ -63,7 +63,7 @@ void setUp() throws IOException { void testStatsCountForOneCreatedTE() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); ImportReport trackerImportTeReport = trackerImportService.importTracker(params, trackerObjects); @@ -78,13 +78,10 @@ void testStatsCountForOneCreatedTE() throws IOException { void testStatsCountForOneCreatedAndOneUpdatedTE() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_te_and_one_new_te.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport trackerImportTeReport = trackerImportService.importTracker(params, trackerObjects); @@ -100,13 +97,10 @@ void testStatsCountForOneCreatedAndOneUpdatedTE() throws IOException { void testStatsCountForOneCreatedAndOneUpdatedTEAndOneInvalidTE() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_te_and_one_new_te_and_one_invalid_te.json"); - params.setUserId(userA.getUid()); params.setAtomicMode(AtomicMode.OBJECT); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); @@ -125,13 +119,10 @@ void testStatsCountForOneCreatedAndOneUpdatedTEAndOneInvalidTE() throws IOExcept void testStatsCountForOneCreatedEnrollment() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport trackerImportEnrollmentReport = @@ -148,13 +139,10 @@ void testStatsCountForOneCreatedEnrollment() throws IOException { void testStatsCountForOneCreatedEnrollmentAndUpdateSameEnrollment() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport trackerImportEnrollmentReport = @@ -167,7 +155,6 @@ void testStatsCountForOneCreatedEnrollmentAndUpdateSameEnrollment() throws IOExc assertEquals(0, trackerImportEnrollmentReport.getStats().getDeleted()); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); trackerImportEnrollmentReport = trackerImportService.importTracker(params, trackerObjects); @@ -183,18 +170,13 @@ void testStatsCountForOneCreatedEnrollmentAndUpdateSameEnrollment() throws IOExc void testStatsCountForOneUpdateEnrollmentAndOneCreatedEnrollment() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/one_update_te_and_one_new_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_enrollment_and_one_new_enrollment.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport trackerImportEnrollmentReport = @@ -212,19 +194,14 @@ void testStatsCountForOneUpdateEnrollmentAndOneCreatedEnrollmentAndOneInvalidEnr throws IOException { TrackerObjects trackerObjects = fromJson("tracker/three_tes.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_and_one_new_and_one_invalid_enrollment.json"); - params.setUserId(userA.getUid()); params.setAtomicMode(AtomicMode.OBJECT); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); @@ -244,19 +221,13 @@ void testStatsCountForOneUpdateEnrollmentAndOneCreatedEnrollmentAndOneInvalidEnr void testStatsCountForOneCreatedEvent() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_event.json"); - params.setUserId(userA.getUid()); - ImportReport trackerImportEventReport = trackerImportService.importTracker(params, trackerObjects); @@ -271,23 +242,16 @@ void testStatsCountForOneCreatedEvent() throws IOException { void testStatsCountForOneUpdateEventAndOneNewEvent() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_event.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_event_and_one_new_event.json"); - params.setUserId(userA.getUid()); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); ImportReport trackerImportEventReport = @@ -304,23 +268,16 @@ void testStatsCountForOneUpdateEventAndOneNewEvent() throws IOException { void testStatsCountForOneUpdateEventAndOneNewEventAndOneInvalidEvent() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/single_te.json"); TrackerImportParams params = - TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).userId(userA.getUid()).build(); - params.setUserId(userA.getUid()); - + TrackerImportParams.builder().atomicMode(AtomicMode.OBJECT).build(); trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_enrollment.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/single_event.json"); - params.setUserId(userA.getUid()); - trackerImportService.importTracker(params, trackerObjects); trackerObjects = fromJson("tracker/one_update_and_one_new_and_one_invalid_event.json"); - params.setUserId(userA.getUid()); params.setAtomicMode(AtomicMode.OBJECT); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeTest.java index 72de4d9e865a..4455c2598044 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeTest.java @@ -92,7 +92,7 @@ void testTrackedAttributePreheater() throws IOException { @Test void testTrackedAttributeValueBundleImporter() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/te_with_tea_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeValueChangeLogTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeValueChangeLogTest.java index 727987dfc5b7..46516fe61531 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeValueChangeLogTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityAttributeValueChangeLogTest.java @@ -77,7 +77,7 @@ void setUp() throws IOException { @Test void testTrackedEntityAttributeValueAuditCreate() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/te_program_with_tea_data.json"))); @@ -104,7 +104,7 @@ void testTrackedEntityAttributeValueAuditCreate() throws IOException { @Test void testTrackedEntityAttributeValueAuditDelete() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/te_program_with_tea_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeEncryptionTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeEncryptionTest.java index 3400cafe2b83..c16379e94223 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeEncryptionTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeEncryptionTest.java @@ -73,7 +73,7 @@ void setUp() throws IOException { @Test void testTrackedEntityProgramAttributeEncryptedValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/te_program_with_tea_encryption_data.json")); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java index d2bcc16987eb..45f6c7677344 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java @@ -76,7 +76,7 @@ void setUp() throws IOException { @Test void testTrackedEntityProgramAttributeFileResourceValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); FileResource fileResource = new FileResource( "test.pdf", diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeTest.java index 29632b813c1f..35065f88441b 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeTest.java @@ -70,7 +70,7 @@ void setUp() throws IOException { @Test void testTrackedEntityProgramAttributeValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/te_program_with_tea_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -85,7 +85,7 @@ void testTrackedEntityProgramAttributeValue() throws IOException { @Test void testTrackedEntityProgramAttributeValueUpdate() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/te_program_with_tea_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -115,7 +115,7 @@ void testTrackedEntityProgramAttributeValueUpdate() throws IOException { @Test void testTrackedEntityProgramAttributeValueUpdateAndDelete() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/te_program_with_tea_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerEventBundleServiceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerEventBundleServiceTest.java index 63088f4f6851..1cacca5f684d 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerEventBundleServiceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerEventBundleServiceTest.java @@ -62,7 +62,7 @@ void setUp() throws IOException { @Test void testCreateSingleEventData() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/event_events_and_enrollment.json"); assertEquals(8, trackerObjects.getEvents().size()); @@ -77,7 +77,6 @@ void testCreateSingleEventData() throws IOException { void testUpdateSingleEventData() throws IOException { TrackerImportParams params = TrackerImportParams.builder() - .userId(importUser.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(); TrackerObjects trackerObjects = fromJson("tracker/event_events_and_enrollment.json"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerNotificationHandlerServiceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerNotificationHandlerServiceTest.java index fe3f7a960a2d..a0c064d3092b 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerNotificationHandlerServiceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerNotificationHandlerServiceTest.java @@ -168,7 +168,6 @@ void shouldSendTrackerNotificationAtEnrollment() { ImportReport importReport = trackerImportService.importTracker( TrackerImportParams.builder() - .userId(user.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(), TrackerObjects.builder().enrollments(List.of(enrollment)).build()); @@ -218,7 +217,6 @@ void shouldSendTrackerNotificationAtEnrollmentCompletionAndThenEventCompletion() ImportReport importReport = trackerImportService.importTracker( TrackerImportParams.builder() - .userId(user.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(), TrackerObjects.builder() @@ -255,10 +253,7 @@ void shouldSendTrackerNotificationAtEnrollmentCompletionAndThenEventCompletion() importReport = trackerImportService.importTracker( - TrackerImportParams.builder() - .userId(user.getUid()) - .importStrategy(TrackerImportStrategy.UPDATE) - .build(), + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.UPDATE).build(), TrackerObjects.builder().events(List.of(eventUpdated)).build()); assertNoErrors(importReport); @@ -293,7 +288,6 @@ void shouldSendEnrollmentCompletionNotificationWhenStatusIsUpdatedFromActiveToCo ImportReport importReport = trackerImportService.importTracker( TrackerImportParams.builder() - .userId(user.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(), TrackerObjects.builder().enrollments(List.of(enrollment)).build()); @@ -324,10 +318,7 @@ void shouldSendEnrollmentCompletionNotificationWhenStatusIsUpdatedFromActiveToCo importReport = trackerImportService.importTracker( - TrackerImportParams.builder() - .userId(user.getUid()) - .importStrategy(TrackerImportStrategy.UPDATE) - .build(), + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.UPDATE).build(), TrackerObjects.builder().enrollments(List.of(enrollmentUpdated)).build()); assertNoErrors(importReport); @@ -362,7 +353,6 @@ void shouldSendEnrollmentCompletionNotificationOnlyOnce() { ImportReport importReport = trackerImportService.importTracker( TrackerImportParams.builder() - .userId(user.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(), TrackerObjects.builder().enrollments(List.of(enrollment)).build()); @@ -384,7 +374,6 @@ void shouldSendEnrollmentCompletionNotificationOnlyOnce() { importReport = trackerImportService.importTracker( TrackerImportParams.builder() - .userId(user.getUid()) .importStrategy(TrackerImportStrategy.CREATE_AND_UPDATE) .build(), TrackerObjects.builder().enrollments(List.of(enrollment)).build()); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerRuleEngineSideEffectsHandlerServiceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerRuleEngineSideEffectsHandlerServiceTest.java index 69dd270d5d42..b6128a3fa326 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerRuleEngineSideEffectsHandlerServiceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackerRuleEngineSideEffectsHandlerServiceTest.java @@ -85,8 +85,7 @@ void testRuleEngineSideEffectHandlerService() throws IOException { .getInputStream(), TrackerObjects.class); ImportReport importReport = - trackerImportService.importTracker( - TrackerImportParams.builder().userId(importUser.getUid()).build(), trackerObjects); + trackerImportService.importTracker(TrackerImportParams.builder().build(), trackerObjects); assertNoErrors(importReport); await() diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentAttrValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentAttrValidationTest.java index 5d79ef31ad4e..60efd5626add 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentAttrValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentAttrValidationTest.java @@ -56,7 +56,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_te-data_2.json"))); @@ -65,7 +65,7 @@ void setUp() throws IOException { @Test void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_with_invalid_option_value.json")); @@ -75,7 +75,7 @@ void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOExce @Test void successValidationWhenTrackedEntityAttributeHasValidOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_with_valid_option_value.json")); @@ -85,7 +85,7 @@ void successValidationWhenTrackedEntityAttributeHasValidOptionValue() throws IOE @Test void testAttributesMissingUid() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-missing-uuid.json")); @@ -95,7 +95,7 @@ void testAttributesMissingUid() throws IOException { @Test void testAttributesMissingValues() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-missing-value.json")); @@ -105,7 +105,7 @@ void testAttributesMissingValues() throws IOException { @Test void testAttributesMissingTeA() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-non-existing.json")); @@ -115,7 +115,7 @@ void testAttributesMissingTeA() throws IOException { @Test void testAttributesMissingMandatory() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-missing-mandatory.json")); @@ -125,7 +125,7 @@ void testAttributesMissingMandatory() throws IOException { @Test void testAttributesUniquenessInSameTrackedEntity() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_unique_attr_same_te.json")); @@ -135,7 +135,7 @@ void testAttributesUniquenessInSameTrackedEntity() throws IOException { @Test void testAttributesUniquenessAlreadyInDB() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_te-data_3.json")); @@ -163,7 +163,7 @@ void testAttributesUniquenessAlreadyInDB() throws IOException { @Test void testAttributesUniquenessInDifferentTrackedEntities() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( @@ -180,7 +180,7 @@ void testAttributesUniquenessInDifferentTrackedEntities() throws IOException { @Test void testAttributesOnlyProgramAttrAllowed() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-only-program-attr.json")); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentImportValidationTest.java index 0312414c72e1..d3d0e1988985 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentImportValidationTest.java @@ -71,7 +71,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_te-data.json"))); @@ -86,7 +86,7 @@ void setUpUser() { @Test void testEnrollmentValidationOkAll() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_enrollments-data.json")); @@ -96,7 +96,7 @@ void testEnrollmentValidationOkAll() throws IOException { @Test void testPreheatOwnershipForSubsequentEnrollment() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_enrollments-data.json")); @@ -126,7 +126,6 @@ void testPreheatOwnershipForSubsequentEnrollment() throws IOException { void testNoWriteAccessToOrg() throws IOException { User user = userService.getUser(USER_2); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); injectSecurityContextUser(user); ImportReport importReport = @@ -138,7 +137,7 @@ void testNoWriteAccessToOrg() throws IOException { @Test void testOnlyProgramAttributesAllowedOnEnrollments() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_error_non_program_attr.json")); @@ -148,7 +147,7 @@ void testOnlyProgramAttributesAllowedOnEnrollments() throws IOException { @Test void testAttributesOk() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-data.json")); @@ -166,7 +165,7 @@ void testAttributesOk() throws IOException { @Test void testDeleteCascadeEnrollments() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_attr-data.json")); @@ -175,8 +174,7 @@ void testDeleteCascadeEnrollments() throws IOException { manager.flush(); importEvents(); manager.flush(); - User user2 = userService.getUser(USER_4); - params.setUserId(user2.getUid()); + injectSecurityContextUser(userService.getUser(USER_4)); params.setImportStrategy(TrackerImportStrategy.DELETE); ImportReport trackerImportDeleteReport = @@ -188,10 +186,8 @@ void testDeleteCascadeEnrollments() throws IOException { protected void importEvents() throws IOException { TrackerImportParams params = - TrackerImportParams.builder() - .userId(importUser.getUid()) - .importStrategy(TrackerImportStrategy.CREATE) - .build(); + TrackerImportParams.builder().importStrategy(TrackerImportStrategy.CREATE).build(); + ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-with-registration.json")); @@ -201,7 +197,7 @@ protected void importEvents() throws IOException { @Test void testActiveEnrollmentAlreadyExists() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_double-te-enrollment_part1.json")); @@ -220,7 +216,7 @@ void testActiveEnrollmentAlreadyExists() throws IOException { @Test void testEnrollmentDeleteOk() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_enrollments-data.json")); @@ -242,7 +238,7 @@ void testEnrollmentDeleteOk() throws IOException { /** Notes with no value are ignored */ @Test void testBadEnrollmentNoteNoValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_bad-note-no-value.json")); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentSecurityImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentSecurityImportValidationTest.java index 3ac908ef36b0..1703fcb9d467 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentSecurityImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EnrollmentSecurityImportValidationTest.java @@ -112,7 +112,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_te-data.json"))); @@ -183,7 +183,6 @@ void testNoWriteAccessToOrg() throws IOException { User user = userService.getUser(USER_2); injectSecurityContextUser(user); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); params.setImportStrategy(CREATE); ImportReport importReport = @@ -210,7 +209,6 @@ void shouldFailWhenUserHasNoAccessToTrackedEntityType() throws IOException { injectSecurityContextUser(user); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_no-access-te.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); params.setImportStrategy(CREATE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -238,7 +236,6 @@ void testUserNoWriteAccessToProgram() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_no-access-program.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); params.setImportStrategy(CREATE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -262,7 +259,6 @@ void testUserHasWriteAccessToProgram() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_no-access-program.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); params.setImportStrategy(CREATE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -285,7 +281,6 @@ void testUserHasNoAccessToProgramTeType() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_program-tetype-missmatch.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(user.getUid()); params.setImportStrategy(CREATE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -299,8 +294,7 @@ void shouldFailWhenTeNotEnrolledAndUserHasNoAccessToTeRegisteringOrgUnit() { setup(); TrackedEntity trackedEntityB = createTrackedEntity(trackedEntityType, organisationUnitB); User userA = createUser(organisationUnitA); - TrackerImportParams params = - TrackerImportParams.builder().userId(userA.getUid()).importStrategy(CREATE).build(); + TrackerImportParams params = TrackerImportParams.builder().importStrategy(CREATE).build(); injectSecurityContextUser(userA); ImportReport importReport = @@ -320,8 +314,7 @@ void shouldEnrollTeWhenTeNotEnrolledButUserHasAccessToTeRegisteringOrgUnit() { Program programB = createProgram(organisationUnitB); TrackedEntity trackedEntityB = createTrackedEntity(trackedEntityType, organisationUnitB); User userB = createUser(organisationUnitB); - TrackerImportParams params = - TrackerImportParams.builder().userId(userB.getUid()).importStrategy(CREATE).build(); + TrackerImportParams params = TrackerImportParams.builder().importStrategy(CREATE).build(); injectSecurityContextUser(userB); ImportReport importReport = diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventImportValidationTest.java index a3b49e51b878..83a9e1dd5837 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventImportValidationTest.java @@ -61,6 +61,7 @@ import org.hisp.dhis.tracker.imports.report.TrackerTypeReport; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -79,7 +80,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( @@ -89,9 +90,14 @@ void setUp() throws IOException { params, fromJson("tracker/validations/enrollments_te_enrollments-data.json"))); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(importUser); + } + @Test void testInvalidEnrollmentPreventsValidEventFromBeingCreated() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/invalid_enrollment_with_valid_event.json")); @@ -101,7 +107,7 @@ void testInvalidEnrollmentPreventsValidEventFromBeingCreated() throws IOExceptio @Test void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-with_invalid_option_value.json")); @@ -111,7 +117,7 @@ void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOExce @Test void successWhenTrackedEntityAttributeHasValidOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-with_valid_option_value.json")); @@ -121,7 +127,7 @@ void successWhenTrackedEntityAttributeHasValidOptionValue() throws IOException { @Test void testEventValidationOkAll() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-with-registration.json")); @@ -131,7 +137,7 @@ void testEventValidationOkAll() throws IOException { @Test void testEventValidationOkWithoutAttributeOptionCombo() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-without-attribute-option-combo.json")); @@ -141,7 +147,7 @@ void testEventValidationOkWithoutAttributeOptionCombo() throws IOException { @Test void testTrackerAndProgramEventUpdateSuccess() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/program_and_tracker_events.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -156,8 +162,7 @@ void testTrackerAndProgramEventUpdateSuccess() throws IOException { void testCantWriteAccessCatCombo() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/events-cat-write-access.json"); TrackerImportParams params = new TrackerImportParams(); - User user = userService.getUser(USER_6); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_6)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -173,15 +178,14 @@ void testCantWriteAccessCatCombo() throws IOException { void testNoWriteAccessToOrg() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/events-with-registration.json"); TrackerImportParams params = new TrackerImportParams(); - User user = userService.getUser(USER_2); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_2)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertHasOnlyErrors(importReport, ValidationCode.E1000); } @Test void testNonRepeatableProgramStage() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/events_non-repeatable-programstage_part1.json"); @@ -198,7 +202,7 @@ void testNonRepeatableProgramStage() throws IOException { @Test void shouldSuccessfullyImportRepeatedEventsInEventProgram() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/program_events_non-repeatable-programstage_part1.json"); @@ -216,7 +220,7 @@ void shouldSuccessfullyImportRepeatedEventsInEventProgram() throws IOException { @Test void testEventProgramHasNonDefaultCategoryCombo() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_non-default-combo.json")); @@ -226,7 +230,7 @@ void testEventProgramHasNonDefaultCategoryCombo() throws IOException { @Test void testCategoryOptionComboNotFound() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_cant-find-cat-opt-combo.json")); @@ -236,7 +240,7 @@ void testCategoryOptionComboNotFound() throws IOException { @Test void testCategoryOptionComboNotFoundGivenSubsetOfCategoryOptions() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_cant-find-aoc-with-subset-of-cos.json")); @@ -246,7 +250,7 @@ void testCategoryOptionComboNotFoundGivenSubsetOfCategoryOptions() throws IOExce @Test void testCOFoundButAOCNotFound() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_cant-find-aoc-but-co-exists.json")); @@ -256,7 +260,7 @@ void testCOFoundButAOCNotFound() throws IOException { @Test void testCategoryOptionsNotFound() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_cant-find-cat-option.json")); @@ -266,7 +270,7 @@ void testCategoryOptionsNotFound() throws IOException { @Test void testAttributeCategoryOptionNotInProgramCC() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-aoc-not-in-program-cc.json")); @@ -276,7 +280,7 @@ void testAttributeCategoryOptionNotInProgramCC() throws IOException { @Test void testAttributeCategoryOptionAndCODoNotMatch() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events-aoc-and-co-dont-match.json")); @@ -287,7 +291,7 @@ void testAttributeCategoryOptionAndCODoNotMatch() throws IOException { @Test void testAttributeCategoryOptionCannotBeFoundForEventProgramCCAndGivenCategoryOption() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, @@ -299,7 +303,7 @@ void testAttributeCategoryOptionCannotBeFoundForEventProgramCCAndGivenCategoryOp @Test void testWrongDatesInCatCombo() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); ImportReport importReport = trackerImportService.importTracker( params, fromJson("tracker/validations/events_combo-date-wrong.json")); @@ -373,7 +377,6 @@ private void testDeletedEventFails(TrackerImportStrategy importStrategy) { manager.delete(event); TrackerObjects trackerObjects = fromJson("tracker/validations/events-with-notes-data.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(importUser.getUid()); params.setImportStrategy(importStrategy); // When ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -383,7 +386,7 @@ private void testDeletedEventFails(TrackerImportStrategy importStrategy) { @Test void testEventDeleteOk() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/events-with-registration.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -406,7 +409,6 @@ private ImportReport createEvent(String jsonPayload) throws IOException { // Given TrackerObjects trackerObjects = fromJson(jsonPayload); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(importUser.getUid()); params.setImportStrategy(CREATE_AND_UPDATE); // When ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventSecurityImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventSecurityImportValidationTest.java index 65ca76ba99a3..7785acafad44 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventSecurityImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/EventSecurityImportValidationTest.java @@ -65,6 +65,7 @@ import org.hisp.dhis.tracker.imports.report.ImportReport; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -122,7 +123,7 @@ void setUp() throws IOException { importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/validations/enrollments_te_te-data.json"))); @@ -218,15 +219,20 @@ void setUp() throws IOException { manager.update(importUser); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(importUser); + } + @Test void testNoWriteAccessToProgramStage() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/events_error-no-programStage-access.json"); TrackerImportParams params = new TrackerImportParams(); User user = userService.getUser(USER_3); - params.setUserId(user.getUid()); user.addOrganisationUnit(organisationUnitA); manager.update(user); + injectSecurityContextUser(user); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -236,7 +242,7 @@ void testNoWriteAccessToProgramStage() throws IOException { @Test void testNoUncompleteEventAuth() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/events_error-no-uncomplete.json"); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); params.setImportStrategy(TrackerImportStrategy.CREATE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -256,9 +262,9 @@ void testNoUncompleteEventAuth() throws IOException { User user = userService.getUser(USER_4); user.addOrganisationUnit(organisationUnitA); manager.update(user); + injectSecurityContextUser(user); manager.flush(); manager.clear(); - params.setUserId(user.getUid()); params.setImportStrategy(TrackerImportStrategy.UPDATE); importReport = trackerImportService.importTracker(params, trackerObjects); assertHasOnlyErrors(importReport, ValidationCode.E1083); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/RelationshipSecurityImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/RelationshipSecurityImportValidationTest.java index 9e63797a4e76..71a9ef75ab09 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/RelationshipSecurityImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/RelationshipSecurityImportValidationTest.java @@ -44,6 +44,7 @@ import org.hisp.dhis.tracker.imports.report.ImportReport; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -51,26 +52,32 @@ class RelationshipSecurityImportValidationTest extends TrackerTest { @Autowired private TrackerImportService trackerImportService; + private User importUser; + @BeforeAll void setUp() throws IOException { setUpMetadata("tracker/tracker_basic_metadata.json"); - User importUser = userService.getUser("tTgjgobT1oS"); + importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoErrors( trackerImportService.importTracker( params, fromJson("tracker/validations/te_relationship.json"))); manager.flush(); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(importUser); + } + @Test void shouldCreateWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectionalRelationship() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -82,11 +89,11 @@ void shouldCreateWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); RelationshipType relationshipType = manager.get(RelationshipType.class, "xLmPUYJX8Ks"); relationshipType.getSharing().getUsers().remove(USER_11); manager.update(relationshipType); + injectSecurityContextUser(userService.getUser(USER_11)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -99,11 +106,11 @@ void shouldCreateWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); Program program = manager.get(Program.class, "E8o1E9tAppy"); program.getSharing().getUsers().get(USER_11).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_11)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -116,11 +123,11 @@ void shouldCreateWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); Program program = manager.get(Program.class, "YYY1E9tAbbW"); program.getSharing().getUsers().get(USER_11).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_11)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -132,7 +139,6 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -148,7 +154,6 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -156,6 +161,7 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona RelationshipType relationshipType = manager.get(RelationshipType.class, "xLmPUYJX8Ks"); relationshipType.getSharing().getUsers().remove(USER_11); manager.update(relationshipType); + injectSecurityContextUser(userService.getUser(USER_11)); params.setImportStrategy(TrackerImportStrategy.DELETE); importReport = trackerImportService.importTracker(params, trackerObjects); @@ -169,7 +175,6 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -177,6 +182,7 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona Program program = manager.get(Program.class, "E8o1E9tAppy"); program.getSharing().getUsers().get(USER_11).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_12)); params.setImportStrategy(TrackerImportStrategy.DELETE); importReport = trackerImportService.importTracker(params, trackerObjects); @@ -190,7 +196,6 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_siblings.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_11); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -198,6 +203,7 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToBidirectiona Program program = manager.get(Program.class, "YYY1E9tAbbW"); program.getSharing().getUsers().get(USER_11).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_11)); params.setImportStrategy(TrackerImportStrategy.DELETE); importReport = trackerImportService.importTracker(params, trackerObjects); @@ -210,8 +216,6 @@ void shouldCreateWhenUserHasAccessToRelationshipTypeAndWriteAccessToRelationship throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); } @@ -221,11 +225,10 @@ void shouldFailToCreateWhenUserHasNoAccessToRelationshipTypeAndWriteAccessToRela throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - RelationshipType relationshipType = manager.get(RelationshipType.class, "TV9oB9LT3sh"); relationshipType.getSharing().getUsers().remove(USER_12); manager.update(relationshipType); + injectSecurityContextUser(userService.getUser(USER_12)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -237,11 +240,10 @@ void shouldFailToCreateWhenUserHasAccessToRelationshipTypeAndNoWriteAccessToRela throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - Program program = manager.get(Program.class, "E8o1E9tAppy"); program.getSharing().getUsers().get(USER_12).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_12)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -253,11 +255,10 @@ void shouldFailToCreateWhenUserHasAccessToRelationshipTypeAndNoWriteAccessToRela throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - Program program = manager.get(Program.class, "YYY1E9tAbbW"); program.getSharing().getUsers().remove(USER_12); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_12)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -269,8 +270,6 @@ void shouldDeleteWhenUserHasAccessToRelationshipTypeAndWriteAccessToRelationship throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -288,14 +287,13 @@ void shouldFailToDeleteWhenUserHasNoAccessToRelationshipTypeAndWriteAccessToRela throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); RelationshipType relationshipType = manager.get(RelationshipType.class, "TV9oB9LT3sh"); relationshipType.getSharing().getUsers().remove(USER_12); manager.update(relationshipType); + injectSecurityContextUser(userService.getUser(USER_12)); params.setImportStrategy(TrackerImportStrategy.DELETE); importReport = trackerImportService.importTracker(params, trackerObjects); @@ -308,14 +306,13 @@ void shouldFailToDeleteWhenUserHasAccessToRelationshipTypeAndNoWriteAccessToRela throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/relationship_parent_child.json"); TrackerImportParams params = new TrackerImportParams(); - params.setUserId(USER_12); - ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); Program program = manager.get(Program.class, "E8o1E9tAppy"); program.getSharing().getUsers().get(USER_12).setAccess("r-r-----"); manager.update(program); + injectSecurityContextUser(userService.getUser(USER_12)); params.setImportStrategy(TrackerImportStrategy.DELETE); importReport = trackerImportService.importTracker(params, trackerObjects); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaEncryptionValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaEncryptionValidationTest.java index 1077e3d142ef..5092e5337542 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaEncryptionValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaEncryptionValidationTest.java @@ -57,7 +57,7 @@ void setUp() throws IOException { @Test void testUniqueFailInOrgUnit() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_unique_data_in_country.json"); @@ -81,7 +81,7 @@ void testUniqueFailInOrgUnit() throws IOException { @Test void testUniqueFail() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_unique_data.json"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java index de7166c61b00..d9a2097204ae 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java @@ -76,7 +76,7 @@ void setUp() throws IOException { @Test void testTrackedEntityProgramAttributeFileResourceValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); FileResource fileResource = new FileResource( "test.pdf", @@ -105,7 +105,7 @@ void testTrackedEntityProgramAttributeFileResourceValue() throws IOException { @Test void testFileAlreadyAssign() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); FileResource fileResource = new FileResource( "test.pdf", @@ -139,7 +139,7 @@ void testFileAlreadyAssign() throws IOException { @Test void testNoFileRef() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_fileresource_data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -151,7 +151,7 @@ void testNoFileRef() throws IOException { @Test void testTeaMaxTextValueLength() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_too_long_text_value.json"); @@ -162,7 +162,7 @@ void testTeaMaxTextValueLength() throws IOException { @Test void testTeaInvalidFormat() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_invalid_format_value.json"); @@ -173,7 +173,7 @@ void testTeaInvalidFormat() throws IOException { @Test void testTeaInvalidImage() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_invalid_image_value.json"); @@ -184,7 +184,7 @@ void testTeaInvalidImage() throws IOException { @Test void testTeaIsNull() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-program_with_tea_invalid_value_isnull.json"); diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TrackedEntityImportValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TrackedEntityImportValidationTest.java index 548b4c0da9e3..e3220acab1d7 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TrackedEntityImportValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TrackedEntityImportValidationTest.java @@ -55,6 +55,7 @@ import org.hisp.dhis.tracker.imports.report.ImportReport; import org.hisp.dhis.user.User; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -76,9 +77,14 @@ void setUp() throws IOException { injectSecurityContextUser(importUser); } + @BeforeEach + void setUpUser() { + injectSecurityContextUser(importUser); + } + @Test void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-with_invalid_option_value.json"); @@ -89,7 +95,7 @@ void failValidationWhenTrackedEntityAttributeHasWrongOptionValue() throws IOExce @Test void successValidationWhenTrackedEntityAttributeHasValidOptionValue() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-with_valid_option_value.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -99,7 +105,7 @@ void successValidationWhenTrackedEntityAttributeHasValidOptionValue() throws IOE @Test void failValidationWhenTrackedEntityAttributesHaveSameUniqueValues() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-with_unique_attributes.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -109,7 +115,7 @@ void failValidationWhenTrackedEntityAttributesHaveSameUniqueValues() throws IOEx @Test void testTeValidationOkAll() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -121,8 +127,7 @@ void testTeValidationOkAll() throws IOException { void testNoCreateTeAccessOutsideCaptureScopeOu() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); TrackerImportParams params = new TrackerImportParams(); - User user = userService.getUser(USER_7); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_7)); params.setAtomicMode(AtomicMode.OBJECT); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertHasOnlyErrors(importReport, ValidationCode.E1000); @@ -132,7 +137,7 @@ void testNoCreateTeAccessOutsideCaptureScopeOu() throws IOException { @Test void testUpdateAccessInSearchScopeOu() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -141,8 +146,7 @@ void testUpdateAccessInSearchScopeOu() throws IOException { assertEquals(3, importReport.getStats().getCreated()); trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); - User user = userService.getUser(USER_8); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_8)); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); params.setAtomicMode(AtomicMode.OBJECT); importReport = trackerImportService.importTracker(params, trackerObjects); @@ -152,7 +156,7 @@ void testUpdateAccessInSearchScopeOu() throws IOException { @Test void testNoUpdateAccessOutsideSearchScopeOu() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -161,8 +165,7 @@ void testNoUpdateAccessOutsideSearchScopeOu() throws IOException { assertEquals(3, importReport.getStats().getCreated()); trackerObjects = fromJson("tracker/validations/te-data_with_different_ou.json"); - User user = userService.getUser(USER_5); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_5)); params.setImportStrategy(TrackerImportStrategy.CREATE_AND_UPDATE); params.setAtomicMode(AtomicMode.OBJECT); @@ -177,8 +180,7 @@ void testNoUpdateAccessOutsideSearchScopeOu() throws IOException { void testNoWriteAccessInAcl() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_ok.json"); TrackerImportParams params = new TrackerImportParams(); - User user = userService.getUser(USER_1); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_1)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -189,8 +191,7 @@ void testNoWriteAccessInAcl() throws IOException { void testWriteAccessInAclViaUserGroup() throws IOException { TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_ok.json"); TrackerImportParams params = new TrackerImportParams(); - User user = userService.getUser(USER_3); - params.setUserId(user.getUid()); + injectSecurityContextUser(userService.getUser(USER_3)); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); assertNoErrors(importReport); @@ -198,7 +199,7 @@ void testWriteAccessInAclViaUserGroup() throws IOException { @Test void testGeoOk() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_error_geo-ok.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -208,7 +209,7 @@ void testGeoOk() throws IOException { @Test void testTeAttrNonExistentAttr() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data_error_attr-non-existing.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -218,7 +219,7 @@ void testTeAttrNonExistentAttr() throws IOException { @Test void testDeleteCascadeEnrollments() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -227,8 +228,7 @@ void testDeleteCascadeEnrollments() throws IOException { manager.flush(); manager.clear(); trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); - User user2 = userService.getUser(USER_4); - params.setUserId(user2.getUid()); + injectSecurityContextUser(userService.getUser(USER_4)); params.setImportStrategy(TrackerImportStrategy.DELETE); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -239,7 +239,7 @@ void testDeleteCascadeEnrollments() throws IOException { @Test void shouldFailToDeleteWhenUserHasAccessToRegistrationUnitAndTEWasTransferred() throws IOException, ForbiddenException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -260,7 +260,7 @@ void shouldFailToDeleteWhenUserHasAccessToRegistrationUnitAndTEWasTransferred() void shouldFailToDeleteWhenTEWasTransferredAndUserHasAccessToTransferredOrgUnitAndTEOUIsNotInCaptureScope() throws IOException, ForbiddenException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -280,7 +280,7 @@ void shouldFailToDeleteWhenUserHasAccessToRegistrationUnitAndTEWasTransferred() @Test void shouldDeleteWhenTEWasTransferredAndUserHasAccessToTransferredOrgUnitAndTEOUIsInCaptureScope() throws IOException, ForbiddenException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -300,14 +300,13 @@ void shouldDeleteWhenTEWasTransferredAndUserHasAccessToTransferredOrgUnitAndTEOU @Test void shouldFailToUpdateWhenUserHasAccessToRegistrationUnitAndTEWasTransferred() throws IOException, ForbiddenException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); trackerObjects = fromJson("tracker/validations/enrollments_te_enrollments-data_2.json"); TrackerImportParams trackerImportParams = new TrackerImportParams(); - trackerImportParams.setUserId(USER_8); ImportReport importReport = trackerImportService.importTracker(trackerImportParams, trackerObjects); assertNoErrors(importReport); @@ -326,7 +325,7 @@ void shouldFailToUpdateWhenUserHasAccessToRegistrationUnitAndTEWasTransferred() @Test void shouldUpdateWhenTEWasTransferredAndUserHasAccessToTransferredOrgUnit() throws IOException, ForbiddenException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_te-data.json"); assertNoErrors(trackerImportService.importTracker(params, trackerObjects)); @@ -346,7 +345,7 @@ void shouldUpdateWhenTEWasTransferredAndUserHasAccessToTransferredOrgUnit() @Test void testTeDeleteOk() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/te-data.json"); ImportReport importReport = trackerImportService.importTracker(params, trackerObjects); @@ -364,7 +363,7 @@ void testTeDeleteOk() throws IOException { } protected void importEnrollments() throws IOException { - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); TrackerObjects trackerObjects = fromJson("tracker/validations/enrollments_te_enrollments-data.json"); @@ -376,7 +375,7 @@ protected ImportReport deleteTransferredTrackedEntity(User user) throws IOExcept TrackerObjects trackerObjects = fromJson("tracker/validations/te-transferred-data-delete.json"); TrackerImportParams params = new TrackerImportParams(); params.setImportStrategy(TrackerImportStrategy.DELETE); - params.setUserId(user.getUid()); + injectSecurityContextUser(user); return trackerImportService.importTracker(params, trackerObjects); } @@ -386,7 +385,7 @@ protected ImportReport updateTransferredTrackedEntity(String userId, String trac trackerObjects.getTrackedEntities().get(0).setTrackedEntity(trackedEntity); TrackerImportParams params = new TrackerImportParams(); params.setImportStrategy(TrackerImportStrategy.UPDATE); - params.setUserId(userId); + injectSecurityContextUser(userService.getUser(userId)); return trackerImportService.importTracker(params, trackerObjects); } } diff --git a/dhis-2/dhis-test-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/export/trackedentity/TrackedEntitiesExportControllerPostgresTest.java b/dhis-2/dhis-test-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/export/trackedentity/TrackedEntitiesExportControllerPostgresTest.java index 51c8ae76766f..916925cc6cbe 100644 --- a/dhis-2/dhis-test-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/export/trackedentity/TrackedEntitiesExportControllerPostgresTest.java +++ b/dhis-2/dhis-test-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/export/trackedentity/TrackedEntitiesExportControllerPostgresTest.java @@ -99,7 +99,7 @@ void setUp() throws IOException { User importUser = userService.getUser("tTgjgobT1oS"); injectSecurityContextUser(importUser); - TrackerImportParams params = TrackerImportParams.builder().userId(importUser.getUid()).build(); + TrackerImportParams params = TrackerImportParams.builder().build(); assertNoDataErrors( trackerImportService.importTracker(params, fromJson("tracker/single_te.json"))); diff --git a/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportController.java b/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportController.java index 78353f1c8b4c..e5bef37f9cd9 100644 --- a/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportController.java +++ b/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportController.java @@ -62,7 +62,6 @@ import org.hisp.dhis.tracker.imports.report.Status; import org.hisp.dhis.user.CurrentUserUtil; import org.hisp.dhis.user.UserDetails; -import org.hisp.dhis.user.UserService; import org.hisp.dhis.webapi.controller.tracker.export.CsvService; import org.hisp.dhis.webapi.controller.tracker.view.Event; import org.hisp.dhis.webapi.mvc.annotation.ApiVersion; @@ -104,8 +103,6 @@ public class TrackerImportController { private final ObjectMapper jsonMapper; - private final UserService userService; - @PostMapping(value = "", consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ResponseBody public WebMessage asyncPostJsonTracker( @@ -116,7 +113,7 @@ public WebMessage asyncPostJsonTracker( String userUid = currentUserDetails.getUid(); TrackerImportParams trackerImportParams = - TrackerImportParamsMapper.trackerImportParams(userUid, importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); TrackerObjects trackerObjects = TrackerImportParamsMapper.trackerObjects(body, trackerImportParams.getIdSchemes()); @@ -157,11 +154,7 @@ private WebMessage startAsyncTracker( public ResponseEntity syncPostJsonTracker( ImportRequestParams importRequestParams, @RequestBody Body body) { - UserDetails currentUserDetails = CurrentUserUtil.getCurrentUserDetails(); - String userUid = currentUserDetails.getUid(); - - TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams(userUid, importRequestParams); + TrackerImportParams params = TrackerImportParamsMapper.trackerImportParams(importRequestParams); TrackerObjects trackerObjects = TrackerImportParamsMapper.trackerObjects(body, params.getIdSchemes()); ImportReport importReport = @@ -197,7 +190,7 @@ public WebMessage asyncPostCsvTracker( Body body = Body.builder().events(events).build(); TrackerImportParams trackerImportParams = - TrackerImportParamsMapper.trackerImportParams(userUid, importRequest); + TrackerImportParamsMapper.trackerImportParams(importRequest); TrackerObjects trackerObjects = TrackerImportParamsMapper.trackerObjects(body, trackerImportParams.getIdSchemes()); @@ -217,17 +210,13 @@ public ResponseEntity syncPostCsvTracker( @RequestParam(required = false, defaultValue = "true") boolean skipFirst, @RequestParam(defaultValue = "errors", required = false) TrackerBundleReportMode reportMode) throws IOException, ParseException { - - UserDetails currentUserDetails = CurrentUserUtil.getCurrentUserDetails(); - String userUid = currentUserDetails.getUid(); - InputStream inputStream = StreamUtils.wrapAndCheckCompressionFormat(request.getInputStream()); List events = csvEventService.read(inputStream, skipFirst); Body body = Body.builder().events(events).build(); TrackerImportParams trackerImportParams = - TrackerImportParamsMapper.trackerImportParams(userUid, importRequest); + TrackerImportParamsMapper.trackerImportParams(importRequest); TrackerObjects trackerObjects = TrackerImportParamsMapper.trackerObjects(body, trackerImportParams.getIdSchemes()); ImportReport importReport = diff --git a/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapper.java b/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapper.java index 5cde8caffe1f..16077b8841c1 100644 --- a/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapper.java +++ b/dhis-2/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapper.java @@ -57,8 +57,7 @@ public static TrackerObjects trackerObjects(Body body, TrackerIdSchemeParams idS private TrackerImportParamsMapper() {} - public static TrackerImportParams trackerImportParams( - String userId, ImportRequestParams request) { + public static TrackerImportParams trackerImportParams(ImportRequestParams request) { TrackerIdSchemeParam defaultIdSchemeParam = request.getIdScheme(); TrackerIdSchemeParams idSchemeParams = TrackerIdSchemeParams.builder() @@ -85,8 +84,7 @@ public static TrackerImportParams trackerImportParams( .flushMode(request.getFlushMode()) .skipSideEffects(request.isSkipSideEffects()) .skipRuleEngine(request.isSkipRuleEngine()) - .reportMode(request.getReportMode()) - .userId(userId); + .reportMode(request.getReportMode()); return paramsBuilder.build(); } diff --git a/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportControllerTest.java b/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportControllerTest.java index 7604134c3433..c8b051bd9854 100644 --- a/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportControllerTest.java +++ b/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportControllerTest.java @@ -64,7 +64,6 @@ import org.hisp.dhis.tracker.imports.report.Status; import org.hisp.dhis.tracker.imports.report.ValidationReport; import org.hisp.dhis.user.SystemUser; -import org.hisp.dhis.user.UserService; import org.hisp.dhis.webapi.controller.CrudControllerAdvice; import org.hisp.dhis.webapi.controller.tracker.export.CsvService; import org.hisp.dhis.webapi.controller.tracker.view.Event; @@ -96,7 +95,6 @@ class TrackerImportControllerTest { @Mock private JobSchedulerService jobSchedulerService; @Mock private JobConfigurationService jobConfigurationService; - @Mock private UserService userService; private RenderService renderService; @@ -118,8 +116,7 @@ public void setUp() { notifier, jobSchedulerService, jobConfigurationService, - new ObjectMapper(), - userService); + new ObjectMapper()); mockMvc = MockMvcBuilders.standaloneSetup(controller) diff --git a/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapperTest.java b/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapperTest.java index 6474e4b1793c..8eaf60363e9c 100644 --- a/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapperTest.java +++ b/dhis-2/dhis-web-api/src/test/java/org/hisp/dhis/webapi/controller/tracker/imports/TrackerImportParamsMapperTest.java @@ -62,7 +62,7 @@ void testValidationMode() { ImportRequestParams importRequestParams = ImportRequestParams.builder().validationMode(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat(params.getValidationMode(), is(e)); }); } @@ -75,7 +75,7 @@ void testImportMode() { ImportRequestParams importRequestParams = ImportRequestParams.builder().importMode(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat(params.getImportMode(), is(e)); }); } @@ -88,7 +88,7 @@ void testAtomicMode() { ImportRequestParams importRequestParams = ImportRequestParams.builder().atomicMode(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat(params.getAtomicMode(), is(e)); }); } @@ -101,7 +101,7 @@ void testFlushMode() { ImportRequestParams importRequestParams = ImportRequestParams.builder().flushMode(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat(params.getFlushMode(), is(e)); }); } @@ -114,7 +114,7 @@ void testImportStrategy() { ImportRequestParams importRequestParams = ImportRequestParams.builder().importStrategy(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat(params.getImportStrategy(), is(e)); }); } @@ -123,8 +123,7 @@ void testImportStrategy() { void testIdSchemeUsingIdSchemeName() { ImportRequestParams importRequestParams = ImportRequestParams.builder().idScheme(TrackerIdSchemeParam.NAME).build(); - TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParams params = TrackerImportParamsMapper.trackerImportParams(importRequestParams); TrackerIdSchemeParam expected = TrackerIdSchemeParam.NAME; assertEquals(expected, params.getIdSchemes().getIdScheme()); @@ -142,8 +141,7 @@ void testIdSchemeUsingIdSchemeAttribute() { ImportRequestParams.builder() .idScheme(TrackerIdSchemeParam.ofAttribute("WSiOAALYocA")) .build(); - TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParams params = TrackerImportParamsMapper.trackerImportParams(importRequestParams); TrackerIdSchemeParam expected = TrackerIdSchemeParam.ofAttribute("WSiOAALYocA"); assertEquals(expected, params.getIdSchemes().getIdScheme()); @@ -163,7 +161,7 @@ void testOrgUnitIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().orgUnitIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getOrgUnitIdScheme().getIdScheme(), is(e.getIdScheme())); }); @@ -177,7 +175,7 @@ void testProgramIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().programIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getProgramIdScheme().getIdScheme(), is(e.getIdScheme())); }); @@ -189,8 +187,7 @@ void testProgramIdentifierUsingIdSchemeAttribute() { ImportRequestParams.builder() .programIdScheme(TrackerIdSchemeParam.ofAttribute("WSiOAALYocA")) .build(); - TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParams params = TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertEquals( TrackerIdSchemeParam.ofAttribute("WSiOAALYocA"), @@ -205,7 +202,7 @@ void testProgramStageIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().programStageIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getProgramStageIdScheme().getIdScheme(), is(e.getIdScheme())); @@ -220,7 +217,7 @@ void testDataElementIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().dataElementIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getDataElementIdScheme().getIdScheme(), is(e.getIdScheme())); @@ -235,7 +232,7 @@ void testCategoryOptionComboIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().categoryOptionComboIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getCategoryOptionComboIdScheme().getIdScheme(), is(e.getIdScheme())); @@ -250,7 +247,7 @@ void testCategoryOptionIdentifier() { ImportRequestParams importRequestParams = ImportRequestParams.builder().categoryOptionIdScheme(e).build(); TrackerImportParams params = - TrackerImportParamsMapper.trackerImportParams("userId", importRequestParams); + TrackerImportParamsMapper.trackerImportParams(importRequestParams); assertThat( params.getIdSchemes().getCategoryOptionIdScheme().getIdScheme(), is(e.getIdScheme()));