diff --git a/src/main/java/com/example/demo/controller/ProfileController.java b/src/main/java/com/example/demo/controller/ProfileController.java index 33c185321..b84624126 100644 --- a/src/main/java/com/example/demo/controller/ProfileController.java +++ b/src/main/java/com/example/demo/controller/ProfileController.java @@ -31,8 +31,8 @@ public ResponseEntity> findAllProfiles() { return new ResponseEntity<>(service.findAllProfiles(), HttpStatus.OK); } - @GetMapping(value = "/login") - public ResponseEntity login(@RequestBody String username, @RequestBody String password) { + @GetMapping(value = "/login/{username}/{password}") + public ResponseEntity login(@PathVariable String username, @PathVariable String password) { return new ResponseEntity<>(service.login(username, password), HttpStatus.OK); } @@ -42,7 +42,8 @@ public ResponseEntity updateProfile(@RequestBody Profile profile) { } @DeleteMapping(value = "/delete/{id}") - public ResponseEntity deleteById(@PathVariable Long id) { - return new ResponseEntity<>(service.deleteProfileById(id), HttpStatus.OK); + public ResponseEntity deleteById(@PathVariable Long id) { + service.deleteProfileById(id); + return new ResponseEntity<>("Your Profile Has Been Deleted", HttpStatus.OK); } } diff --git a/src/main/java/com/example/demo/repository/ProfileRepo.java b/src/main/java/com/example/demo/repository/ProfileRepo.java index c472e69f4..7b4b5d8b3 100644 --- a/src/main/java/com/example/demo/repository/ProfileRepo.java +++ b/src/main/java/com/example/demo/repository/ProfileRepo.java @@ -7,4 +7,6 @@ @Repository public interface ProfileRepo extends JpaRepository { Profile findByUsernameAndPassword(String username, String password); + + Profile findByUsername(String username); } diff --git a/src/main/java/com/example/demo/service/ProfileService.java b/src/main/java/com/example/demo/service/ProfileService.java index 07c0e016a..c145e0896 100644 --- a/src/main/java/com/example/demo/service/ProfileService.java +++ b/src/main/java/com/example/demo/service/ProfileService.java @@ -12,7 +12,7 @@ public class ProfileService { @Autowired - PasswordEncoder passwordEncoder; + private PasswordEncoder passwordEncoder; @Autowired private ProfileRepo repository; @@ -29,7 +29,7 @@ public Profile createProfile(Profile profileData) { } public Profile findById(Long id) { - return repository.getById(id); + return repository.findById(id).get(); } public List findAllProfiles() { @@ -37,17 +37,22 @@ public List findAllProfiles() { } public Profile login(String username, String password) { - String encodedPassword = passwordEncoder.encode(password); - return repository.findByUsernameAndPassword(username, encodedPassword); + Profile profileToCheckPassword = repository.findByUsername(username); + if (verifyPassword(password, profileToCheckPassword)) { + return profileToCheckPassword; + } + return null; } public Profile update(Profile profileData) { return repository.save(profileData); } - public Profile deleteProfileById(Long id) { - Profile profileToDelete = findById(id); + public void deleteProfileById(Long id) { repository.deleteById(id); - return profileToDelete; + } + + private boolean verifyPassword(String password, Profile profile) { + return passwordEncoder.matches(password, profile.getPassword()); } } diff --git a/src/test/java/com/example/demo/services/TestProfileService.java b/src/test/java/com/example/demo/services/TestProfileService.java index e49be9076..a3de52991 100644 --- a/src/test/java/com/example/demo/services/TestProfileService.java +++ b/src/test/java/com/example/demo/services/TestProfileService.java @@ -1,29 +1,25 @@ package com.example.demo.services; -import com.example.demo.DemoApplication; -import com.example.demo.models.Channel; import com.example.demo.models.Profile; import com.example.demo.repository.ProfileRepo; import com.example.demo.service.ProfileService; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; import org.springframework.security.core.parameters.P; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; @RunWith(MockitoJUnitRunner.class) public class TestProfileService { @@ -31,22 +27,20 @@ public class TestProfileService { @Mock ProfileRepo repository; - @Mock - PasswordEncoder passwordEncoder; - @InjectMocks ProfileService service; + @Mock + PasswordEncoder passwordEncoder; + @Test public void createProfileTest() { Profile expectedProfile = new Profile(); - expectedProfile.setUsername("test username"); - expectedProfile.setPassword(passwordEncoder.encode("test password")); - Mockito.when(repository.save(Mockito.any(Profile.class))).thenReturn(new Profile()); - Profile actualProfile = service.createProfile(expectedProfile); + service.createProfile(expectedProfile); + service.createProfile(expectedProfile); - Assert.assertEquals(expectedProfile.getFirstName(), actualProfile.getFirstName()); + Mockito.verify(repository, Mockito.times(2)).save(Mockito.any(Profile.class)); } @Test @@ -55,7 +49,7 @@ public void findByIdTest() { Profile expectedProfile = new Profile(); expectedProfile.setId(id); - Mockito.when(repository.getById(id)).thenReturn(expectedProfile); + Mockito.when(repository.findById(id)).thenReturn(Optional.of(expectedProfile)); Profile actualProfile = service.findById(id); Assert.assertEquals(expectedProfile.getId(), actualProfile.getId()); @@ -74,25 +68,25 @@ public void findAllProfilesTest() { @Test public void loginTest() { - Profile expectedProfile = new Profile(); + Profile profile = new Profile(); String username = "test username"; - String password = passwordEncoder.encode("test password"); - expectedProfile.setPassword(password); - expectedProfile.setUsername(username); + String password = "test password"; + profile.setUsername(username); profile.setPassword(password); - Mockito.when(repository.findByUsernameAndPassword(username, password)).thenReturn(expectedProfile); - Profile actualProfile = service.login(username, password); + Mockito.when(repository.findByUsername(username)).thenReturn(profile); + service.login(username, password); + service.login(username, password); - Assert.assertEquals(expectedProfile.getUsername(), actualProfile.getUsername()); + Mockito.verify(repository, Mockito.times(2)).findByUsername(username); } @Test public void updateTest() { Profile expectedProfile = new Profile(); expectedProfile.setUsername("test username"); - expectedProfile.setPassword(passwordEncoder.encode("test password")); + expectedProfile.setPassword("test password"); - Mockito.when(repository.save(Mockito.any(Profile.class))).thenReturn(new Profile()); + Mockito.when(repository.save(expectedProfile)).thenReturn(expectedProfile); Profile actualProfile = service.update(expectedProfile); Assert.assertEquals(expectedProfile.getFirstName(), actualProfile.getFirstName()); diff --git a/target/classes/com/example/demo/controller/ProfileController.class b/target/classes/com/example/demo/controller/ProfileController.class index 3356a417f..880528534 100644 Binary files a/target/classes/com/example/demo/controller/ProfileController.class and b/target/classes/com/example/demo/controller/ProfileController.class differ diff --git a/target/classes/com/example/demo/models/Channel.class b/target/classes/com/example/demo/models/Channel.class index b1edeb85b..37ca6a28f 100644 Binary files a/target/classes/com/example/demo/models/Channel.class and b/target/classes/com/example/demo/models/Channel.class differ diff --git a/target/classes/com/example/demo/models/Profile.class b/target/classes/com/example/demo/models/Profile.class index 13aee9426..b9a5f5a5b 100644 Binary files a/target/classes/com/example/demo/models/Profile.class and b/target/classes/com/example/demo/models/Profile.class differ diff --git a/target/classes/com/example/demo/repository/ProfileRepo.class b/target/classes/com/example/demo/repository/ProfileRepo.class index 7d9b4f2ce..d94a94bdf 100644 Binary files a/target/classes/com/example/demo/repository/ProfileRepo.class and b/target/classes/com/example/demo/repository/ProfileRepo.class differ diff --git a/target/classes/com/example/demo/service/ProfileService.class b/target/classes/com/example/demo/service/ProfileService.class index 4bae43a83..0504bc6fa 100644 Binary files a/target/classes/com/example/demo/service/ProfileService.class and b/target/classes/com/example/demo/service/ProfileService.class differ diff --git a/target/test-classes/com/example/demo/services/TestProfileService.class b/target/test-classes/com/example/demo/services/TestProfileService.class index 0e483ec66..ea65c92c0 100644 Binary files a/target/test-classes/com/example/demo/services/TestProfileService.class and b/target/test-classes/com/example/demo/services/TestProfileService.class differ