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/JavaExceptions.java b/src/main/java/com/epam/izh/rd/online/JavaExceptions.java
index 9694d84..02716c7 100644
--- a/src/main/java/com/epam/izh/rd/online/JavaExceptions.java
+++ b/src/main/java/com/epam/izh/rd/online/JavaExceptions.java
@@ -4,7 +4,6 @@
public class JavaExceptions {
public static void main(String[] args) {
-
}
}
diff --git a/src/main/java/com/epam/izh/rd/online/entity/User.java b/src/main/java/com/epam/izh/rd/online/entity/User.java
index 5ba9a7b..5c15bf6 100644
--- a/src/main/java/com/epam/izh/rd/online/entity/User.java
+++ b/src/main/java/com/epam/izh/rd/online/entity/User.java
@@ -8,7 +8,8 @@ public class User {
private String password;
- public User() {}
+ public User() {
+ }
public User(String login, String password) {
this.login = login;
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..b6f4c6d
--- /dev/null
+++ b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java
@@ -0,0 +1,23 @@
+package com.epam.izh.rd.online.exception;
+
+public class NotAccessException extends RuntimeException {
+
+ public NotAccessException(String message) {
+ super(message);
+ }
+
+ public NotAccessException() {
+ }
+
+ public NotAccessException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public NotAccessException(Throwable cause) {
+ super(cause);
+ }
+
+ public NotAccessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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..a3b3b9a
--- /dev/null
+++ b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java
@@ -0,0 +1,22 @@
+package com.epam.izh.rd.online.exception;
+
+public class NotCorrectPasswordException extends RuntimeException {
+ public NotCorrectPasswordException() {
+ }
+
+ public NotCorrectPasswordException(String message) {
+ super(message);
+ }
+
+ public NotCorrectPasswordException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public NotCorrectPasswordException(Throwable cause) {
+ super(cause);
+ }
+
+ public NotCorrectPasswordException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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..a5bacd5
--- /dev/null
+++ b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java
@@ -0,0 +1,22 @@
+package com.epam.izh.rd.online.exception;
+
+public class SimplePasswordException extends RuntimeException {
+ public SimplePasswordException(String message) {
+ super(message);
+ }
+
+ public SimplePasswordException() {
+ }
+
+ public SimplePasswordException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public SimplePasswordException(Throwable cause) {
+ super(cause);
+ }
+
+ public SimplePasswordException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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..885ec50
--- /dev/null
+++ b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java
@@ -0,0 +1,22 @@
+package com.epam.izh.rd.online.exception;
+
+public class UserAlreadyRegisteredException extends Exception {
+ public UserAlreadyRegisteredException(String message) {
+ super(message);
+ }
+
+ public UserAlreadyRegisteredException() {
+ }
+
+ public UserAlreadyRegisteredException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public UserAlreadyRegisteredException(Throwable cause) {
+ super(cause);
+ }
+
+ public UserAlreadyRegisteredException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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..87949b2
--- /dev/null
+++ b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java
@@ -0,0 +1,22 @@
+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);
+ }
+
+ public UserNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
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..2609083 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,6 +1,8 @@
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 {
@@ -25,15 +27,15 @@ public AuthenticationService(IUserRepository userRepository) {
* @param user - пользователь проходящий авторизацию
*/
@Override
- public User login(User user) {
- // Находим пользователя в базе
+ public User login(User user) throws UserNotFoundException {
User foundUser = userRepository.findByLogin(user.getLogin());
+ if (foundUser == null) {
+ throw new UserNotFoundException("Пользователь с таким логином не найден");
+ }
+ if (!foundUser.getPassword().equals(user.getPassword())) {
+ throw new NotCorrectPasswordException("Пароль введен неверно!");
+ }
- //
- // Здесь необходимо реализовать перечисленные выше проверки
- //
-
- // Устанавливаем найденного пользователя, который прошел все проверки, как вошедшего в систему.
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..7acf3c8 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,10 @@
package com.epam.izh.rd.online.service;
import com.epam.izh.rd.online.entity.User;
+import com.epam.izh.rd.online.exception.UserNotFoundException;
public interface IAuthenticationService {
- User login(User user);
+ User login(User user) throws 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..22cafc5 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,11 @@
package com.epam.izh.rd.online.service;
import com.epam.izh.rd.online.entity.User;
+import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException;
public interface IUserService {
- User register(User user);
+ User register(User user) throws UserAlreadyRegisteredException;
void delete(String login);
}
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..ea93d0f 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,9 +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;
import com.epam.izh.rd.online.repository.IUserRepository;
import com.epam.izh.rd.online.repository.UserRepository;
+import java.util.regex.Pattern;
+
public class UserService implements IUserService {
private IUserRepository userRepository;
@@ -30,13 +35,18 @@ public UserService(IUserRepository userRepository) {
* @param user - даныне регистрирующегося пользователя
*/
@Override
- public User register(User user) {
-
- //
- // Здесь необходимо реализовать перечисленные выше проверки
- //
+ public User register(User user) throws UserAlreadyRegisteredException {
+ if (user.getLogin().isEmpty() || user.getPassword().isEmpty()) {
+ throw new IllegalArgumentException("Ошибка в заполнении полей");
+ }
+ if (user.equals(userRepository.findByLogin(user.getLogin()))) {
+ throw new UserAlreadyRegisteredException("Пользователь с логином "
+ + user.getLogin() + " уже зарегистрирован");
+ }
+ if (Pattern.matches("\\d+", user.getPassword())) {
+ throw new SimplePasswordException("Пароль не соответствует требованиям безопасности");
+ }
- // Если все проверки успешно пройдены, сохраняем пользователя в базу
return userRepository.save(user);
}
@@ -59,13 +69,13 @@ public User register(User user) {
* @param login
*/
public void delete(String login) {
-
- // Здесь необходимо сделать доработку метод
-
+ try {
userRepository.deleteByLogin(login);
-
- // Здесь необходимо сделать доработку метода
-
+ } catch (UnsupportedOperationException e) {
+ throw new NotAccessException("Недостаточно прав для выполнения операции");
+ }
}
}
+
+
diff --git a/src/test/java/com/epam/izh/rd/online/Assert.java b/src/test/java/com/epam/izh/rd/online/Assert.java
index 49c60d5..d451f0d 100644
--- a/src/test/java/com/epam/izh/rd/online/Assert.java
+++ b/src/test/java/com/epam/izh/rd/online/Assert.java
@@ -7,12 +7,12 @@
public class Assert {
- public T assertThrowsWithClassName(String className, Executable executable, String message) {
+ public T assertThrowsWithClassName(String className, Executable executable, String message) throws ClassNotFoundException {
return assertThrows(forName(className), executable, message);
}
@SneakyThrows
- private Class forName(String className) {
+ private Class forName(String className) throws ClassNotFoundException {
return (Class) Class.forName("com.epam.izh.rd.online.exception." + className);
}
}
diff --git a/src/test/java/com/epam/izh/rd/online/AuthenticationServiceTest.java b/src/test/java/com/epam/izh/rd/online/AuthenticationServiceTest.java
index d10fce1..7abbae3 100644
--- a/src/test/java/com/epam/izh/rd/online/AuthenticationServiceTest.java
+++ b/src/test/java/com/epam/izh/rd/online/AuthenticationServiceTest.java
@@ -25,14 +25,14 @@ private void setup() {
@Test
@DisplayName("Тест метода IAuthenticationService.login(User user)")
- void testRegisterCase1() {
+ void testRegisterCase1() throws ClassNotFoundException {
assertion.assertThrowsWithClassName("UserNotFoundException", () -> authenticationService.login(getUser()),
"Пользователь с таким логином не найден");
}
@Test
@DisplayName("Тест метода IAuthenticationService.login(User user)")
- void testRegisterCase2() {
+ void testRegisterCase2() throws ClassNotFoundException {
User user = getUser();
userRepository.save(user);
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 8756e39..1c482b5 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,7 @@
package com.epam.izh.rd.online;
import com.epam.izh.rd.online.entity.User;
+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 +40,7 @@ void testRegisterCase1(User user) {
@Test
@DisplayName("Тест метода IUserService.register(User user) кейс 2")
- void testRegisterCase2() throws Exception {
+ void testRegisterCase2() throws Exception{
User user = Providers.getUser();
userService.register(user);
@@ -52,15 +53,19 @@ void testRegisterCase2() throws Exception {
void testRegisterCase3() {
User user = getUserWithNumberPassword();
- assertion.assertThrowsWithClassName("SimplePasswordException", () -> userService.register(user),
- "Пароль не соответствует требованиям безопасности"
- );
+ try {
+ assertion.assertThrowsWithClassName("SimplePasswordException", () -> userService.register(user),
+ "Пароль не соответствует требованиям безопасности"
+ );
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
}
@ParameterizedTest
@MethodSource("com.epam.izh.rd.online.Providers#testDelete")
@DisplayName("Тест метода IUserService.delete(String login)")
- void testDelete(User user) {
+ void testDelete(User user) throws ClassNotFoundException {
CurrentUserManager.setCurrentLoggedInUser(user);
assertion.assertThrowsWithClassName("NotAccessException", () -> userService.delete("123"),
"Недостаточно прав для выполнения операции");