From 851db8d78a1f89867c7581666c04cb033e6493d4 Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 16 Dec 2019 14:16:24 +0400 Subject: [PATCH] Finished work --- java-exceptions-template.iml | 23 +++++++++++++ .../online/exception/NotAccessException.java | 18 ++++++++++ .../NotCorrectPasswordException.java | 18 ++++++++++ .../exception/SimplePasswordException.java | 18 ++++++++++ .../UserAlreadyRegisteredException.java | 18 ++++++++++ .../exception/UserNotFoundException.java | 18 ++++++++++ .../online/service/AuthenticationService.java | 20 ++++++----- .../service/IAuthenticationService.java | 5 ++- .../izh/rd/online/service/IUserService.java | 8 +++-- .../izh/rd/online/service/UserService.java | 33 ++++++++++--------- .../epam/izh/rd/online/UserServiceTest.java | 4 ++- 11 files changed, 155 insertions(+), 28 deletions(-) create mode 100644 java-exceptions-template.iml create mode 100644 src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java diff --git a/java-exceptions-template.iml b/java-exceptions-template.iml new file mode 100644 index 0000000..933182c --- /dev/null +++ b/java-exceptions-template.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java new file mode 100644 index 0000000..4c7d4cd --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java @@ -0,0 +1,18 @@ +package com.epam.izh.rd.online.exception; + +public class NotAccessException extends Exception { + public NotAccessException() { + } + + public NotAccessException(String message) { + super(message); + } + + public NotAccessException(String message, Throwable cause) { + super(message, cause); + } + + public NotAccessException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java new file mode 100644 index 0000000..8608083 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java @@ -0,0 +1,18 @@ +package com.epam.izh.rd.online.exception; + +public class NotCorrectPasswordException extends Exception { + public NotCorrectPasswordException() { + } + + public NotCorrectPasswordException(String message) { + super(message); + } + + public NotCorrectPasswordException(String message, Throwable cause) { + super(message, cause); + } + + public NotCorrectPasswordException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java new file mode 100644 index 0000000..b2a9293 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java @@ -0,0 +1,18 @@ +package com.epam.izh.rd.online.exception; + +public class SimplePasswordException extends Exception { + public SimplePasswordException() { + } + + public SimplePasswordException(String message) { + super(message); + } + + public SimplePasswordException(String message, Throwable cause) { + super(message, cause); + } + + public SimplePasswordException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java new file mode 100644 index 0000000..af0b5cf --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java @@ -0,0 +1,18 @@ +package com.epam.izh.rd.online.exception; + +public class UserAlreadyRegisteredException extends Exception { + public UserAlreadyRegisteredException() { + } + + public UserAlreadyRegisteredException(String message) { + super(message); + } + + public UserAlreadyRegisteredException(String message, Throwable cause) { + super(message, cause); + } + + public UserAlreadyRegisteredException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java new file mode 100644 index 0000000..7ef89df --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java @@ -0,0 +1,18 @@ +package com.epam.izh.rd.online.exception; + +public class UserNotFoundException extends Exception { + public UserNotFoundException() { + } + + public UserNotFoundException(String message) { + super(message); + } + + public UserNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public UserNotFoundException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java b/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java index bcb09a7..ea9d30c 100644 --- a/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java +++ b/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java @@ -1,8 +1,11 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotCorrectPasswordException; +import com.epam.izh.rd.online.exception.UserNotFoundException; import com.epam.izh.rd.online.repository.IUserRepository; + public class AuthenticationService implements IAuthenticationService { private IUserRepository userRepository; @@ -25,17 +28,16 @@ public AuthenticationService(IUserRepository userRepository) { * @param user - пользователь проходящий авторизацию */ @Override - public User login(User user) { - // Находим пользователя в базе + public User login(User user) throws NotCorrectPasswordException, UserNotFoundException { User foundUser = userRepository.findByLogin(user.getLogin()); - - // - // Здесь необходимо реализовать перечисленные выше проверки - // - - // Устанавливаем найденного пользователя, который прошел все проверки, как вошедшего в систему. + try { + if (!foundUser.getPassword().equals(user.getPassword())) { + throw new NotCorrectPasswordException("Пароль введен неверно!"); + } + } catch (NullPointerException e) { + throw new UserNotFoundException("Пользователь с таким логином не найден"); + } CurrentUserManager.setCurrentLoggedInUser(foundUser); - return foundUser; } diff --git a/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java b/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java index 3f296c3..013de56 100644 --- a/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java +++ b/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java @@ -1,9 +1,12 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotCorrectPasswordException; +import com.epam.izh.rd.online.exception.UserNotFoundException; + public interface IAuthenticationService { - User login(User user); + User login(User user) throws NotCorrectPasswordException, UserNotFoundException; void logout(); } diff --git a/src/main/java/com/epam/izh/rd/online/service/IUserService.java b/src/main/java/com/epam/izh/rd/online/service/IUserService.java index de62d43..f7d928b 100644 --- a/src/main/java/com/epam/izh/rd/online/service/IUserService.java +++ b/src/main/java/com/epam/izh/rd/online/service/IUserService.java @@ -1,10 +1,14 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotAccessException; +import com.epam.izh.rd.online.exception.SimplePasswordException; +import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException; + public interface IUserService { - User register(User user); + User register(User user) throws UserAlreadyRegisteredException, UserAlreadyRegisteredException, SimplePasswordException; - void delete(String login); + void delete(String login) throws NotAccessException; } diff --git a/src/main/java/com/epam/izh/rd/online/service/UserService.java b/src/main/java/com/epam/izh/rd/online/service/UserService.java index 78c39ed..9cdb99a 100644 --- a/src/main/java/com/epam/izh/rd/online/service/UserService.java +++ b/src/main/java/com/epam/izh/rd/online/service/UserService.java @@ -1,8 +1,11 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotAccessException; +import com.epam.izh.rd.online.exception.SimplePasswordException; import com.epam.izh.rd.online.repository.IUserRepository; import com.epam.izh.rd.online.repository.UserRepository; +import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException; public class UserService implements IUserService { @@ -30,13 +33,16 @@ public UserService(IUserRepository userRepository) { * @param user - даныне регистрирующегося пользователя */ @Override - public User register(User user) { - - // - // Здесь необходимо реализовать перечисленные выше проверки - // - - // Если все проверки успешно пройдены, сохраняем пользователя в базу + public User register(User user) throws UserAlreadyRegisteredException, SimplePasswordException { + if (user.getPassword().isEmpty() || user.getLogin().isEmpty()) { + throw new IllegalArgumentException("Ошибка в заполнении полей"); + } + if (userRepository.findByLogin(user.getLogin()) != null) { + throw new UserAlreadyRegisteredException("Пользователь с логином '" + user.getLogin() + "' уже зарегистрирован"); + } + if (user.getPassword().matches("\\d+")) { + throw new SimplePasswordException("Пароль не соответствует требованиям безопасности"); + } return userRepository.save(user); } @@ -58,14 +64,11 @@ public User register(User user) { * * @param login */ - public void delete(String login) { - - // Здесь необходимо сделать доработку метод - + public void delete(String login) throws NotAccessException { + try { userRepository.deleteByLogin(login); - - // Здесь необходимо сделать доработку метода - + } catch (UnsupportedOperationException e) { + throw new NotAccessException("Недостаточно прав для выполнения операции"); + } } - } diff --git a/src/test/java/com/epam/izh/rd/online/UserServiceTest.java b/src/test/java/com/epam/izh/rd/online/UserServiceTest.java index e0dba3b..3088fd0 100644 --- a/src/test/java/com/epam/izh/rd/online/UserServiceTest.java +++ b/src/test/java/com/epam/izh/rd/online/UserServiceTest.java @@ -1,6 +1,8 @@ package com.epam.izh.rd.online; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.SimplePasswordException; +import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException; import com.epam.izh.rd.online.repository.IUserRepository; import com.epam.izh.rd.online.repository.UserRepository; import com.epam.izh.rd.online.service.CurrentUserManager; @@ -39,7 +41,7 @@ void testRegisterCase1(User user) { @Test @DisplayName("Тест метода IUserService.register(User user) кейс 2") - void testRegisterCase2() { + void testRegisterCase2() throws UserAlreadyRegisteredException, SimplePasswordException { User user = Providers.getUser(); userService.register(user);