From 096e6bf256f574d048d38b1f5a84482dbe4f033c Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Thu, 4 Apr 2024 18:18:29 +0100 Subject: [PATCH 01/34] add bug on purpose on the get all users endpoint --- .../xray/tutorials/springboot/boundary/UserRestController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From e6b440c6967475f36293c68b0ae447dab2c9c5d4 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Fri, 5 Apr 2024 16:29:45 +0100 Subject: [PATCH 02/34] ST-2 fix listing of all users --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From 6e30671e779eaee07cc89972280823f4190c4961 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Fri, 5 Apr 2024 16:33:45 +0100 Subject: [PATCH 03/34] ST-2 add bug on purpose (again) --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 0d218e6..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); - // return null; // bug on purpose + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From 0486c8cf222157bdc41153aab38b120bc69082d6 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 8 Apr 2024 16:23:29 +0100 Subject: [PATCH 04/34] ST-2 add bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From ce4e5520e9217494e75e11d538841b52d4f3524a Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 8 Apr 2024 16:27:59 +0100 Subject: [PATCH 05/34] ST-2 bug on purpose .. --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 0d218e6..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); - // return null; // bug on purpose + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From ec493bf9858e4e07f9d7217ed336ade1a123a731 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 8 Apr 2024 16:33:46 +0100 Subject: [PATCH 06/34] ST-2 fix dummy bug --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From 402cd8a8126c36c4065417cba8d0abb03003324a Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 9 Apr 2024 16:27:13 +0100 Subject: [PATCH 07/34] ST-2 bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 0d218e6..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); - // return null; // bug on purpose + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From b61e32ee1c685c64fa7139f77bb3d7ecdd203845 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 9 Apr 2024 16:34:46 +0100 Subject: [PATCH 08/34] ST-2 fix bug --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From 79a2b8472bdc1f16353f99e888380333513ac47a Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Fri, 2 May 2025 16:28:36 +0100 Subject: [PATCH 09/34] Update maven.yml --- .github/workflows/maven.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index be2c306..8f913fc 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -45,7 +45,12 @@ jobs: env: XRAYCLOUD_CLIENT_ID: ${{ secrets.XRAYCLOUD_CLIENT_ID }} XRAYCLOUD_CLIENT_SECRET: ${{ secrets.XRAYCLOUD_CLIENT_SECRET }} - XRAYCLOUD_TEST_PLAN_KEY: ${{ secrets.XRAYCLOUD_TEST_PLAN_KEY }} + XRAYCLOUD_TEST_PLAN_KEY: ${{ vars.XRAYCLOUD_TEST_PLAN_KEY }} REVISON: ${{ github.ref_name}} TEST_ENVIRONMENT: java${{ matrix.java }} run: mvn -Dxray.clientId=${{ env.XRAYCLOUD_CLIENT_ID }} -Dxray.clientSecret=${{ env.XRAYCLOUD_CLIENT_SECRET }} -Dxray.testEnvironment=${{ env.TEST_ENVIRONMENT }} -Dxray.testPlanKey=${{ env.XRAYCLOUD_TEST_PLAN_KEY }} -Dxray.revision=${{ env.REVISON }} xray:import-results + - name: add link to Test Plan having the multiple Test Executions (one per Java version) + run: | + echo "| Link |" >> $GITHUB_STEP_SUMMARY + echo "| --- |" >> $GITHUB_STEP_SUMMARY + echo "| Test Plan: [${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}](${{ vars.JIRACLOUD_BASE_URL }}/browse/${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}) | " >> $GITHUB_STEP_SUMMARY From 1edf82e3af77f16645d0167b8eebfed37987cf39 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sat, 3 May 2025 10:28:07 +0100 Subject: [PATCH 10/34] Update maven.yml --- .github/workflows/maven.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 8f913fc..81d5486 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -54,3 +54,8 @@ jobs: echo "| Link |" >> $GITHUB_STEP_SUMMARY echo "| --- |" >> $GITHUB_STEP_SUMMARY echo "| Test Plan: [${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}](${{ vars.JIRACLOUD_BASE_URL }}/browse/${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}) | " >> $GITHUB_STEP_SUMMARY + - uses: mshick/add-pr-comment@v2 + with: + message: | + Test Plan: [${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}](${{ vars.JIRACLOUD_BASE_URL }}/browse/${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}) + From 305f3b8fcc5a072ad24f6e9b6108dd6beba1eda0 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sat, 3 May 2025 10:31:19 +0100 Subject: [PATCH 11/34] Update maven.yml --- .github/workflows/maven.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 81d5486..69d9c59 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -25,7 +25,9 @@ jobs: strategy: matrix: java: [ '17', '21' ] - + permissions: + pull-requests: write + steps: - uses: actions/checkout@v4 with: From 54ddb584c88601aa99a450362ba04e1be27d774d Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sun, 4 May 2025 10:15:18 +0100 Subject: [PATCH 12/34] remove failsafe: prefix from mvn command --- .github/workflows/maven.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 39f3c50..9457236 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -41,7 +41,7 @@ jobs: - name: Build and run unit tests run: mvn -B package --file pom.xml - name: Run integration tests - run: mvn -B failsafe:integration-test failsafe:verify --file pom.xml + run: mvn -B integration-test verify --file pom.xml - name: Add code coverage information to PR id: jacoco-pr uses: madrapps/jacoco-report@v1.7.1 @@ -61,12 +61,14 @@ jobs: REVISON: ${{ github.ref_name}} TEST_ENVIRONMENT: java${{ matrix.java }} run: mvn -Dxray.clientId=${{ env.XRAYCLOUD_CLIENT_ID }} -Dxray.clientSecret=${{ env.XRAYCLOUD_CLIENT_SECRET }} -Dxray.testEnvironment=${{ env.TEST_ENVIRONMENT }} -Dxray.testPlanKey=${{ env.XRAYCLOUD_TEST_PLAN_KEY }} -Dxray.revision=${{ env.REVISON }} xray:import-results - - name: add link to Test Plan having the multiple Test Executions (one per Java version) + - name: add link to Test Plan having the Test Executions (one per Java version) on the build summary run: | echo "| Link |" >> $GITHUB_STEP_SUMMARY echo "| --- |" >> $GITHUB_STEP_SUMMARY echo "| Test Plan: [${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}](${{ vars.JIRACLOUD_BASE_URL }}/browse/${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}) | " >> $GITHUB_STEP_SUMMARY - - uses: mshick/add-pr-comment@v2 + - name: add link to Test Plan on the PR + uses: mshick/add-pr-comment@v2 + if: github.event_name == 'pull_request' with: message: | Test Plan: [${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}](${{ vars.JIRACLOUD_BASE_URL }}/browse/${{ vars.XRAYCLOUD_TEST_PLAN_KEY }}) From 61a1890ec89303f32ac8bab2b53709411e29fb7b Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sun, 4 May 2025 10:27:50 +0100 Subject: [PATCH 13/34] additional unit testfor user repository --- .../tutorials/springboot/UserRepositoryTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java index a66b284..bc88661 100644 --- a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java +++ b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java @@ -40,6 +40,20 @@ void findByIdReturnsNullWhenInvalidId() { assertThat(fromDb).isEmpty(); } + @Test + void findByUsernameReturnsUserForValidUsername() { + User john = new User("John Doe", "johndoe", "dummypassword"); + entityManager.persistAndFlush(john); + + User user = userRepository.findByUsername("johndoe"); + assertThat(user).isEqualTo(john); + } + + @Test + void findByUsernameReturnsNullWhenInvalidUsernmae() { + User user = userRepository.findByUsername("missinguser"); + assertThat(user).isNull(); + } @Test void findAllReturnsAllUsers() { From fa282a427ec79e8fad062fc209d7d40734b59918 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sun, 4 May 2025 10:48:30 +0100 Subject: [PATCH 14/34] additional unit tests for user service --- .../springboot/UserRepositoryTest.java | 2 +- .../springboot/UserServiceUnitTest.java | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java index bc88661..04f0659 100644 --- a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java +++ b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserRepositoryTest.java @@ -50,7 +50,7 @@ void findByUsernameReturnsUserForValidUsername() { } @Test - void findByUsernameReturnsNullWhenInvalidUsernmae() { + void findByUsernameReturnsNullWhenInvalidUsername() { User user = userRepository.findByUsername("missinguser"); assertThat(user).isNull(); } diff --git a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserServiceUnitTest.java b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserServiceUnitTest.java index 71e4bc4..82e7fb2 100644 --- a/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserServiceUnitTest.java +++ b/src/test/java/com/sergiofreire/xray/tutorials/springboot/UserServiceUnitTest.java @@ -45,6 +45,7 @@ public void setUp() { Mockito.when(userRepository.findById(john.getId())).thenReturn(Optional.of(john)); + Mockito.when(userRepository.findByUsername(john.getUsername())).thenReturn(john); Mockito.when(userRepository.findAll()).thenReturn(allUsers); Mockito.when(userRepository.findById(-99L)).thenReturn(Optional.empty()); } @@ -66,6 +67,40 @@ void getUserDetailsReturnsEmptyIfNonExisting() { assertThat(user).isNotPresent(); } + @Test + void getUserByUsernameReturnsUserIfExisting() { + Optional user = userService.getUserByUsername("johndoe"); + + Mockito.verify(userRepository, VerificationModeFactory.times(1)).findByUsername(Mockito.anyString()); + assertThat(user.get().getName()).isEqualTo("John Doe"); + assertThat(user.get().getUsername()).isEqualTo("johndoe"); + } + + @Test + void getUserByUsernameReturnsEmptyIfNonExisting() { + Optional user = userService.getUserByUsername("missinguser"); + + Mockito.verify(userRepository, VerificationModeFactory.times(1)).findByUsername(Mockito.anyString()); + assertThat(user).isNotPresent(); + } + + @Test + void existsReturnsTrueForValidUsername() { + boolean userFound = userService.exists("johndoe"); + + Mockito.verify(userRepository, VerificationModeFactory.times(1)).findByUsername(Mockito.anyString()); + assertThat(userFound).isTrue(); + } + + @Test + void existsReturnsFalseForInvalidUsername() { + boolean userFound = userService.exists("missinguser"); + + Mockito.verify(userRepository, VerificationModeFactory.times(1)).findByUsername(Mockito.anyString()); + assertThat(userFound).isFalse(); + } + + @Test void getAllUsersReturnsAllExistingUsers() { User john = new User("John Doe", "johndoe", "dummypassword"); From e1fb5e8c7c70ca4e39b14cb28d664325c49d5946 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Sun, 4 May 2025 10:53:18 +0100 Subject: [PATCH 15/34] ST-2 bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 0d218e6..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); - // return null; // bug on purpose + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From 9b76d3ff9e8181be2c23c177028b78b7e5d3cc1b Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 5 May 2025 17:06:48 +0100 Subject: [PATCH 16/34] ST-2 add bug on purpose (again) --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From fa4280da644643048aefcd48b31cea59a94ff65d Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 5 May 2025 17:06:48 +0100 Subject: [PATCH 17/34] ST-2 fix bug --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..0d218e6 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose + return userService.getAllUsers(); + // return null; // bug on purpose } @DeleteMapping("/users/{id}") From 3fa8cf541944a56c89aeab2050efd7c1838b5d55 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Mon, 5 May 2025 17:10:48 +0100 Subject: [PATCH 18/34] ST-2 add bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 0d218e6..a4d2030 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); - // return null; // bug on purpose + // return userService.getAllUsers(); + return null; // bug on purpose } @DeleteMapping("/users/{id}") From 75fbd3baeba33d7257f345a347cc043d52c5d724 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 6 May 2025 11:57:35 +0100 Subject: [PATCH 19/34] ST-2 dummy bug --- .../xray/tutorials/springboot/boundary/UserRestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index a4d2030..ad7479d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -40,7 +40,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { // return userService.getAllUsers(); - return null; // bug on purpose + return null; // bug on purpose... } @DeleteMapping("/users/{id}") From d8cffbaf75cf9dfa85e17d87955535b4b20d3134 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 6 May 2025 16:39:24 +0100 Subject: [PATCH 20/34] ST-2 fix dummy test --- .../xray/tutorials/springboot/boundary/UserRestController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ad7479d..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; // bug on purpose... + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From d4a804527933e4c2ebfcb12720c68a1b2a53bd61 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Thu, 6 Nov 2025 11:42:48 +0000 Subject: [PATCH 21/34] bug on purpose --- .../xray/tutorials/springboot/boundary/UserRestController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..aebdbcb 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,8 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + return null; } @DeleteMapping("/users/{id}") From fbb8cdad7c1258a9666098bcf08b5726f39a85f6 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Thu, 6 Nov 2025 11:45:54 +0000 Subject: [PATCH 22/34] fix bug --- .../xray/tutorials/springboot/boundary/UserRestController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index aebdbcb..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,8 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - return null; + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From b8ad762ef546bad7391158476b3c98e7d0c18d0d Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 14:16:55 +0000 Subject: [PATCH 23/34] ST-2 bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..4db70b9 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,9 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + // bug on purpose + return null; } @DeleteMapping("/users/{id}") From 2b0c2824c8b0cd97418bddd57d38d47f73853a83 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 14:28:57 +0000 Subject: [PATCH 24/34] typo --- .../xray/tutorials/springboot/boundary/UserRestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 4db70b9..5ab6378 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -40,7 +40,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { // return userService.getAllUsers(); - // bug on purpose + // bug on purpose .. return null; } From 336740f0bdcc8f42d9ed11e13f139ca64f898b4d Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 14:30:55 +0000 Subject: [PATCH 25/34] ST-2 fix bug --- .../tutorials/springboot/boundary/UserRestController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 5ab6378..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,9 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - // bug on purpose .. - return null; + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From af17bb04ddd688a58dbb73ce12d2dfd5cd7520f0 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 14:36:06 +0000 Subject: [PATCH 26/34] ST-e add bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..5ab6378 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,9 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + // bug on purpose .. + return null; } @DeleteMapping("/users/{id}") From c2b99ad8655099d8b3c6f4f552c19e6c79a1a798 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 14:44:09 +0000 Subject: [PATCH 27/34] ST-2 bug on purpose --- .../xray/tutorials/springboot/boundary/UserRestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 5ab6378..d6eeca2 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -40,7 +40,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { // return userService.getAllUsers(); - // bug on purpose .. + // bug on purpose .. return null; } From 33103132ae3e9921f1c3ee1d05d85be71c610865 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 15:01:02 +0000 Subject: [PATCH 28/34] ST-2 bug on purpose --- .../xray/tutorials/springboot/boundary/UserRestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index d6eeca2..328571e 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -40,7 +40,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { // return userService.getAllUsers(); - // bug on purpose .. + // bug on purpose ... return null; } From 25445ec64c9254ca974e9340c1715ee845b1aa30 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 15:08:20 +0000 Subject: [PATCH 29/34] ST-2 fix bug --- .../tutorials/springboot/boundary/UserRestController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 328571e..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,9 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - // bug on purpose ... - return null; + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From 452a32d96bc714099c20eb33fb7d2bdf10ebe50a Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 15:11:17 +0000 Subject: [PATCH 30/34] ST-2 bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..328571e 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,9 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + // bug on purpose ... + return null; } @DeleteMapping("/users/{id}") From bed8af0df697936388d10d06bfc720ee8e2a4f91 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Tue, 11 Nov 2025 15:56:12 +0000 Subject: [PATCH 31/34] ST-2 bug fix --- .../tutorials/springboot/boundary/UserRestController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 328571e..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,9 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - // bug on purpose ... - return null; + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From c5df45cb2c8045896eb69b98906ac8d7c6172630 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Wed, 12 Nov 2025 10:21:19 +0000 Subject: [PATCH 32/34] ST-2 bug on purpose --- .../tutorials/springboot/boundary/UserRestController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..328571e 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,7 +39,9 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - return userService.getAllUsers(); + // return userService.getAllUsers(); + // bug on purpose ... + return null; } @DeleteMapping("/users/{id}") From d9295ed55dae24d46c56acba836b2422fd56b2e3 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Wed, 12 Nov 2025 13:37:49 +0000 Subject: [PATCH 33/34] ST-2 bug fix --- .../tutorials/springboot/boundary/UserRestController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index 328571e..ff6239d 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -39,9 +39,7 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) @GetMapping(path="/users" ) public List getAllUsers() { - // return userService.getAllUsers(); - // bug on purpose ... - return null; + return userService.getAllUsers(); } @DeleteMapping("/users/{id}") From 4f4625a6e50f31285ec239d6abbb9e33c8e2b193 Mon Sep 17 00:00:00 2001 From: Sergio Freire Date: Wed, 3 Dec 2025 10:35:35 +0000 Subject: [PATCH 34/34] DEMO-1 endpoint for updating user --- .../springboot/boundary/UserRestController.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java index ff6239d..2ac3c2a 100644 --- a/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java +++ b/src/main/java/com/sergiofreire/xray/tutorials/springboot/boundary/UserRestController.java @@ -37,6 +37,18 @@ public ResponseEntity getCarById(@PathVariable(value = "id") Long id) return ResponseEntity.ok().body(user); } + @PutMapping("/users/{id}") + public ResponseEntity updateUser(@PathVariable(value = "id") Long id, @RequestBody User userDetails) + throws ResourceNotFoundException { + User user = userService.getUserDetails(id) + .orElseThrow(() -> new ResourceNotFoundException("User not found for id: " + id)); + user.setName(userDetails.getName()); + user.setUsername(userDetails.getUsername()); + user.setPassword(userDetails.getPassword()); + final User updatedUser = userService.save(user); + return ResponseEntity.ok(updatedUser); + } + @GetMapping(path="/users" ) public List getAllUsers() { return userService.getAllUsers();