Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/main/java/com/omniva/phoenix/model/request/user/PasswordChangeRequest.java b/src/main/java/com/omniva/phoenix/model/request/user/PasswordChangeRequest.java
- new file mode 100644
- index 0000000..9e29102
- --- /dev/null
- +++ b/src/main/java/com/omniva/phoenix/model/request/user/PasswordChangeRequest.java
- @@ -0,0 +1,27 @@
- +package com.omniva.phoenix.model.request.user;
- +
- +import javax.validation.constraints.NotBlank;
- +
- +import lombok.AllArgsConstructor;
- +import lombok.Builder;
- +import lombok.Data;
- +import lombok.NoArgsConstructor;
- +import org.hibernate.validator.constraints.Length;
- +
- +@Data
- +@Builder
- +@NoArgsConstructor
- +@AllArgsConstructor
- +public class PasswordChangeRequest {
- +
- + @NotBlank
- + private String username;
- +
- + @NotBlank
- + private String oldPassword;
- +
- + @NotBlank
- + @Length(min = 8, max = 50)
- + private String newPassword;
- +
- +}
- diff --git a/src/main/java/com/omniva/phoenix/model/response/user/PasswordChangeResponse.java b/src/main/java/com/omniva/phoenix/model/response/user/PasswordChangeResponse.java
- new file mode 100644
- index 0000000..bb8f27f
- --- /dev/null
- +++ b/src/main/java/com/omniva/phoenix/model/response/user/PasswordChangeResponse.java
- @@ -0,0 +1,16 @@
- +package com.omniva.phoenix.model.response.user;
- +
- +import lombok.AllArgsConstructor;
- +import lombok.Builder;
- +import lombok.Data;
- +import lombok.NoArgsConstructor;
- +
- +@Data
- +@Builder
- +@NoArgsConstructor
- +@AllArgsConstructor
- +public class PasswordChangeResponse {
- +
- + private boolean success;
- +
- +}
- diff --git a/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java b/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java
- new file mode 100644
- index 0000000..0796ddf
- --- /dev/null
- +++ b/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java
- @@ -0,0 +1,24 @@
- +package com.omniva.phoenix.service.user;
- +
- +import org.springframework.beans.factory.annotation.Autowired;
- +import org.springframework.stereotype.Service;
- +
- +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
- +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
- +import com.omniva.phoenix.security.auth.cas.CasAuthService;
- +
- +@Service
- +public class PasswordChangeService {
- +
- + @Autowired
- + private CasAuthService casAuthService;
- +
- + public PasswordChangeResponse updateCredentials(PasswordChangeRequest request) {
- +
- + // check old password
- + casAuthService.authenticate(request.getUsername(), request.getOldPassword(), null);
- +
- + return PasswordChangeResponse.builder().build();
- + }
- +
- +}
- diff --git a/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java b/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java
- new file mode 100644
- index 0000000..b8157d1
- --- /dev/null
- +++ b/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java
- @@ -0,0 +1,37 @@
- +package com.omniva.phoenix.web.v1;
- +
- +import static com.omniva.phoenix.PhoenixConstants.PHOENIX_API_URI;
- +import static com.omniva.phoenix.web.ApiVersions.VERSION_1;
- +import static com.omniva.phoenix.web.v1.PasswordChangeController.PASSWORD_URI;
- +
- +import javax.validation.Valid;
- +
- +import org.springframework.beans.factory.annotation.Autowired;
- +import org.springframework.http.ResponseEntity;
- +import org.springframework.web.bind.annotation.PostMapping;
- +import org.springframework.web.bind.annotation.RequestBody;
- +import org.springframework.web.bind.annotation.RequestMapping;
- +import org.springframework.web.bind.annotation.RestController;
- +import io.swagger.annotations.Api;
- +import io.swagger.annotations.ApiOperation;
- +
- +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
- +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
- +import com.omniva.phoenix.service.user.PasswordChangeService;
- +
- +@RestController
- +@RequestMapping(PASSWORD_URI)
- +@Api(tags = "Password", description = "Operations with user's password")
- +class PasswordChangeController {
- +
- + static final String PASSWORD_URI = PHOENIX_API_URI + "/" + VERSION_1 + "/password/";
- +
- + @Autowired
- + private PasswordChangeService passwordChangeService;
- +
- + @ApiOperation("Change password")
- + @PostMapping("change")
- + public ResponseEntity<PasswordChangeResponse> changePassword(@RequestBody @Valid PasswordChangeRequest input) {
- + return ResponseEntity.ok(passwordChangeService.updateCredentials(input));
- + }
- +}
- diff --git a/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java b/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java
- new file mode 100644
- index 0000000..d911a07
- --- /dev/null
- +++ b/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java
- @@ -0,0 +1,78 @@
- +package com.omniva.phoenix.service.user;
- +
- +import static org.hamcrest.CoreMatchers.notNullValue;
- +import static org.hamcrest.MatcherAssert.assertThat;
- +import static org.hamcrest.Matchers.is;
- +import static org.mockito.Mockito.when;
- +
- +import org.junit.Test;
- +import org.junit.runner.RunWith;
- +import org.mockito.InjectMocks;
- +import org.mockito.Mock;
- +import org.mockito.runners.MockitoJUnitRunner;
- +import org.springframework.security.authentication.BadCredentialsException;
- +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
- +import org.springframework.security.core.AuthenticationException;
- +
- +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
- +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
- +import com.omniva.phoenix.security.auth.cas.CasAuthService;
- +
- +
- +@RunWith(MockitoJUnitRunner.class)
- +public class PasswordChangeServiceUnitTest {
- +
- + private static final String BAD_USERNAME = "bad.username";
- + private static final String BAD_OLD_PASSWORD = "bad.password";
- + private static final String OLD_PASSWORD = "old.password";
- + private static final String USERNAME = "user.name";
- + private static final String PASSWORD = "password";
- +
- + @InjectMocks
- + private PasswordChangeService passwordChangeService;
- +
- + @Mock
- + private CasAuthService casAuthService;
- +
- +
- + @Test(expected = AuthenticationException.class)
- + public void shouldFailOnBadOldPassword() {
- + when(casAuthService.authenticate(USERNAME, BAD_OLD_PASSWORD, null))
- + .thenThrow(BadCredentialsException.class);
- +
- + passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
- + .username(USERNAME)
- + .oldPassword(BAD_OLD_PASSWORD)
- + .newPassword(PASSWORD)
- + .build());
- + }
- +
- + @Test(expected = AuthenticationException.class)
- + public void shouldFailOnBadUsername() {
- + when(casAuthService.authenticate(BAD_USERNAME, OLD_PASSWORD, null))
- + .thenThrow(BadCredentialsException.class);
- +
- + passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
- + .username(BAD_USERNAME)
- + .oldPassword(OLD_PASSWORD)
- + .newPassword(PASSWORD)
- + .build());
- + }
- +
- + @Test
- + public void shouldReturnOk() {
- + when(casAuthService.authenticate(USERNAME, OLD_PASSWORD, null))
- + .thenReturn(new UsernamePasswordAuthenticationToken(
- + USERNAME, PASSWORD));
- +
- + PasswordChangeResponse passwordChangeResponse = passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
- + .username(USERNAME)
- + .oldPassword(OLD_PASSWORD)
- + .newPassword(PASSWORD)
- + .build());
- +
- + assertThat(passwordChangeResponse, is(notNullValue()));
- +
- + }
- +
- +}
- \ No newline at end of file
- diff --git a/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java b/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java
- new file mode 100644
- index 0000000..e182e4b
- --- /dev/null
- +++ b/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java
- @@ -0,0 +1,30 @@
- +package com.omniva.phoenix.web.v1;
- +
- +import org.junit.Test;
- +import org.springframework.beans.factory.annotation.Autowired;
- +
- +import com.omniva.phoenix.security.auth.cas.CasAuthService;
- +import com.omniva.phoenix.test.BaseOSWWebIntegrationTest;
- +import com.omniva.phoenix.test.annotation.PhoenixInternalServiceWebIntegrationTest;
- +
- +@PhoenixInternalServiceWebIntegrationTest
- +public class PasswordChangeControllerIntegrationTest extends BaseOSWWebIntegrationTest {
- +
- + private static final String BAD_USERNAME = "bad.username";
- + private static final String BAD_OLD_PASSWORD = "bad.password";
- + private static final String OLD_PASSWORD = "old.password";
- + private static final String USERNAME = "user.name";
- + private static final String PASSWORD = "password";
- +
- + @Autowired
- + private CasAuthService casAuthService;
- +
- + @Test
- + public void shouldRejectBadCredentials() {
- + }
- +
- + @Override
- + protected String getBaseUri() {
- + return PasswordChangeController.PASSWORD_URI;
- + }
- +}
- diff --git a/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java b/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
- index 66512b9..fd7ab60 100644
- --- a/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
- +++ b/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
- @@ -12,8 +12,6 @@ import org.junit.runner.RunWith;
- import org.mockito.InjectMocks;
- import org.mockito.Mock;
- import org.mockito.runners.MockitoJUnitRunner;
- -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
- -import org.springframework.security.oauth2.provider.OAuth2Authentication;
- import com.google.common.collect.ImmutableList;
- import com.omniva.phoenix.model.response.servicepoint.ServicePoint;
- @@ -21,8 +19,6 @@ import com.omniva.phoenix.model.response.servicepoint.ServicePointByUserAdmIdRes
- import com.omniva.phoenix.security.CurrentUser;
- import com.omniva.phoenix.security.auth.model.UserDetails;
- import com.omniva.phoenix.service.servicepoint.ServicePointService;
- -import com.omniva.phoenix.test.BaseOSWWebIntegrationTest;
- -import com.omniva.phoenix.test.annotation.PhoenixInternalServiceWebIntegrationTest;
- @RunWith(MockitoJUnitRunner.class)
- public class ServicePointControllerUnitTest {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement