Advertisement
Guest User

Untitled

a guest
Apr 4th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.03 KB | None | 0 0
  1. 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
  2. new file mode 100644
  3. index 0000000..9e29102
  4. --- /dev/null
  5. +++ b/src/main/java/com/omniva/phoenix/model/request/user/PasswordChangeRequest.java
  6. @@ -0,0 +1,27 @@
  7. +package com.omniva.phoenix.model.request.user;
  8. +
  9. +import javax.validation.constraints.NotBlank;
  10. +
  11. +import lombok.AllArgsConstructor;
  12. +import lombok.Builder;
  13. +import lombok.Data;
  14. +import lombok.NoArgsConstructor;
  15. +import org.hibernate.validator.constraints.Length;
  16. +
  17. +@Data
  18. +@Builder
  19. +@NoArgsConstructor
  20. +@AllArgsConstructor
  21. +public class PasswordChangeRequest {
  22. +
  23. + @NotBlank
  24. + private String username;
  25. +
  26. + @NotBlank
  27. + private String oldPassword;
  28. +
  29. + @NotBlank
  30. + @Length(min = 8, max = 50)
  31. + private String newPassword;
  32. +
  33. +}
  34. 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
  35. new file mode 100644
  36. index 0000000..bb8f27f
  37. --- /dev/null
  38. +++ b/src/main/java/com/omniva/phoenix/model/response/user/PasswordChangeResponse.java
  39. @@ -0,0 +1,16 @@
  40. +package com.omniva.phoenix.model.response.user;
  41. +
  42. +import lombok.AllArgsConstructor;
  43. +import lombok.Builder;
  44. +import lombok.Data;
  45. +import lombok.NoArgsConstructor;
  46. +
  47. +@Data
  48. +@Builder
  49. +@NoArgsConstructor
  50. +@AllArgsConstructor
  51. +public class PasswordChangeResponse {
  52. +
  53. + private boolean success;
  54. +
  55. +}
  56. diff --git a/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java b/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java
  57. new file mode 100644
  58. index 0000000..0796ddf
  59. --- /dev/null
  60. +++ b/src/main/java/com/omniva/phoenix/service/user/PasswordChangeService.java
  61. @@ -0,0 +1,24 @@
  62. +package com.omniva.phoenix.service.user;
  63. +
  64. +import org.springframework.beans.factory.annotation.Autowired;
  65. +import org.springframework.stereotype.Service;
  66. +
  67. +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
  68. +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
  69. +import com.omniva.phoenix.security.auth.cas.CasAuthService;
  70. +
  71. +@Service
  72. +public class PasswordChangeService {
  73. +
  74. + @Autowired
  75. + private CasAuthService casAuthService;
  76. +
  77. + public PasswordChangeResponse updateCredentials(PasswordChangeRequest request) {
  78. +
  79. + // check old password
  80. + casAuthService.authenticate(request.getUsername(), request.getOldPassword(), null);
  81. +
  82. + return PasswordChangeResponse.builder().build();
  83. + }
  84. +
  85. +}
  86. diff --git a/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java b/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java
  87. new file mode 100644
  88. index 0000000..b8157d1
  89. --- /dev/null
  90. +++ b/src/main/java/com/omniva/phoenix/web/v1/PasswordChangeController.java
  91. @@ -0,0 +1,37 @@
  92. +package com.omniva.phoenix.web.v1;
  93. +
  94. +import static com.omniva.phoenix.PhoenixConstants.PHOENIX_API_URI;
  95. +import static com.omniva.phoenix.web.ApiVersions.VERSION_1;
  96. +import static com.omniva.phoenix.web.v1.PasswordChangeController.PASSWORD_URI;
  97. +
  98. +import javax.validation.Valid;
  99. +
  100. +import org.springframework.beans.factory.annotation.Autowired;
  101. +import org.springframework.http.ResponseEntity;
  102. +import org.springframework.web.bind.annotation.PostMapping;
  103. +import org.springframework.web.bind.annotation.RequestBody;
  104. +import org.springframework.web.bind.annotation.RequestMapping;
  105. +import org.springframework.web.bind.annotation.RestController;
  106. +import io.swagger.annotations.Api;
  107. +import io.swagger.annotations.ApiOperation;
  108. +
  109. +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
  110. +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
  111. +import com.omniva.phoenix.service.user.PasswordChangeService;
  112. +
  113. +@RestController
  114. +@RequestMapping(PASSWORD_URI)
  115. +@Api(tags = "Password", description = "Operations with user's password")
  116. +class PasswordChangeController {
  117. +
  118. + static final String PASSWORD_URI = PHOENIX_API_URI + "/" + VERSION_1 + "/password/";
  119. +
  120. + @Autowired
  121. + private PasswordChangeService passwordChangeService;
  122. +
  123. + @ApiOperation("Change password")
  124. + @PostMapping("change")
  125. + public ResponseEntity<PasswordChangeResponse> changePassword(@RequestBody @Valid PasswordChangeRequest input) {
  126. + return ResponseEntity.ok(passwordChangeService.updateCredentials(input));
  127. + }
  128. +}
  129. diff --git a/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java b/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java
  130. new file mode 100644
  131. index 0000000..d911a07
  132. --- /dev/null
  133. +++ b/src/test/java/com/omniva/phoenix/service/user/PasswordChangeServiceUnitTest.java
  134. @@ -0,0 +1,78 @@
  135. +package com.omniva.phoenix.service.user;
  136. +
  137. +import static org.hamcrest.CoreMatchers.notNullValue;
  138. +import static org.hamcrest.MatcherAssert.assertThat;
  139. +import static org.hamcrest.Matchers.is;
  140. +import static org.mockito.Mockito.when;
  141. +
  142. +import org.junit.Test;
  143. +import org.junit.runner.RunWith;
  144. +import org.mockito.InjectMocks;
  145. +import org.mockito.Mock;
  146. +import org.mockito.runners.MockitoJUnitRunner;
  147. +import org.springframework.security.authentication.BadCredentialsException;
  148. +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  149. +import org.springframework.security.core.AuthenticationException;
  150. +
  151. +import com.omniva.phoenix.model.request.user.PasswordChangeRequest;
  152. +import com.omniva.phoenix.model.response.user.PasswordChangeResponse;
  153. +import com.omniva.phoenix.security.auth.cas.CasAuthService;
  154. +
  155. +
  156. +@RunWith(MockitoJUnitRunner.class)
  157. +public class PasswordChangeServiceUnitTest {
  158. +
  159. + private static final String BAD_USERNAME = "bad.username";
  160. + private static final String BAD_OLD_PASSWORD = "bad.password";
  161. + private static final String OLD_PASSWORD = "old.password";
  162. + private static final String USERNAME = "user.name";
  163. + private static final String PASSWORD = "password";
  164. +
  165. + @InjectMocks
  166. + private PasswordChangeService passwordChangeService;
  167. +
  168. + @Mock
  169. + private CasAuthService casAuthService;
  170. +
  171. +
  172. + @Test(expected = AuthenticationException.class)
  173. + public void shouldFailOnBadOldPassword() {
  174. + when(casAuthService.authenticate(USERNAME, BAD_OLD_PASSWORD, null))
  175. + .thenThrow(BadCredentialsException.class);
  176. +
  177. + passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
  178. + .username(USERNAME)
  179. + .oldPassword(BAD_OLD_PASSWORD)
  180. + .newPassword(PASSWORD)
  181. + .build());
  182. + }
  183. +
  184. + @Test(expected = AuthenticationException.class)
  185. + public void shouldFailOnBadUsername() {
  186. + when(casAuthService.authenticate(BAD_USERNAME, OLD_PASSWORD, null))
  187. + .thenThrow(BadCredentialsException.class);
  188. +
  189. + passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
  190. + .username(BAD_USERNAME)
  191. + .oldPassword(OLD_PASSWORD)
  192. + .newPassword(PASSWORD)
  193. + .build());
  194. + }
  195. +
  196. + @Test
  197. + public void shouldReturnOk() {
  198. + when(casAuthService.authenticate(USERNAME, OLD_PASSWORD, null))
  199. + .thenReturn(new UsernamePasswordAuthenticationToken(
  200. + USERNAME, PASSWORD));
  201. +
  202. + PasswordChangeResponse passwordChangeResponse = passwordChangeService.updateCredentials(PasswordChangeRequest.builder()
  203. + .username(USERNAME)
  204. + .oldPassword(OLD_PASSWORD)
  205. + .newPassword(PASSWORD)
  206. + .build());
  207. +
  208. + assertThat(passwordChangeResponse, is(notNullValue()));
  209. +
  210. + }
  211. +
  212. +}
  213. \ No newline at end of file
  214. diff --git a/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java b/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java
  215. new file mode 100644
  216. index 0000000..e182e4b
  217. --- /dev/null
  218. +++ b/src/test/java/com/omniva/phoenix/web/v1/PasswordChangeControllerIntegrationTest.java
  219. @@ -0,0 +1,30 @@
  220. +package com.omniva.phoenix.web.v1;
  221. +
  222. +import org.junit.Test;
  223. +import org.springframework.beans.factory.annotation.Autowired;
  224. +
  225. +import com.omniva.phoenix.security.auth.cas.CasAuthService;
  226. +import com.omniva.phoenix.test.BaseOSWWebIntegrationTest;
  227. +import com.omniva.phoenix.test.annotation.PhoenixInternalServiceWebIntegrationTest;
  228. +
  229. +@PhoenixInternalServiceWebIntegrationTest
  230. +public class PasswordChangeControllerIntegrationTest extends BaseOSWWebIntegrationTest {
  231. +
  232. + private static final String BAD_USERNAME = "bad.username";
  233. + private static final String BAD_OLD_PASSWORD = "bad.password";
  234. + private static final String OLD_PASSWORD = "old.password";
  235. + private static final String USERNAME = "user.name";
  236. + private static final String PASSWORD = "password";
  237. +
  238. + @Autowired
  239. + private CasAuthService casAuthService;
  240. +
  241. + @Test
  242. + public void shouldRejectBadCredentials() {
  243. + }
  244. +
  245. + @Override
  246. + protected String getBaseUri() {
  247. + return PasswordChangeController.PASSWORD_URI;
  248. + }
  249. +}
  250. diff --git a/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java b/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
  251. index 66512b9..fd7ab60 100644
  252. --- a/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
  253. +++ b/src/test/java/com/omniva/phoenix/web/v1/ServicePointControllerUnitTest.java
  254. @@ -12,8 +12,6 @@ import org.junit.runner.RunWith;
  255. import org.mockito.InjectMocks;
  256. import org.mockito.Mock;
  257. import org.mockito.runners.MockitoJUnitRunner;
  258. -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  259. -import org.springframework.security.oauth2.provider.OAuth2Authentication;
  260. import com.google.common.collect.ImmutableList;
  261.  
  262. import com.omniva.phoenix.model.response.servicepoint.ServicePoint;
  263. @@ -21,8 +19,6 @@ import com.omniva.phoenix.model.response.servicepoint.ServicePointByUserAdmIdRes
  264. import com.omniva.phoenix.security.CurrentUser;
  265. import com.omniva.phoenix.security.auth.model.UserDetails;
  266. import com.omniva.phoenix.service.servicepoint.ServicePointService;
  267. -import com.omniva.phoenix.test.BaseOSWWebIntegrationTest;
  268. -import com.omniva.phoenix.test.annotation.PhoenixInternalServiceWebIntegrationTest;
  269.  
  270. @RunWith(MockitoJUnitRunner.class)
  271. public class ServicePointControllerUnitTest {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement