From f9ccaca90d7ecfffbe2a608c28e0cabaf4a9bb94 Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Thu, 21 Dec 2023 15:35:51 +0200 Subject: [PATCH 1/2] Add credential repository testing --- .../expensetrackerfaf/model/Credential.java | 2 + .../faf223/expensetrackerfaf/model/User.java | 2 - .../repository/CredentialRepositoryTest.java | 66 +++++++++++++++++++ .../repository/ExpenseRepositoryTest.java | 56 +++++----------- 4 files changed, 86 insertions(+), 40 deletions(-) create mode 100644 src/test/java/com/faf223/expensetrackerfaf/repository/CredentialRepositoryTest.java diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java index ae93f5f..d7c9411 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/Credential.java @@ -2,6 +2,7 @@ package com.faf223.expensetrackerfaf.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,6 +10,7 @@ import lombok.NoArgsConstructor; @Entity(name = "credentials") @NoArgsConstructor @AllArgsConstructor +@Builder public class Credential { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/User.java b/src/main/java/com/faf223/expensetrackerfaf/model/User.java index 26dbd9c..69d5412 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/User.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/User.java @@ -34,8 +34,6 @@ private String username; @Transient - // @NotNull(message = "Password must not be null") - // @NotEmpty(message = "Password must not be empty") private String password; @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL) diff --git a/src/test/java/com/faf223/expensetrackerfaf/repository/CredentialRepositoryTest.java b/src/test/java/com/faf223/expensetrackerfaf/repository/CredentialRepositoryTest.java new file mode 100644 index 0000000..b1aad60 --- /dev/null +++ b/src/test/java/com/faf223/expensetrackerfaf/repository/CredentialRepositoryTest.java @@ -0,0 +1,66 @@ +package com.faf223.expensetrackerfaf.repository; + +import com.faf223.expensetrackerfaf.model.Credential; +import com.faf223.expensetrackerfaf.model.User; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; + +import static org.assertj.core.api.Assertions.assertThat; + +@DataJpaTest +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +class CredentialRepositoryTest { + + @Autowired + private CredentialRepository credentialRepository; + + @Autowired + private UserRepository userRepository; + private User user; + private Credential credential; + + @BeforeEach + void setUp() { + user = new User(); + user.setFirstName("Hamon"); + user.setLastName("User"); + user.setUsername("UserHamon"); + + credential = Credential.builder() + .email("NewEmail@gmail.com") + .password("12345") + .user(user) + .build(); + + userRepository.save(user); + credentialRepository.save(credential); + } + @Test + void findByEmail() { + // when + boolean exists = credentialRepository.findByUser(user).isPresent(); + // then + assertThat(exists).isTrue(); + } + + @Test + void itShouldCheckIfCredentialExistsByUser() { + // when + boolean exists = credentialRepository.findByUser(user).isPresent(); + // then + assertThat(exists).isTrue(); + } + + @Test + void deleteByEmail() { + // when + credentialRepository.deleteByEmail(credential.getEmail()); + boolean exists = credentialRepository.findByUser(user).isPresent(); + // then + assertThat(exists).isFalse(); + + } +} \ No newline at end of file diff --git a/src/test/java/com/faf223/expensetrackerfaf/repository/ExpenseRepositoryTest.java b/src/test/java/com/faf223/expensetrackerfaf/repository/ExpenseRepositoryTest.java index dd5dad4..8f83952 100644 --- a/src/test/java/com/faf223/expensetrackerfaf/repository/ExpenseRepositoryTest.java +++ b/src/test/java/com/faf223/expensetrackerfaf/repository/ExpenseRepositoryTest.java @@ -2,6 +2,7 @@ package com.faf223.expensetrackerfaf.repository; import com.faf223.expensetrackerfaf.model.*; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -13,6 +14,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + @DataJpaTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class ExpenseRepositoryTest { @@ -23,11 +26,12 @@ public class ExpenseRepositoryTest { private ExpenseCategoryRepository expenseCategoryRepository; @Autowired private UserRepository userRepository; + private User user; + private ExpenseCategory expenseCategory; - @Test - public void ExpenseRepository_SaveAll_ReturnExpense() { - - User user = User.builder() + @BeforeEach + void setUp() { + user = User.builder() .firstName("Test") .lastName("TestLast") .username("UserTest") @@ -36,7 +40,12 @@ public class ExpenseRepositoryTest { .build(); userRepository.save(user); - ExpenseCategory expenseCategory = expenseCategoryRepository.getReferenceById(1L); + + expenseCategory = expenseCategoryRepository.getReferenceById(1L); + } + + @Test + public void ExpenseRepository_SaveAll_ReturnExpense() { Expense expense = Expense.builder() .user(user) @@ -54,17 +63,6 @@ public class ExpenseRepositoryTest { @Test public void ExpenseRepository_GateAll_ReturnsMoreThenOneExpense() { - User user = User.builder() - .firstName("Test") - .lastName("TestLast") - .username("UserTest") - .incomes(new ArrayList<>()) - .expenses(new ArrayList<>()) - .build(); - - userRepository.save(user); - ExpenseCategory expenseCategory = expenseCategoryRepository.getReferenceById(1L); - List expenseList = expenseRepository.findAll(); int qtyBefore = expenseList.size(); @@ -87,23 +85,12 @@ public class ExpenseRepositoryTest { expenseList = expenseRepository.findAll(); Assertions.assertThat(expenseList).isNotNull(); - Assertions.assertThat(expenseList.size()).isEqualTo(qtyBefore + 2); + assertThat(expenseList).hasSize(qtyBefore + 2); } @Test public void ExpenseRepository_FindById_ReturnExpense() { - User user = User.builder() - .firstName("Test") - .lastName("TestLast") - .username("UserTest") - .incomes(new ArrayList<>()) - .expenses(new ArrayList<>()) - .build(); - - userRepository.save(user); - ExpenseCategory expenseCategory = expenseCategoryRepository.getReferenceById(1L); - Expense expense = Expense.builder() .user(user) .amount(BigDecimal.valueOf(77)) @@ -120,10 +107,7 @@ public class ExpenseRepositoryTest { @Test public void ExpenseRepository_FindByUser_ReturnExpenses() { - Optional user = userRepository.findByUsername("Balaban"); - Assertions.assertThat(user.isPresent()).isTrue(); - - List expenses = expenseRepository.findByUser(user.get()); + List expenses = expenseRepository.findByUser(user); Assertions.assertThat(expenses).isNotNull(); } @@ -139,12 +123,10 @@ public class ExpenseRepositoryTest { @Test public void ExpenseRepository_UpdateExpense_ReturnExpenseNotNull() { - Optional user = userRepository.findByUsername("Deep Deep"); - Assertions.assertThat(user.isPresent()).isTrue(); ExpenseCategory expenseCategory = expenseCategoryRepository.getReferenceById(4L); Expense expense = Expense.builder() - .user(user.get()) + .user(user) .amount(BigDecimal.valueOf(700)) .category(expenseCategory) .date(LocalDate.of(2023, 10, 5)) @@ -168,12 +150,10 @@ public class ExpenseRepositoryTest { @Test public void ExpenseRepository_DeleteExpense_ReturnExpenseNull() { - Optional user = userRepository.findByUsername("Deep Deep"); - Assertions.assertThat(user.isPresent()).isTrue(); ExpenseCategory expenseCategory = expenseCategoryRepository.getReferenceById(4L); Expense expense = Expense.builder() - .user(user.get()) + .user(user) .amount(BigDecimal.valueOf(700)) .category(expenseCategory) .date(LocalDate.of(2023, 10, 5)) From f2b6178f11d30357a1ffbcc1680651d9083a2b48 Mon Sep 17 00:00:00 2001 From: Cravcenco Dmitrii Date: Thu, 21 Dec 2023 23:07:17 +0200 Subject: [PATCH 2/2] Add email and username to return statement --- .../controller/UserController.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java index b585a1d..27b5775 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java @@ -84,7 +84,8 @@ public class UserController { userData.put("firstname", user.getFirstName()); userData.put("lastname", user.getLastName()); userData.put("username", user.getUsername()); - userData.put("userrole", credential.get().getRole().toString()); // Assuming UserRole is an enum + userData.put("email", credential.get().getEmail()); + userData.put("userrole", credential.get().getRole().toString()); return ResponseEntity.ok(userData); } @@ -94,10 +95,25 @@ public class UserController { @GetMapping() @PreAuthorize("hasRole('ADMIN')") - public ResponseEntity> getAllUsers() { + public ResponseEntity>> getAllUsers() { ArrayList users = new ArrayList<>(userService.getUsers()); - return ResponseEntity.ok(userMapper.toDto(users)); + ArrayList> mappedUsers = new ArrayList<>(); + + for (User u: users) { + Map userData = new HashMap<>(); + userData.put("firstname", u.getFirstName()); + userData.put("lastname", u.getLastName()); + userData.put("username", u.getUsername()); + Optional credential = credentialRepository.findByUser(u); + if (credential.isEmpty()) continue; + userData.put("email", credential.get().getEmail()); + userData.put("userrole", credential.get().getRole().toString()); + mappedUsers.add(userData); + } + + + return ResponseEntity.ok(mappedUsers); } @GetMapping("/delete/{username}")