diff --git a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java index b7a6222..b6434bb 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -400,7 +400,7 @@ public class CalculatorController { } try { extraActivityController.updateExtras(); - } catch (Exception ex) { + } catch (NullPointerException ex) { System.out.println("continue"); } Float footprint = userService.saveFootprint(userService.currentUser.getName()); diff --git a/src/Client/src/main/java/greenify/client/rest/UserService.java b/src/Client/src/main/java/greenify/client/rest/UserService.java index 42fa205..c590ec3 100644 --- a/src/Client/src/main/java/greenify/client/rest/UserService.java +++ b/src/Client/src/main/java/greenify/client/rest/UserService.java @@ -332,4 +332,20 @@ public class UserService { .build().encode().toUri(), List.class); return result; } + + /** + * Removes a user from the database. + * @param name the username of the current user. + */ + @SuppressWarnings("Duplicates") + public void deleteAccount(String name) { + HttpHeaders headers = new HttpHeaders(); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/deleteAccount") + .queryParam("name", name); + HttpEntity entity = new HttpEntity<>(headers); + System.out.println(builder.build().encode().toUri()); + ResponseEntity authenticateResponse = this.restTemplate.getForEntity(builder.build() + .encode().toUri(), String.class); + } } \ No newline at end of file diff --git a/src/Client/src/test/java/UserServiceTest.java b/src/Client/src/test/java/UserServiceTest.java index a4934b9..0e083cf 100644 --- a/src/Client/src/test/java/UserServiceTest.java +++ b/src/Client/src/test/java/UserServiceTest.java @@ -152,8 +152,6 @@ public class UserServiceTest { @Test public void removeFriendTest() throws Exception { - userService.addFriend("Eric", "Ceren"); - Mockito.verify(userService).addFriend("Eric", "Ceren"); userService.removeFriend("Eric", "Ceren"); Mockito.verify(userService).removeFriend("Eric", "Ceren"); } @@ -169,6 +167,12 @@ public class UserServiceTest { userService.getResults("mika"); Mockito.verify(userService).getResults("mika"); } + + @Test + public void deleteAccountTest() throws Exception { + userService.deleteAccount("merel"); + Mockito.verify(userService).deleteAccount("merel"); + } } diff --git a/src/Server/src/main/java/greenify/server/rest/UserController.java b/src/Server/src/main/java/greenify/server/rest/UserController.java index ccb3d75..19da98a 100644 --- a/src/Server/src/main/java/greenify/server/rest/UserController.java +++ b/src/Server/src/main/java/greenify/server/rest/UserController.java @@ -195,5 +195,14 @@ public class UserController { public Map getResults(@RequestParam(value = "name") String name) { return userService.getResults(name); } + + /** + * This method deletes a user from the database. + * @param name name of the user + */ + @RequestMapping("/deleteAccount") + public void deleteAccount(@RequestParam(value = "name") String name) { + userService.deleteAccount(name); + } } diff --git a/src/Server/src/main/java/greenify/server/service/UserService.java b/src/Server/src/main/java/greenify/server/service/UserService.java index 6160416..7155b9d 100644 --- a/src/Server/src/main/java/greenify/server/service/UserService.java +++ b/src/Server/src/main/java/greenify/server/service/UserService.java @@ -303,4 +303,15 @@ public class UserService { } return result; } + + /** + * This method gets the list of all users. + */ + public void deleteAccount(String name) { + User user = userRepository.findByName(name); + if (user == null) { + throw new ApplicationException("User doesn't exist"); + } + userRepository.delete(user); + } } diff --git a/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java b/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java index 53ad12d..eff8ccf 100644 --- a/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java +++ b/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java @@ -262,4 +262,16 @@ public class UserControllerTest { assertEquals("mika", arg1Captor.getValue()); } + @Test + public void deleteAccountTest() throws Exception { + ArgumentCaptor arg1Captor = ArgumentCaptor.forClass(String.class); + mvc.perform(get("/deleteAccount") + .param("name", "merel") + .accept(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()); + verify(userService, times(1)).deleteAccount(arg1Captor.capture()); + assertEquals("merel", arg1Captor.getValue()); + } + } diff --git a/src/Server/src/test/java/greenify/server/service/UserServiceTest.java b/src/Server/src/test/java/greenify/server/service/UserServiceTest.java index d7c8054..0f9bf49 100644 --- a/src/Server/src/test/java/greenify/server/service/UserServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/UserServiceTest.java @@ -2,6 +2,9 @@ package greenify.server.service; import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import greenify.common.ApplicationException; @@ -326,4 +329,17 @@ public class UserServiceTest { public void getAchievementsTest() { assertEquals(AllAchievements.getDefaults(), userService.getAchievements("alex")); } + + @Test + public void deleteAccountException() { + assertThrows(ApplicationException.class, () -> userService.deleteAccount("merel")); + } + + @Test + public void deleteAccount() { + User alex = new User(1L, "alex", "password"); + doNothing().when(userRepository).delete(alex); + userService.deleteAccount("alex"); + verify(userRepository, times(1)).delete(alex); + } } \ No newline at end of file