diff --git a/.vscode/inote-rest-api.code-workspace b/.vscode/inote-rest-api.code-workspace index ffcc772..303d5aa 100755 --- a/.vscode/inote-rest-api.code-workspace +++ b/.vscode/inote-rest-api.code-workspace @@ -34,7 +34,7 @@ "type": "java", "name": "Inote API application", "request": "launch", - "mainClass": "fr.inote.inoteApi.InoteApiApplication", + "mainClass": "fr.inote.inote_api.InoteApiApplication", "projectName": "InoteApi" /* Ceci n'est plus utile, tout la configuration pour le runner des test diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100755 index 8f2b711..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.compile.nullAnalysis.mode": "disabled" -} \ No newline at end of file diff --git a/requests.http b/requests.http index 3fa3ab6..9e1a854 100755 --- a/requests.http +++ b/requests.http @@ -5,6 +5,11 @@ @passwordBis = chichi@@YYY14646_ @email = sangoku@kame-house.com +# HELLO ! + +GET http://localhost:8080/api/hello?user=Truc HTTP/1.1 +Accept-Language: en + # USER ACCOUNT #================================================================= @@ -16,6 +21,7 @@ # http://localhost:5000 POST http://localhost:8080/api/auth/register HTTP/1.1 Content-Type: {{contentType}} +Accept-Language: fr { "pseudo":"{{pseudo}}", @@ -28,6 +34,7 @@ Content-Type: {{contentType}} # or open fictionous mail box http://localhost:5000 (smtp-dev must be running) POST http://localhost:8080/api/auth/activation HTTP/1.1 Content-Type: {{contentType}} +Accept-Language: fr { "code":"231978" diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExistingEmailException.java b/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExistingEmailException.java deleted file mode 100755 index 3278b5c..0000000 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExistingEmailException.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.inote.inoteApi.crossCutting.exceptions; - -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.REGISTER_ERROR_USER_ALREADY_EXISTS; - -public class InoteExistingEmailException extends Exception{ - public InoteExistingEmailException() { - super(REGISTER_ERROR_USER_ALREADY_EXISTS); - } - -} diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailFormat.java b/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailFormat.java deleted file mode 100755 index 1ca4623..0000000 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailFormat.java +++ /dev/null @@ -1,9 +0,0 @@ -package fr.inote.inoteApi.crossCutting.exceptions; - -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_ERROR_INVALID_EMAIL_FORMAT; - -public class InoteInvalidEmailFormat extends Exception{ - public InoteInvalidEmailFormat(){ - super(EMAIL_ERROR_INVALID_EMAIL_FORMAT); - } -} diff --git a/src/main/java/fr/inote/inoteApi/service/CommentService.java b/src/main/java/fr/inote/inoteApi/service/CommentService.java deleted file mode 100755 index 560dfe5..0000000 --- a/src/main/java/fr/inote/inoteApi/service/CommentService.java +++ /dev/null @@ -1,15 +0,0 @@ -package fr.inote.inoteApi.service; - -import java.util.List; - -import fr.inote.inoteApi.crossCutting.exceptions.InoteEmptyMessageCommentException; -import fr.inote.inoteApi.dto.CommentResponseDto; -import fr.inote.inoteApi.entity.Comment; - -public interface CommentService { - - Comment createComment(String message) throws InoteEmptyMessageCommentException; - - public List getAll(); - -} diff --git a/src/main/java/fr/inote/inoteApi/InoteApiApplication.java b/src/main/java/fr/inote/inote_api/InoteApiApplication.java similarity index 94% rename from src/main/java/fr/inote/inoteApi/InoteApiApplication.java rename to src/main/java/fr/inote/inote_api/InoteApiApplication.java index d0dc434..f8fb1e4 100755 --- a/src/main/java/fr/inote/inoteApi/InoteApiApplication.java +++ b/src/main/java/fr/inote/inote_api/InoteApiApplication.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi; +package fr.inote.inote_api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/fr/inote/inoteApi/controller/AuthController.java b/src/main/java/fr/inote/inote_api/controller/AuthController.java similarity index 83% rename from src/main/java/fr/inote/inoteApi/controller/AuthController.java rename to src/main/java/fr/inote/inote_api/controller/AuthController.java index 14d6128..81e1550 100755 --- a/src/main/java/fr/inote/inoteApi/controller/AuthController.java +++ b/src/main/java/fr/inote/inote_api/controller/AuthController.java @@ -1,12 +1,6 @@ -package fr.inote.inoteApi.controller; - -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.exceptions.*; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; -import fr.inote.inoteApi.dto.*; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.service.impl.UserServiceImpl; +package fr.inote.inote_api.controller; + +import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; @@ -21,12 +15,22 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RestController; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.exceptions.*; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.dto.*; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.service.impl.UserServiceImpl; + +import java.util.Locale; import java.util.Map; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.REFRESH; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.REFRESH; import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.OK; @@ -80,14 +84,17 @@ public class AuthController { private final AuthenticationManager authenticationManager; private final UserServiceImpl userService; private final JwtServiceImpl jwtService; + private final ResourceBundleMessageSource source; public AuthController( AuthenticationManager authenticationManager, UserServiceImpl userService, - JwtServiceImpl jwtService) { + JwtServiceImpl jwtService, + ResourceBundleMessageSource source) { this.authenticationManager = authenticationManager; this.userService = userService; this.jwtService = jwtService; + this.source = source; } /* PUBLIC METHODS */ @@ -111,9 +118,17 @@ public AuthController( */ @PostMapping(path = Endpoint.REGISTER) - public ResponseEntity register(@RequestBody RegisterRequestDto registerRequestDto) - throws MailException, InoteExistingEmailException, InoteInvalidEmailException, InoteRoleNotFoundException, - InoteInvalidPasswordFormatException, InoteMailException { + public ResponseEntity register( + @RequestHeader(name = "Accept-Language", required = false) + final Locale locale, + @RequestBody + final RegisterRequestDto registerRequestDto) + throws MailException, + InoteExistingEmailException, + InoteInvalidEmailException, + InoteRoleNotFoundException, + InoteInvalidPasswordFormatException, + InoteMailException { User userToRegister = User.builder() .email(registerRequestDto.username()) @@ -125,7 +140,10 @@ public ResponseEntity register(@RequestBody RegisterRequestDto registerR return ResponseEntity .status(HttpStatusCode.valueOf(201)) - .body(MessagesEn.ACTIVATION_NEED_ACTIVATION); + .body(source.getMessage( + "activation.ACTIVATION_NEED_ACTIVATION", + null, + locale)); } /** @@ -144,14 +162,23 @@ public ResponseEntity register(@RequestBody RegisterRequestDto registerR * @date 19-05-2024 */ @PostMapping(path = Endpoint.ACTIVATION) - public ResponseEntity activation(@RequestBody ActivationRequestDto activationRequestDto) - throws InoteValidationNotFoundException, InoteValidationExpiredException, InoteUserNotFoundException { + public ResponseEntity activation( + @RequestHeader(name = "Accept-Language", required = false) + final Locale locale, + @RequestBody + ActivationRequestDto activationRequestDto) + throws InoteValidationNotFoundException, + InoteValidationExpiredException, + InoteUserNotFoundException { this.userService.activation(activationRequestDto.code()); return ResponseEntity .status(OK) - .body(MessagesEn.ACTIVATION_OF_USER_OK); + .body(source.getMessage( + "user.ACTIVATION_OF_USER_OK", + null, + locale)); } diff --git a/src/main/java/fr/inote/inoteApi/controller/CommentController.java b/src/main/java/fr/inote/inote_api/controller/CommentController.java similarity index 85% rename from src/main/java/fr/inote/inoteApi/controller/CommentController.java rename to src/main/java/fr/inote/inote_api/controller/CommentController.java index 08ecad7..b822af6 100755 --- a/src/main/java/fr/inote/inoteApi/controller/CommentController.java +++ b/src/main/java/fr/inote/inote_api/controller/CommentController.java @@ -1,13 +1,4 @@ -package fr.inote.inoteApi.controller; - -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.exceptions.InoteEmptyMessageCommentException; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; -import fr.inote.inoteApi.dto.CommentRequestDto; -import fr.inote.inoteApi.dto.CommentResponseDto; -import fr.inote.inoteApi.entity.Comment; -import fr.inote.inoteApi.service.CommentService; -import fr.inote.inoteApi.service.impl.UserServiceImpl; +package fr.inote.inote_api.controller; import java.util.List; @@ -21,6 +12,15 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.exceptions.InoteEmptyMessageCommentException; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.dto.CommentRequestDto; +import fr.inote.inote_api.dto.CommentResponseDto; +import fr.inote.inote_api.entity.Comment; +import fr.inote.inote_api.service.CommentService; +import fr.inote.inote_api.service.impl.UserServiceImpl; + /** * Controller for account user routes * diff --git a/src/main/java/fr/inote/inote_api/controller/HelloController.java b/src/main/java/fr/inote/inote_api/controller/HelloController.java new file mode 100644 index 0000000..bb3eaa6 --- /dev/null +++ b/src/main/java/fr/inote/inote_api/controller/HelloController.java @@ -0,0 +1,33 @@ +package fr.inote.inote_api.controller; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + private final MessageSource source; + + public HelloController(MessageSource source){ + this.source = source; + } + + @GetMapping(path = "/api/hello") + public ResponseEntity hello( + @RequestHeader(name = "Accept-Language", required = false) + final Locale locale, + @RequestParam(name = "user", required = false, defaultValue = "") + final String USER){ + return ResponseEntity + .status(HttpStatus.OK) + .header("Content-Type", "text/plain") + .body(source.getMessage("hello", new Object[]{USER}, locale)); + } +} diff --git a/src/main/java/fr/inote/inoteApi/controller/advice/ApplicationControllerAdvice.java b/src/main/java/fr/inote/inote_api/controller/advice/ApplicationControllerAdvice.java similarity index 80% rename from src/main/java/fr/inote/inoteApi/controller/advice/ApplicationControllerAdvice.java rename to src/main/java/fr/inote/inote_api/controller/advice/ApplicationControllerAdvice.java index 7382f52..505ace7 100755 --- a/src/main/java/fr/inote/inoteApi/controller/advice/ApplicationControllerAdvice.java +++ b/src/main/java/fr/inote/inote_api/controller/advice/ApplicationControllerAdvice.java @@ -1,19 +1,32 @@ -package fr.inote.inoteApi.controller.advice; - -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; -import fr.inote.inoteApi.crossCutting.exceptions.*; +package fr.inote.inote_api.controller.advice; +import org.springframework.context.MessageSource; import org.springframework.http.ProblemDetail; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import fr.inote.inote_api.cross_cutting.exceptions.InoteEmptyMessageCommentException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteExistingEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidPasswordFormatException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteJwtNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteNotAuthenticatedUserException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteRoleNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationExpiredException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationNotFoundException; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.security.SignatureException; import lombok.extern.slf4j.Slf4j; -import static org.springframework.http.HttpStatus.*; +import static org.springframework.http.HttpStatus.BAD_REQUEST; +import static org.springframework.http.HttpStatus.NOT_ACCEPTABLE; +import static org.springframework.http.HttpStatus.NOT_FOUND; +import static org.springframework.http.HttpStatus.UNAUTHORIZED; + +import java.util.Locale; import org.apache.tomcat.websocket.AuthenticationException; @@ -28,6 +41,12 @@ @RestControllerAdvice // Exception Centralized manager public class ApplicationControllerAdvice { + private final MessageSource messageSource; + + public ApplicationControllerAdvice(MessageSource messageSource){ + this.messageSource = messageSource; + } + /** * Handle exception when jwt is malformed * @@ -40,7 +59,7 @@ public class ApplicationControllerAdvice { private ProblemDetail MalformedJwtExceptionHandler(MalformedJwtException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getLocalizedMessage()); } /** @@ -55,7 +74,7 @@ private ProblemDetail MalformedJwtExceptionHandler(MalformedJwtException ex) { private ProblemDetail SignatureExceptionHandler(SignatureException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getLocalizedMessage()); } /** @@ -70,7 +89,7 @@ private ProblemDetail SignatureExceptionHandler(SignatureException ex) { private ProblemDetail BadCredentialsExceptionHandler(BadCredentialsException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getLocalizedMessage()); } /** @@ -85,7 +104,7 @@ private ProblemDetail BadCredentialsExceptionHandler(BadCredentialsException ex) private ProblemDetail AuthenticationExceptionHandler(AuthenticationException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getLocalizedMessage()); } @@ -99,10 +118,10 @@ private ProblemDetail AuthenticationExceptionHandler(AuthenticationException ex) * @date 19-05-2024 */ @ExceptionHandler(value = InoteExistingEmailException.class) - private ProblemDetail InoteExistingEmailExceptionHandler(Exception ex) { + private ProblemDetail InoteExistingEmailExceptionHandler(Exception ex, Locale locale) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(NOT_ACCEPTABLE, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(NOT_ACCEPTABLE, ex.getLocalizedMessage()); } /** @@ -117,7 +136,7 @@ private ProblemDetail InoteExistingEmailExceptionHandler(Exception ex) { private ProblemDetail InoteValidationNotFoundExceptionHandler(Exception ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getLocalizedMessage()); } /** @@ -132,7 +151,7 @@ private ProblemDetail InoteValidationNotFoundExceptionHandler(Exception ex) { private ProblemDetail InoteValidationExpiredExceptionHandler(Exception ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getLocalizedMessage()); } /** @@ -147,7 +166,7 @@ private ProblemDetail InoteValidationExpiredExceptionHandler(Exception ex) { private ProblemDetail InoteUserNotFoundExceptionHandler(Exception ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(NOT_FOUND, ex.getLocalizedMessage()); } /** @@ -162,7 +181,7 @@ private ProblemDetail InoteUserNotFoundExceptionHandler(Exception ex) { private ProblemDetail InoteInvalidEmailExceptiondeHandler(InoteInvalidEmailException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getLocalizedMessage()); } /** @@ -177,7 +196,7 @@ private ProblemDetail InoteInvalidEmailExceptiondeHandler(InoteInvalidEmailExcep private ProblemDetail InoteInvalidPasswordFormatExceptionHandler(InoteInvalidPasswordFormatException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getLocalizedMessage()); } /** @@ -192,7 +211,7 @@ private ProblemDetail InoteInvalidPasswordFormatExceptionHandler(InoteInvalidPas private ProblemDetail InoteRoleNotFoundExceptionHandler(InoteRoleNotFoundException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getLocalizedMessage()); } /** @@ -207,7 +226,7 @@ private ProblemDetail InoteRoleNotFoundExceptionHandler(InoteRoleNotFoundExcepti private ProblemDetail InoteJwtNotFoundException(InoteJwtNotFoundException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(BAD_REQUEST, ex.getLocalizedMessage()); } /** @@ -222,7 +241,7 @@ private ProblemDetail InoteJwtNotFoundException(InoteJwtNotFoundException ex) { private ProblemDetail InoteEmptyMessageCommentExceptionHandler(InoteEmptyMessageCommentException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(NOT_ACCEPTABLE, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(NOT_ACCEPTABLE, ex.getLocalizedMessage()); } /** @@ -237,7 +256,7 @@ private ProblemDetail InoteEmptyMessageCommentExceptionHandler(InoteEmptyMessage @ExceptionHandler(value = InoteNotAuthenticatedUserException.class) private ProblemDetail InoteNotAuthenticatedUserExceptionHandler(InoteNotAuthenticatedUserException ex) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getMessage()); + return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, ex.getLocalizedMessage()); } /** @@ -249,9 +268,14 @@ private ProblemDetail InoteNotAuthenticatedUserExceptionHandler(InoteNotAuthenti * @since 2024-05-30 */ @ExceptionHandler(value = ExpiredJwtException.class) - private ProblemDetail InoteExpiredJwtExceptionHandler(ExpiredJwtException ex) { + private ProblemDetail InoteExpiredJwtExceptionHandler(ExpiredJwtException ex, Locale locale) { log.error(ex.getMessage(), ex); - return ProblemDetail.forStatusAndDetail(UNAUTHORIZED, MessagesEn.EXPIRED_TOKEN); + return ProblemDetail.forStatusAndDetail( + UNAUTHORIZED, + messageSource.getMessage( + "miscelleanous.EXPIRED_TOKEN", + null, + locale)); } /** @@ -273,6 +297,6 @@ public ProblemDetail inoteDefaultExceptionHandler(Exception ex) { // return status code BAD_REQUEST, // return reason - ex.getMessage()); + ex.getLocalizedMessage()); } } diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/constants/Endpoint.java b/src/main/java/fr/inote/inote_api/cross_cutting/constants/Endpoint.java similarity index 93% rename from src/main/java/fr/inote/inoteApi/crossCutting/constants/Endpoint.java rename to src/main/java/fr/inote/inote_api/cross_cutting/constants/Endpoint.java index 258734f..46eece5 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/constants/Endpoint.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/constants/Endpoint.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.constants; +package fr.inote.inote_api.cross_cutting.constants; public class Endpoint { public static final String REGISTER = "/api/auth/register"; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/constants/HttpRequestBody.java b/src/main/java/fr/inote/inote_api/cross_cutting/constants/HttpRequestBody.java similarity index 79% rename from src/main/java/fr/inote/inoteApi/crossCutting/constants/HttpRequestBody.java rename to src/main/java/fr/inote/inote_api/cross_cutting/constants/HttpRequestBody.java index 14ad4da..7a19da7 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/constants/HttpRequestBody.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/constants/HttpRequestBody.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.constants; +package fr.inote.inote_api.cross_cutting.constants; public class HttpRequestBody { public static final String REFRESH = "refresh"; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/constants/MessagesEn.java b/src/main/java/fr/inote/inote_api/cross_cutting/constants/MessagesEn.java similarity index 98% rename from src/main/java/fr/inote/inoteApi/crossCutting/constants/MessagesEn.java rename to src/main/java/fr/inote/inote_api/cross_cutting/constants/MessagesEn.java index ad8ef46..a404736 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/constants/MessagesEn.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/constants/MessagesEn.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.constants; +package fr.inote.inote_api.cross_cutting.constants; public class MessagesEn { // Auth diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/constants/RegexPatterns.java b/src/main/java/fr/inote/inote_api/cross_cutting/constants/RegexPatterns.java similarity index 88% rename from src/main/java/fr/inote/inoteApi/crossCutting/constants/RegexPatterns.java rename to src/main/java/fr/inote/inote_api/cross_cutting/constants/RegexPatterns.java index 950cf00..891605b 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/constants/RegexPatterns.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/constants/RegexPatterns.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.constants; +package fr.inote.inote_api.cross_cutting.constants; public class RegexPatterns { public static final String REGEX_EMAIL_PATTERN = "[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$"; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/enums/PermissionEnum.java b/src/main/java/fr/inote/inote_api/cross_cutting/enums/PermissionEnum.java similarity index 91% rename from src/main/java/fr/inote/inoteApi/crossCutting/enums/PermissionEnum.java rename to src/main/java/fr/inote/inote_api/cross_cutting/enums/PermissionEnum.java index 5ceed08..53de98f 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/enums/PermissionEnum.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/enums/PermissionEnum.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.enums; +package fr.inote.inote_api.cross_cutting.enums; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/enums/RoleEnum.java b/src/main/java/fr/inote/inote_api/cross_cutting/enums/RoleEnum.java similarity index 98% rename from src/main/java/fr/inote/inoteApi/crossCutting/enums/RoleEnum.java rename to src/main/java/fr/inote/inote_api/cross_cutting/enums/RoleEnum.java index c9c9d76..37fde33 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/enums/RoleEnum.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/enums/RoleEnum.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.enums; +package fr.inote.inote_api.cross_cutting.enums; import java.util.Collection; import java.util.List; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/enums/ValidationTypeEnum.java b/src/main/java/fr/inote/inote_api/cross_cutting/enums/ValidationTypeEnum.java similarity index 60% rename from src/main/java/fr/inote/inoteApi/crossCutting/enums/ValidationTypeEnum.java rename to src/main/java/fr/inote/inote_api/cross_cutting/enums/ValidationTypeEnum.java index 1a54473..2f9fa4c 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/enums/ValidationTypeEnum.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/enums/ValidationTypeEnum.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.enums; +package fr.inote.inote_api.cross_cutting.enums; public enum ValidationTypeEnum { REGISTRATION, diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteEmptyMessageCommentException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteEmptyMessageCommentException.java similarity index 61% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteEmptyMessageCommentException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteEmptyMessageCommentException.java index a530c43..732f320 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteEmptyMessageCommentException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteEmptyMessageCommentException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteEmptyMessageCommentException extends Exception { public InoteEmptyMessageCommentException() { diff --git a/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExistingEmailException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExistingEmailException.java new file mode 100755 index 0000000..86e7b1d --- /dev/null +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExistingEmailException.java @@ -0,0 +1,9 @@ +package fr.inote.inote_api.cross_cutting.exceptions; + +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.REGISTER_ERROR_USER_ALREADY_EXISTS; + +public class InoteExistingEmailException extends Exception{ + public InoteExistingEmailException(){ + super(REGISTER_ERROR_USER_ALREADY_EXISTS); + } +} diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExpiredRefreshTokenException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExpiredRefreshTokenException.java similarity index 61% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExpiredRefreshTokenException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExpiredRefreshTokenException.java index ac93cf9..c5c6c70 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteExpiredRefreshTokenException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteExpiredRefreshTokenException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteExpiredRefreshTokenException extends Exception { public InoteExpiredRefreshTokenException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailException.java similarity index 50% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailException.java index 5db0b42..cc3d5ca 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidEmailException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_ERROR_INVALID_EMAIL_FORMAT; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_ERROR_INVALID_EMAIL_FORMAT; public class InoteInvalidEmailException extends Exception { public InoteInvalidEmailException(){ diff --git a/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailFormat.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailFormat.java new file mode 100755 index 0000000..abaf176 --- /dev/null +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidEmailFormat.java @@ -0,0 +1,9 @@ +package fr.inote.inote_api.cross_cutting.exceptions; + +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_ERROR_INVALID_EMAIL_FORMAT; + +public class InoteInvalidEmailFormat extends Exception{ + public InoteInvalidEmailFormat(){ + super(EMAIL_ERROR_INVALID_EMAIL_FORMAT); + } +} diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidPasswordFormatException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidPasswordFormatException.java similarity index 53% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidPasswordFormatException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidPasswordFormatException.java index d49e50b..68cee78 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteInvalidPasswordFormatException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteInvalidPasswordFormatException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_ERROR_INVALID_PASSWORD_FORMAT; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_ERROR_INVALID_PASSWORD_FORMAT; public class InoteInvalidPasswordFormatException extends Exception { public InoteInvalidPasswordFormatException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteJwtNotFoundException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteJwtNotFoundException.java similarity index 58% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteJwtNotFoundException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteJwtNotFoundException.java index 47a1c83..cfcad16 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteJwtNotFoundException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteJwtNotFoundException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteJwtNotFoundException extends Exception { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteMailException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteMailException.java similarity index 59% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteMailException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteMailException.java index 71cfed6..967bae0 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteMailException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteMailException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteMailException extends Exception{ public InoteMailException(){ diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteNotAuthenticatedUserException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteNotAuthenticatedUserException.java similarity index 60% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteNotAuthenticatedUserException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteNotAuthenticatedUserException.java index b2fabe3..a6db19d 100644 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteNotAuthenticatedUserException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteNotAuthenticatedUserException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteNotAuthenticatedUserException extends Exception { public InoteNotAuthenticatedUserException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteRoleNotFoundException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteRoleNotFoundException.java similarity index 51% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteRoleNotFoundException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteRoleNotFoundException.java index c6fe272..e483cac 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteRoleNotFoundException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteRoleNotFoundException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.ROLE_ERROR_NOT_FOUND; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.ROLE_ERROR_NOT_FOUND; public class InoteRoleNotFoundException extends Exception { public InoteRoleNotFoundException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserException.java similarity index 56% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserException.java index 604053d..e51b7a3 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserException.java @@ -1,5 +1,5 @@ -package fr.inote.inoteApi.crossCutting.exceptions; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; +package fr.inote.inote_api.cross_cutting.exceptions; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; public class InoteUserException extends Exception { public InoteUserException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserNotFoundException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserNotFoundException.java similarity index 50% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserNotFoundException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserNotFoundException.java index cef54d0..249ec24 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteUserNotFoundException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteUserNotFoundException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.USER_ERROR_USER_NOT_FOUND; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.USER_ERROR_USER_NOT_FOUND; public class InoteUserNotFoundException extends Exception { public InoteUserNotFoundException() { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationExpiredException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationExpiredException.java similarity index 53% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationExpiredException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationExpiredException.java index 31e8a2b..149bf4b 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationExpiredException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationExpiredException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.VALIDATION_ERROR_VALIDATION_IS_EXPIRED; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.VALIDATION_ERROR_VALIDATION_IS_EXPIRED; public class InoteValidationExpiredException extends Exception { diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationNotFoundException.java b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationNotFoundException.java similarity index 53% rename from src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationNotFoundException.java rename to src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationNotFoundException.java index 53d9ce3..35fc720 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/exceptions/InoteValidationNotFoundException.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/exceptions/InoteValidationNotFoundException.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.crossCutting.exceptions; +package fr.inote.inote_api.cross_cutting.exceptions; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.VALIDATION_ERROR_NOT_FOUND; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.VALIDATION_ERROR_NOT_FOUND; public class InoteValidationNotFoundException extends Exception{ diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/EncryptionPasswordConfiguration.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/EncryptionPasswordConfiguration.java similarity index 95% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/EncryptionPasswordConfiguration.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/EncryptionPasswordConfiguration.java index 26cc7fa..ad0edda 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/EncryptionPasswordConfiguration.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/EncryptionPasswordConfiguration.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/Jwt.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/Jwt.java similarity index 93% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/Jwt.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/Jwt.java index a2f531f..48b5c70 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/Jwt.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/Jwt.java @@ -1,6 +1,5 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; -import fr.inote.inoteApi.entity.User; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; @@ -9,6 +8,8 @@ import java.util.Date; +import fr.inote.inote_api.entity.User; + @Builder @Data @NoArgsConstructor diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/JwtFilter.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/JwtFilter.java similarity index 95% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/JwtFilter.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/JwtFilter.java index f7629fe..ba0d0cf 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/JwtFilter.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/JwtFilter.java @@ -1,14 +1,13 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; import jakarta.servlet.FilterChain; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.NonNull; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.AUTHORIZATION; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.AUTHORIZATION; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; @@ -17,7 +16,8 @@ import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.servlet.HandlerExceptionResolver; -import fr.inote.inoteApi.service.UserService; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.service.UserService; /** * Jwt filter, who perform JWT validation on a bearer token present in the HTTP diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/JwtService.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/JwtService.java similarity index 67% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/JwtService.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/JwtService.java index 15cd9fa..ab07b78 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/JwtService.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/JwtService.java @@ -1,12 +1,12 @@ -package fr.inote.inoteApi.crossCutting.security; - -import fr.inote.inoteApi.crossCutting.exceptions.InoteExpiredRefreshTokenException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteJwtNotFoundException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteNotAuthenticatedUserException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; +package fr.inote.inote_api.cross_cutting.security; import java.util.Map; +import fr.inote.inote_api.cross_cutting.exceptions.InoteExpiredRefreshTokenException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteJwtNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteNotAuthenticatedUserException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; + public interface JwtService { diff --git a/src/main/java/fr/inote/inote_api/cross_cutting/security/LocaleConfig.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/LocaleConfig.java new file mode 100644 index 0000000..5e0f8e8 --- /dev/null +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/LocaleConfig.java @@ -0,0 +1,36 @@ +package fr.inote.inote_api.cross_cutting.security; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver; + +/** Locale configuration + * + * @author FYHenry + * @date 06/05/2024 + * + *

Implements automatic localization by Accept-Language HTTP header.

+ *

The messages resources are in the i18n directory.

+ */ +@Configuration +public class LocaleConfig { + @Bean + public LocaleResolver localeResolver() { + final AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver(); + //localeResolver.setDefaultLocale(Locale.ENGLISH); + return localeResolver; + } + + @Bean + public MessageSource messageSource() { + final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("i18n/messages"); + messageSource.setDefaultEncoding("UTF-8"); + return messageSource; + } +} diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/RefreshToken.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/RefreshToken.java similarity index 96% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/RefreshToken.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/RefreshToken.java index d6ee43f..b4c0eac 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/RefreshToken.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/RefreshToken.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/SecurityConfig.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/SecurityConfig.java similarity index 98% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/SecurityConfig.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/SecurityConfig.java index 1f23ae5..1b67bde 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/SecurityConfig.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/SecurityConfig.java @@ -1,6 +1,5 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; -import fr.inote.inoteApi.crossCutting.constants.Endpoint; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -17,6 +16,9 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +import fr.inote.inote_api.cross_cutting.constants.Endpoint; + import static org.springframework.http.HttpMethod.GET; import static org.springframework.http.HttpMethod.POST; @@ -141,6 +143,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws .requestMatchers(POST, Endpoint.CHANGE_PASSWORD).permitAll() .requestMatchers(POST, Endpoint.NEW_PASSWORD).permitAll() .requestMatchers(POST, Endpoint.REFRESH_TOKEN).permitAll() + .requestMatchers(GET, "/api/hello").permitAll() // -> Secured endpoints .requestMatchers(POST, Endpoint.GET_CURRENT_USER).permitAll() .requestMatchers(POST, Endpoint.SIGN_OUT).authenticated() diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/WebConfig.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/WebConfig.java similarity index 87% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/WebConfig.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/WebConfig.java index 4afaf55..3460d05 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/WebConfig.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/WebConfig.java @@ -1,11 +1,14 @@ -package fr.inote.inoteApi.crossCutting.security; +package fr.inote.inote_api.cross_cutting.security; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; -import fr.inote.inoteApi.crossCutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; @Configuration public class WebConfig implements WebMvcConfigurer { @@ -38,6 +41,12 @@ public void addCorsMappings(CorsRegistry registry) { .allowedMethods("GET") .allowedHeaders("Content-Type", "Authorization") .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials"); + + registry.addMapping("/api/hello") + .allowedOrigins(FRONTEND_HOST) + .allowedMethods("GET") + .allowedHeaders("Content-Type", "Authorization") + .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials"); registry.addMapping(Endpoint.SIGN_OUT) .allowedOrigins(FRONTEND_HOST) @@ -56,9 +65,19 @@ public void addCorsMappings(CorsRegistry registry) { .allowedMethods("POST") .allowedHeaders("Content-Type", "Authorization") .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers"); - - - } + } + + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() { + LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); + localeChangeInterceptor.setParamName("lang"); + return localeChangeInterceptor; + } + + @Override + public void addInterceptors(InterceptorRegistry registry){ + registry.addInterceptor(localeChangeInterceptor()); + } } // @Configuration diff --git a/src/main/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl.java b/src/main/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl.java similarity index 93% rename from src/main/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl.java rename to src/main/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl.java index c439c8c..b723bc8 100755 --- a/src/main/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl.java @@ -1,16 +1,5 @@ -package fr.inote.inoteApi.crossCutting.security.impl; - -import fr.inote.inoteApi.crossCutting.constants.HttpRequestBody; -import fr.inote.inoteApi.crossCutting.exceptions.InoteExpiredRefreshTokenException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteJwtNotFoundException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteNotAuthenticatedUserException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.crossCutting.security.Jwt; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; -import fr.inote.inoteApi.crossCutting.security.JwtService; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.JwtRepository; -import fr.inote.inoteApi.service.UserService; +package fr.inote.inote_api.cross_cutting.security.impl; + import io.jsonwebtoken.*; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys; @@ -24,15 +13,27 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import fr.inote.inote_api.cross_cutting.constants.HttpRequestBody; +import fr.inote.inote_api.cross_cutting.exceptions.InoteExpiredRefreshTokenException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteJwtNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteNotAuthenticatedUserException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.cross_cutting.security.Jwt; +import fr.inote.inote_api.cross_cutting.security.JwtService; +import fr.inote.inote_api.cross_cutting.security.RefreshToken; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.JwtRepository; +import fr.inote.inote_api.service.UserService; + +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.REFRESH; + import java.security.Key; import java.time.Instant; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.REFRESH; - @Getter @Setter @Slf4j diff --git a/src/main/java/fr/inote/inoteApi/dto/ActivationRequestDto.java b/src/main/java/fr/inote/inote_api/dto/ActivationRequestDto.java similarity index 64% rename from src/main/java/fr/inote/inoteApi/dto/ActivationRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/ActivationRequestDto.java index f75bf13..ed61307 100644 --- a/src/main/java/fr/inote/inoteApi/dto/ActivationRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/ActivationRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record ActivationRequestDto( String code diff --git a/src/main/java/fr/inote/inoteApi/dto/ChangePasswordRequestDto.java b/src/main/java/fr/inote/inote_api/dto/ChangePasswordRequestDto.java similarity index 66% rename from src/main/java/fr/inote/inoteApi/dto/ChangePasswordRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/ChangePasswordRequestDto.java index 821b3ab..39996cd 100644 --- a/src/main/java/fr/inote/inoteApi/dto/ChangePasswordRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/ChangePasswordRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record ChangePasswordRequestDto( String email diff --git a/src/main/java/fr/inote/inoteApi/dto/CommentRequestDto.java b/src/main/java/fr/inote/inote_api/dto/CommentRequestDto.java similarity index 64% rename from src/main/java/fr/inote/inoteApi/dto/CommentRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/CommentRequestDto.java index 940487f..161e262 100644 --- a/src/main/java/fr/inote/inoteApi/dto/CommentRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/CommentRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record CommentRequestDto( String msg diff --git a/src/main/java/fr/inote/inoteApi/dto/CommentResponseDto.java b/src/main/java/fr/inote/inote_api/dto/CommentResponseDto.java similarity index 76% rename from src/main/java/fr/inote/inoteApi/dto/CommentResponseDto.java rename to src/main/java/fr/inote/inote_api/dto/CommentResponseDto.java index b1b3809..985186e 100644 --- a/src/main/java/fr/inote/inoteApi/dto/CommentResponseDto.java +++ b/src/main/java/fr/inote/inote_api/dto/CommentResponseDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record CommentResponseDto( Integer id, diff --git a/src/main/java/fr/inote/inoteApi/dto/NewPasswordRequestDto.java b/src/main/java/fr/inote/inote_api/dto/NewPasswordRequestDto.java similarity index 78% rename from src/main/java/fr/inote/inoteApi/dto/NewPasswordRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/NewPasswordRequestDto.java index 013d04e..14faa98 100644 --- a/src/main/java/fr/inote/inoteApi/dto/NewPasswordRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/NewPasswordRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record NewPasswordRequestDto( String email, diff --git a/src/main/java/fr/inote/inoteApi/dto/PublicUserRequestDto.java b/src/main/java/fr/inote/inote_api/dto/PublicUserRequestDto.java similarity index 82% rename from src/main/java/fr/inote/inoteApi/dto/PublicUserRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/PublicUserRequestDto.java index 9f249ca..30b5095 100644 --- a/src/main/java/fr/inote/inoteApi/dto/PublicUserRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/PublicUserRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record PublicUserRequestDto( String pseudo, diff --git a/src/main/java/fr/inote/inoteApi/dto/RefreshRequestDto.java b/src/main/java/fr/inote/inote_api/dto/RefreshRequestDto.java similarity index 65% rename from src/main/java/fr/inote/inoteApi/dto/RefreshRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/RefreshRequestDto.java index 7810993..88cf159 100644 --- a/src/main/java/fr/inote/inoteApi/dto/RefreshRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/RefreshRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record RefreshRequestDto( String refresh diff --git a/src/main/java/fr/inote/inoteApi/dto/RegisterRequestDto.java b/src/main/java/fr/inote/inote_api/dto/RegisterRequestDto.java similarity index 80% rename from src/main/java/fr/inote/inoteApi/dto/RegisterRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/RegisterRequestDto.java index 1876c35..9d29d91 100644 --- a/src/main/java/fr/inote/inoteApi/dto/RegisterRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/RegisterRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record RegisterRequestDto( String pseudo, diff --git a/src/main/java/fr/inote/inoteApi/dto/SignInRequestDto.java b/src/main/java/fr/inote/inote_api/dto/SignInRequestDto.java similarity index 72% rename from src/main/java/fr/inote/inoteApi/dto/SignInRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/SignInRequestDto.java index 26e3652..ca5f158 100644 --- a/src/main/java/fr/inote/inoteApi/dto/SignInRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/SignInRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record SignInRequestDto( String username, diff --git a/src/main/java/fr/inote/inoteApi/dto/SignInResponseDto.java b/src/main/java/fr/inote/inote_api/dto/SignInResponseDto.java similarity index 75% rename from src/main/java/fr/inote/inoteApi/dto/SignInResponseDto.java rename to src/main/java/fr/inote/inote_api/dto/SignInResponseDto.java index e966eb8..e085f84 100644 --- a/src/main/java/fr/inote/inoteApi/dto/SignInResponseDto.java +++ b/src/main/java/fr/inote/inote_api/dto/SignInResponseDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record SignInResponseDto( String bearer, diff --git a/src/main/java/fr/inote/inoteApi/dto/SignOutRequestDto.java b/src/main/java/fr/inote/inote_api/dto/SignOutRequestDto.java similarity index 65% rename from src/main/java/fr/inote/inoteApi/dto/SignOutRequestDto.java rename to src/main/java/fr/inote/inote_api/dto/SignOutRequestDto.java index 3064958..c0d5de9 100644 --- a/src/main/java/fr/inote/inoteApi/dto/SignOutRequestDto.java +++ b/src/main/java/fr/inote/inote_api/dto/SignOutRequestDto.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.dto; +package fr.inote.inote_api.dto; public record SignOutRequestDto( String bearer diff --git a/src/main/java/fr/inote/inoteApi/entity/Comment.java b/src/main/java/fr/inote/inote_api/entity/Comment.java similarity index 95% rename from src/main/java/fr/inote/inoteApi/entity/Comment.java rename to src/main/java/fr/inote/inote_api/entity/Comment.java index 129534e..ddf0453 100755 --- a/src/main/java/fr/inote/inoteApi/entity/Comment.java +++ b/src/main/java/fr/inote/inote_api/entity/Comment.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.entity; +package fr.inote.inote_api.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/fr/inote/inoteApi/entity/Role.java b/src/main/java/fr/inote/inote_api/entity/Role.java similarity index 91% rename from src/main/java/fr/inote/inoteApi/entity/Role.java rename to src/main/java/fr/inote/inote_api/entity/Role.java index 71f06cf..3d9ec6a 100755 --- a/src/main/java/fr/inote/inoteApi/entity/Role.java +++ b/src/main/java/fr/inote/inote_api/entity/Role.java @@ -1,6 +1,6 @@ -package fr.inote.inoteApi.entity; +package fr.inote.inote_api.entity; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; diff --git a/src/main/java/fr/inote/inoteApi/entity/User.java b/src/main/java/fr/inote/inote_api/entity/User.java similarity index 98% rename from src/main/java/fr/inote/inoteApi/entity/User.java rename to src/main/java/fr/inote/inote_api/entity/User.java index 2079b52..2dab54c 100755 --- a/src/main/java/fr/inote/inoteApi/entity/User.java +++ b/src/main/java/fr/inote/inote_api/entity/User.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.entity; +package fr.inote.inote_api.entity; import java.util.Collection; import jakarta.persistence.*; diff --git a/src/main/java/fr/inote/inoteApi/entity/Validation.java b/src/main/java/fr/inote/inote_api/entity/Validation.java similarity index 95% rename from src/main/java/fr/inote/inoteApi/entity/Validation.java rename to src/main/java/fr/inote/inote_api/entity/Validation.java index d16f1cb..116fe65 100755 --- a/src/main/java/fr/inote/inoteApi/entity/Validation.java +++ b/src/main/java/fr/inote/inote_api/entity/Validation.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.entity; +package fr.inote.inote_api.entity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/fr/inote/inoteApi/repository/CommentRepository.java b/src/main/java/fr/inote/inote_api/repository/CommentRepository.java similarity index 71% rename from src/main/java/fr/inote/inoteApi/repository/CommentRepository.java rename to src/main/java/fr/inote/inote_api/repository/CommentRepository.java index 35b8b35..0275802 100755 --- a/src/main/java/fr/inote/inoteApi/repository/CommentRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/CommentRepository.java @@ -1,9 +1,10 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.entity.Comment; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import fr.inote.inote_api.entity.Comment; + @Repository public interface CommentRepository extends CrudRepository { } diff --git a/src/main/java/fr/inote/inoteApi/repository/JwtRepository.java b/src/main/java/fr/inote/inote_api/repository/JwtRepository.java similarity index 91% rename from src/main/java/fr/inote/inoteApi/repository/JwtRepository.java rename to src/main/java/fr/inote/inote_api/repository/JwtRepository.java index 4943b75..932592b 100755 --- a/src/main/java/fr/inote/inoteApi/repository/JwtRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/JwtRepository.java @@ -1,10 +1,11 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.crossCutting.security.Jwt; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import fr.inote.inote_api.cross_cutting.security.Jwt; + import java.util.Optional; import java.util.stream.Stream; diff --git a/src/main/java/fr/inote/inoteApi/repository/RefreshTokenRepository.java b/src/main/java/fr/inote/inote_api/repository/RefreshTokenRepository.java similarity index 67% rename from src/main/java/fr/inote/inoteApi/repository/RefreshTokenRepository.java rename to src/main/java/fr/inote/inote_api/repository/RefreshTokenRepository.java index 6938884..0642f41 100755 --- a/src/main/java/fr/inote/inoteApi/repository/RefreshTokenRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/RefreshTokenRepository.java @@ -1,9 +1,9 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; +import fr.inote.inote_api.cross_cutting.security.RefreshToken; @Repository public interface RefreshTokenRepository extends CrudRepository { diff --git a/src/main/java/fr/inote/inoteApi/repository/RoleRepository.java b/src/main/java/fr/inote/inote_api/repository/RoleRepository.java similarity index 67% rename from src/main/java/fr/inote/inoteApi/repository/RoleRepository.java rename to src/main/java/fr/inote/inote_api/repository/RoleRepository.java index 0ab3d6d..6fd7833 100755 --- a/src/main/java/fr/inote/inoteApi/repository/RoleRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/RoleRepository.java @@ -1,12 +1,12 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; import java.util.Optional; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.entity.Role; @Repository public interface RoleRepository extends CrudRepository { diff --git a/src/main/java/fr/inote/inoteApi/repository/UserRepository.java b/src/main/java/fr/inote/inote_api/repository/UserRepository.java similarity index 84% rename from src/main/java/fr/inote/inoteApi/repository/UserRepository.java rename to src/main/java/fr/inote/inote_api/repository/UserRepository.java index 3fcaf4c..d4e050e 100755 --- a/src/main/java/fr/inote/inoteApi/repository/UserRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/UserRepository.java @@ -1,11 +1,11 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; import java.util.Optional; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; -import fr.inote.inoteApi.entity.User; +import fr.inote.inote_api.entity.User; @Repository public interface UserRepository extends CrudRepository { diff --git a/src/main/java/fr/inote/inoteApi/repository/ValidationRepository.java b/src/main/java/fr/inote/inote_api/repository/ValidationRepository.java similarity index 89% rename from src/main/java/fr/inote/inoteApi/repository/ValidationRepository.java rename to src/main/java/fr/inote/inote_api/repository/ValidationRepository.java index 429fb0f..a81bb41 100755 --- a/src/main/java/fr/inote/inoteApi/repository/ValidationRepository.java +++ b/src/main/java/fr/inote/inote_api/repository/ValidationRepository.java @@ -1,9 +1,10 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.entity.Validation; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import fr.inote.inote_api.entity.Validation; + import java.time.Instant; import java.util.Optional; diff --git a/src/main/java/fr/inote/inote_api/service/CommentService.java b/src/main/java/fr/inote/inote_api/service/CommentService.java new file mode 100755 index 0000000..7c6af87 --- /dev/null +++ b/src/main/java/fr/inote/inote_api/service/CommentService.java @@ -0,0 +1,15 @@ +package fr.inote.inote_api.service; + +import java.util.List; + +import fr.inote.inote_api.cross_cutting.exceptions.InoteEmptyMessageCommentException; +import fr.inote.inote_api.dto.CommentResponseDto; +import fr.inote.inote_api.entity.Comment; + +public interface CommentService { + + Comment createComment(String message) throws InoteEmptyMessageCommentException; + + public List getAll(); + +} diff --git a/src/main/java/fr/inote/inoteApi/service/NotificationService.java b/src/main/java/fr/inote/inote_api/service/NotificationService.java similarity index 68% rename from src/main/java/fr/inote/inoteApi/service/NotificationService.java rename to src/main/java/fr/inote/inote_api/service/NotificationService.java index 94e6ec3..b0ccd17 100755 --- a/src/main/java/fr/inote/inoteApi/service/NotificationService.java +++ b/src/main/java/fr/inote/inote_api/service/NotificationService.java @@ -1,10 +1,11 @@ -package fr.inote.inoteApi.service; +package fr.inote.inote_api.service; -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteMailException; -import fr.inote.inoteApi.entity.Validation; import org.springframework.mail.MailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.entity.Validation; + /** * The interface Notification service. * @author atsuhiko Mochizuki diff --git a/src/main/java/fr/inote/inoteApi/service/RoleService.java b/src/main/java/fr/inote/inote_api/service/RoleService.java similarity index 85% rename from src/main/java/fr/inote/inoteApi/service/RoleService.java rename to src/main/java/fr/inote/inote_api/service/RoleService.java index a7b729e..04e50b1 100755 --- a/src/main/java/fr/inote/inoteApi/service/RoleService.java +++ b/src/main/java/fr/inote/inote_api/service/RoleService.java @@ -1,10 +1,10 @@ -package fr.inote.inoteApi.service; - -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.entity.Role; +package fr.inote.inote_api.service; import java.util.List; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.entity.Role; + public interface RoleService { /** diff --git a/src/main/java/fr/inote/inoteApi/service/UserService.java b/src/main/java/fr/inote/inote_api/service/UserService.java similarity index 94% rename from src/main/java/fr/inote/inoteApi/service/UserService.java rename to src/main/java/fr/inote/inote_api/service/UserService.java index ba2d8f8..4ebab3d 100755 --- a/src/main/java/fr/inote/inoteApi/service/UserService.java +++ b/src/main/java/fr/inote/inote_api/service/UserService.java @@ -1,12 +1,12 @@ -package fr.inote.inoteApi.service; - -import fr.inote.inoteApi.crossCutting.exceptions.*; -import fr.inote.inoteApi.entity.User; +package fr.inote.inote_api.service; import org.springframework.mail.MailException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.*; +import fr.inote.inote_api.entity.User; + public interface UserService extends UserDetailsService { diff --git a/src/main/java/fr/inote/inoteApi/service/ValidationService.java b/src/main/java/fr/inote/inote_api/service/ValidationService.java similarity index 83% rename from src/main/java/fr/inote/inoteApi/service/ValidationService.java rename to src/main/java/fr/inote/inote_api/service/ValidationService.java index d2d5b11..dbf1546 100755 --- a/src/main/java/fr/inote/inoteApi/service/ValidationService.java +++ b/src/main/java/fr/inote/inote_api/service/ValidationService.java @@ -1,12 +1,12 @@ -package fr.inote.inoteApi.service; +package fr.inote.inote_api.service; import org.springframework.mail.MailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteMailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteValidationNotFoundException; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationNotFoundException; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; /** * The interface Validation service. diff --git a/src/main/java/fr/inote/inoteApi/service/impl/CommentServiceImpl.java b/src/main/java/fr/inote/inote_api/service/impl/CommentServiceImpl.java similarity index 84% rename from src/main/java/fr/inote/inoteApi/service/impl/CommentServiceImpl.java rename to src/main/java/fr/inote/inote_api/service/impl/CommentServiceImpl.java index a3a6e6a..b6fe296 100755 --- a/src/main/java/fr/inote/inoteApi/service/impl/CommentServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/service/impl/CommentServiceImpl.java @@ -1,12 +1,4 @@ -package fr.inote.inoteApi.service.impl; - -import fr.inote.inoteApi.crossCutting.exceptions.InoteEmptyMessageCommentException; -import fr.inote.inoteApi.dto.CommentResponseDto; -import fr.inote.inoteApi.entity.Comment; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.CommentRepository; -import fr.inote.inoteApi.repository.UserRepository; -import fr.inote.inoteApi.service.CommentService; +package fr.inote.inote_api.service.impl; import java.util.ArrayList; import java.util.List; @@ -15,6 +7,14 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import fr.inote.inote_api.cross_cutting.exceptions.InoteEmptyMessageCommentException; +import fr.inote.inote_api.dto.CommentResponseDto; +import fr.inote.inote_api.entity.Comment; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.CommentRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.service.CommentService; + /** * The Service CommentServiceImpl * diff --git a/src/main/java/fr/inote/inoteApi/service/impl/NotificationServiceImpl.java b/src/main/java/fr/inote/inote_api/service/impl/NotificationServiceImpl.java similarity index 89% rename from src/main/java/fr/inote/inoteApi/service/impl/NotificationServiceImpl.java rename to src/main/java/fr/inote/inote_api/service/impl/NotificationServiceImpl.java index 2444f3d..2879197 100755 --- a/src/main/java/fr/inote/inoteApi/service/impl/NotificationServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/service/impl/NotificationServiceImpl.java @@ -1,15 +1,11 @@ -package fr.inote.inoteApi.service.impl; - -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteMailException; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.service.NotificationService; - -import static fr.inote.inoteApi.crossCutting.constants.RegexPatterns.REGEX_EMAIL_PATTERN; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; +package fr.inote.inote_api.service.impl; import java.util.regex.Matcher; import java.util.regex.Pattern; + +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; +import static fr.inote.inote_api.cross_cutting.constants.RegexPatterns.REGEX_EMAIL_PATTERN; + import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -19,6 +15,11 @@ import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.service.NotificationService; + /** * The Service NotificationServiceImpl * diff --git a/src/main/java/fr/inote/inoteApi/service/impl/RoleServiceImpl.java b/src/main/java/fr/inote/inote_api/service/impl/RoleServiceImpl.java similarity index 87% rename from src/main/java/fr/inote/inoteApi/service/impl/RoleServiceImpl.java rename to src/main/java/fr/inote/inote_api/service/impl/RoleServiceImpl.java index eddfd26..6f51f33 100755 --- a/src/main/java/fr/inote/inoteApi/service/impl/RoleServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/service/impl/RoleServiceImpl.java @@ -1,12 +1,13 @@ -package fr.inote.inoteApi.service.impl; +package fr.inote.inote_api.service.impl; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.repository.RoleRepository; -import fr.inote.inoteApi.service.RoleService; import org.springframework.stereotype.Service; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.service.RoleService; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/fr/inote/inoteApi/service/impl/UserServiceImpl.java b/src/main/java/fr/inote/inote_api/service/impl/UserServiceImpl.java similarity index 93% rename from src/main/java/fr/inote/inoteApi/service/impl/UserServiceImpl.java rename to src/main/java/fr/inote/inote_api/service/impl/UserServiceImpl.java index a11d525..cc0fc73 100755 --- a/src/main/java/fr/inote/inoteApi/service/impl/UserServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/service/impl/UserServiceImpl.java @@ -1,30 +1,29 @@ -package fr.inote.inoteApi.service.impl; +package fr.inote.inote_api.service.impl; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.*; - -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.repository.ValidationRepository; -import fr.inote.inoteApi.service.UserService; -import fr.inote.inoteApi.service.ValidationService; import org.springframework.mail.MailException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; -import fr.inote.inoteApi.repository.RoleRepository; -import fr.inote.inoteApi.repository.UserRepository; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.*; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.repository.ValidationRepository; +import fr.inote.inote_api.service.UserService; +import fr.inote.inote_api.service.ValidationService; + +import static fr.inote.inote_api.cross_cutting.constants.RegexPatterns.REGEX_EMAIL_PATTERN; +import static fr.inote.inote_api.cross_cutting.constants.RegexPatterns.REGEX_PASSWORD_FORMAT; import java.time.Instant; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static fr.inote.inoteApi.crossCutting.constants.RegexPatterns.REGEX_EMAIL_PATTERN; -import static fr.inote.inoteApi.crossCutting.constants.RegexPatterns.REGEX_PASSWORD_FORMAT; - /** * Services related to User * diff --git a/src/main/java/fr/inote/inoteApi/service/impl/ValidationServiceImpl.java b/src/main/java/fr/inote/inote_api/service/impl/ValidationServiceImpl.java similarity index 80% rename from src/main/java/fr/inote/inoteApi/service/impl/ValidationServiceImpl.java rename to src/main/java/fr/inote/inote_api/service/impl/ValidationServiceImpl.java index 001e681..d81a3c1 100755 --- a/src/main/java/fr/inote/inoteApi/service/impl/ValidationServiceImpl.java +++ b/src/main/java/fr/inote/inote_api/service/impl/ValidationServiceImpl.java @@ -1,17 +1,18 @@ -package fr.inote.inoteApi.service.impl; +package fr.inote.inote_api.service.impl; -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteMailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteValidationNotFoundException; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.repository.ValidationRepository; -import fr.inote.inoteApi.service.NotificationService; -import fr.inote.inoteApi.service.ValidationService; import jakarta.transaction.Transactional; import org.springframework.mail.MailException; import org.springframework.stereotype.Service; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationNotFoundException; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.ValidationRepository; +import fr.inote.inote_api.service.NotificationService; +import fr.inote.inote_api.service.ValidationService; + import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Random; diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json index b0670e1..6ce9ec0 100755 --- a/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,12 +1,32 @@ -{"properties": [ - { - "name": "inote.backend.mail.notreply", - "type": "java.lang.String", - "description": "E-mail address of remote SMTP server" - }, - { - "name": "inote.frontend.host", - "type": "java.lang.String", - "description": "Web address of frontend HTTP server" - } -]} \ No newline at end of file +{ + "properties": [ + { + "name": "inote.backend.mail.notreply", + "type": "java.lang.String", + "defaultValue": "notreply@inote.fr", + "description": "E-mail address of remote SMTP server" + }, + { + "name": "inote.frontend.host", + "type": "java.lang.String", + "description": "Web address of frontend HTTP server" + }, + { + "name": "jwt.jwtValidityRefreshTokenAdditionalTimeToTokenInSeconds", + "type": "java.lang.Integer", + "defaultValue": 3600, + "description": "A description for 'jwt.jwtValidityRefreshTokenAdditionalTimeToTokenInSeconds'" + }, + { + "name": "jwt.validyTokenTimeInSeconds", + "type": "java.lang.Integer", + "defaultValue": 3600, + "description": "A description for 'jwt.validyTokenTimeInSeconds'" + }, + { + "name": "jwt.encryptionKey", + "type": "java.lang.String", + "description": "A description for 'jwt.encryptionKey'" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties new file mode 100644 index 0000000..7e39ece --- /dev/null +++ b/src/main/resources/i18n/messages.properties @@ -0,0 +1,21 @@ +hello = Hello {0} +auth.REGISTER_OK_MAIL_SENDED = "Your Inote account has been created. Before you can use it, you need to activate it via the e-mail we've just sent you." +auth.REGISTER_ERROR_USER_ALREADY_EXISTS = "Account creation impossible. A user with this email address is already registered." +activation.ACTIVATION_NEED_ACTIVATION = "Inote Notification Service\n\nYour request was successful. To complete the operation, please retrieve the activation code sent to your mailbox.\n\nWishing you a good day." +email.EMAIL_ERROR_INVALID_EMAIL_FORMAT = "Invalid email format." +email.EMAIL_ERROR_INVALID_PASSWORD_FORMAT = "The password provided does not comply with security rules." +email.EMAIL_SUBJECT_ACTIVATION_CODE = "Subject : Activation code" +validations.VALIDATION_ERROR_NOT_FOUND = "The Validation was not found in database" +validations.VALIDATION_ERROR_VALIDATION_IS_EXPIRED = "The validation is expired" +user.USER_ERROR_USER_NOT_FOUND = "User not found in database" +user.ACTIVATION_OF_USER_OK = "User activation succeed" +user.USER_SIGNOUT_SUCCESS = "User deconnection success" +user.USER_NOT_AUTHENTICATED = "User authentication failed" +roles.ROLE_ERROR_NOT_FOUND = "The asked role doesn't exists in database" +roles.NEW_PASSWORD_SUCCESS = "The new password user affectation has been success" +token.TOKEN_ERROR_NOT_FOUND = "Token was not found" +token.TOKEN_ERROR_REFRESH_TOKEN_EXPIRED = "The refresh token is expired" +comment.COMMENT_ERROR_MESSAGE_IS_EMPTY = "The comment you wish to post contains no message." +comment.EMAIL_ERROR_POSSIBLE_SMTP_SERVEUR_NOT_CONFIGURED = "The email could not be sent.\nIt's very likely that the smtp server is misconfigured.\n==> If you are in dev mode, have you started \"smtpServer_simul_run.sh\" (located in the root folder of the complete project)?" +miscelleanous.UNSPECIFIED_ERROR_HAS_OCCURED = "An unspecified error has occurred" +miscelleanous.EXPIRED_TOKEN = "The JWT has expired" \ No newline at end of file diff --git a/src/main/resources/i18n/messages_fr.properties b/src/main/resources/i18n/messages_fr.properties new file mode 100644 index 0000000..b862142 --- /dev/null +++ b/src/main/resources/i18n/messages_fr.properties @@ -0,0 +1 @@ +hello=Bonjour {0} \ No newline at end of file diff --git a/src/test/java/fr/inote/inoteApi/ConstantsForTests.java b/src/test/java/fr/inote/inote_api/ConstantsForTests.java similarity index 97% rename from src/test/java/fr/inote/inoteApi/ConstantsForTests.java rename to src/test/java/fr/inote/inote_api/ConstantsForTests.java index 876a4da..2d09701 100755 --- a/src/test/java/fr/inote/inoteApi/ConstantsForTests.java +++ b/src/test/java/fr/inote/inote_api/ConstantsForTests.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi; +package fr.inote.inote_api; import org.springframework.test.context.ActiveProfiles; diff --git a/src/test/java/fr/inote/inoteApi/InoteApiApplicationTests.java b/src/test/java/fr/inote/inote_api/InoteApiApplicationTests.java similarity index 95% rename from src/test/java/fr/inote/inoteApi/InoteApiApplicationTests.java rename to src/test/java/fr/inote/inote_api/InoteApiApplicationTests.java index e756e6b..07a10b2 100755 --- a/src/test/java/fr/inote/inoteApi/InoteApiApplicationTests.java +++ b/src/test/java/fr/inote/inote_api/InoteApiApplicationTests.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi; +package fr.inote.inote_api; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/src/test/java/fr/inote/inoteApi/controller/AuthControllerTest.java b/src/test/java/fr/inote/inote_api/controller/AuthControllerTest.java similarity index 95% rename from src/test/java/fr/inote/inoteApi/controller/AuthControllerTest.java rename to src/test/java/fr/inote/inote_api/controller/AuthControllerTest.java index 109753a..43152f0 100755 --- a/src/test/java/fr/inote/inoteApi/controller/AuthControllerTest.java +++ b/src/test/java/fr/inote/inote_api/controller/AuthControllerTest.java @@ -1,19 +1,21 @@ -package fr.inote.inoteApi.controller; +package fr.inote.inote_api.controller; import com.fasterxml.jackson.databind.ObjectMapper; -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.*; -import fr.inote.inoteApi.crossCutting.security.Jwt; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; -import fr.inote.inoteApi.dto.*; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.service.impl.UserServiceImpl; +import fr.inote.inote_api.controller.AuthController; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.*; +import fr.inote.inote_api.cross_cutting.security.Jwt; +import fr.inote.inote_api.cross_cutting.security.RefreshToken; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.dto.*; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.service.impl.UserServiceImpl; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -37,9 +39,9 @@ import java.util.HashMap; import java.util.Map; -import static fr.inote.inoteApi.ConstantsForTests.*; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.REFRESH; +import static fr.inote.inote_api.ConstantsForTests.*; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.REFRESH; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; diff --git a/src/test/java/fr/inote/inoteApi/controller/CommentControllerTest.java b/src/test/java/fr/inote/inote_api/controller/CommentControllerTest.java similarity index 92% rename from src/test/java/fr/inote/inoteApi/controller/CommentControllerTest.java rename to src/test/java/fr/inote/inote_api/controller/CommentControllerTest.java index e6b33dd..54132a4 100755 --- a/src/test/java/fr/inote/inoteApi/controller/CommentControllerTest.java +++ b/src/test/java/fr/inote/inote_api/controller/CommentControllerTest.java @@ -1,17 +1,20 @@ -package fr.inote.inoteApi.controller; +package fr.inote.inote_api.controller; import com.fasterxml.jackson.databind.ObjectMapper; -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.*; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; -import fr.inote.inoteApi.dto.*; -import fr.inote.inoteApi.entity.Comment; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.CommentRepository; -import fr.inote.inoteApi.service.impl.CommentServiceImpl; -import fr.inote.inoteApi.service.impl.UserServiceImpl; + +import fr.inote.inote_api.controller.CommentController; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.*; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.dto.*; +import fr.inote.inote_api.entity.Comment; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.CommentRepository; +import fr.inote.inote_api.service.impl.CommentServiceImpl; +import fr.inote.inote_api.service.impl.UserServiceImpl; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -28,7 +31,7 @@ import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; -import static fr.inote.inoteApi.ConstantsForTests.*; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; diff --git a/src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImplTest.java b/src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImplTest.java similarity index 95% rename from src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImplTest.java rename to src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImplTest.java index 96b3d89..94836a1 100755 --- a/src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImplTest.java @@ -1,17 +1,5 @@ -package fr.inote.inoteApi.crossCutting.security.impl; - -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteExpiredRefreshTokenException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteJwtNotFoundException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteNotAuthenticatedUserException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.crossCutting.security.Jwt; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.JwtRepository; -import fr.inote.inoteApi.repository.UserRepository; -import fr.inote.inoteApi.service.UserService; +package fr.inote.inote_api.cross_cutting.security.impl; + import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.MalformedJwtException; @@ -27,6 +15,21 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.test.context.ActiveProfiles; + +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteExpiredRefreshTokenException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteJwtNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteNotAuthenticatedUserException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.cross_cutting.security.Jwt; +import fr.inote.inote_api.cross_cutting.security.RefreshToken; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.JwtRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.service.UserService; + import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.security.Key; @@ -35,10 +38,9 @@ import java.util.*; import java.util.stream.Stream; -import static fr.inote.inoteApi.ConstantsForTests.*; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.REFRESH; - +import static fr.inote.inote_api.ConstantsForTests.*; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.REFRESH; import static java.lang.Thread.sleep; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; diff --git a/src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl_IT.java b/src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl_IT.java similarity index 94% rename from src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl_IT.java rename to src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl_IT.java index f766950..25da4d8 100755 --- a/src/test/java/fr/inote/inoteApi/crossCutting/security/impl/JwtServiceImpl_IT.java +++ b/src/test/java/fr/inote/inote_api/cross_cutting/security/impl/JwtServiceImpl_IT.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.crossCutting.security.impl; +package fr.inote.inote_api.cross_cutting.security.impl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; diff --git a/src/test/java/fr/inote/inoteApi/integrationTest/AuthController_IT.java b/src/test/java/fr/inote/inote_api/integrationTest/AuthController_IT.java similarity index 97% rename from src/test/java/fr/inote/inoteApi/integrationTest/AuthController_IT.java rename to src/test/java/fr/inote/inote_api/integrationTest/AuthController_IT.java index 1ba1b82..54f668f 100755 --- a/src/test/java/fr/inote/inoteApi/integrationTest/AuthController_IT.java +++ b/src/test/java/fr/inote/inote_api/integrationTest/AuthController_IT.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.integrationTest; +package fr.inote.inote_api.integrationTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -7,28 +7,29 @@ import com.icegreen.greenmail.store.FolderException; import com.icegreen.greenmail.util.GreenMailUtil; import com.icegreen.greenmail.util.ServerSetupTest; -import fr.inote.inoteApi.ConstantsForTests; - -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.crossCutting.security.impl.JwtServiceImpl; -import fr.inote.inoteApi.dto.ActivationRequestDto; -import fr.inote.inoteApi.dto.SignInRequestDto; -import fr.inote.inoteApi.dto.ChangePasswordRequestDto; -import fr.inote.inoteApi.dto.NewPasswordRequestDto; -import fr.inote.inoteApi.dto.PublicUserRequestDto; -import fr.inote.inoteApi.dto.RefreshRequestDto; -import fr.inote.inoteApi.dto.RegisterRequestDto; -import fr.inote.inoteApi.dto.SignInResponseDto; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.repository.JwtRepository; -import fr.inote.inoteApi.repository.RoleRepository; -import fr.inote.inoteApi.repository.UserRepository; -import fr.inote.inoteApi.repository.ValidationRepository; + +import fr.inote.inote_api.ConstantsForTests; +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.cross_cutting.security.impl.JwtServiceImpl; +import fr.inote.inote_api.dto.ActivationRequestDto; +import fr.inote.inote_api.dto.ChangePasswordRequestDto; +import fr.inote.inote_api.dto.NewPasswordRequestDto; +import fr.inote.inote_api.dto.PublicUserRequestDto; +import fr.inote.inote_api.dto.RefreshRequestDto; +import fr.inote.inote_api.dto.RegisterRequestDto; +import fr.inote.inote_api.dto.SignInRequestDto; +import fr.inote.inote_api.dto.SignInResponseDto; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.JwtRepository; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.repository.ValidationRepository; + import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -55,10 +56,10 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import static fr.inote.inoteApi.ConstantsForTests.*; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.AUTHORIZATION; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; +import static fr.inote.inote_api.ConstantsForTests.*; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.AUTHORIZATION; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; import static java.util.UUID.randomUUID; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/fr/inote/inoteApi/integrationTest/CommentController_IT.java b/src/test/java/fr/inote/inote_api/integrationTest/CommentController_IT.java similarity index 94% rename from src/test/java/fr/inote/inoteApi/integrationTest/CommentController_IT.java rename to src/test/java/fr/inote/inote_api/integrationTest/CommentController_IT.java index 29b31e9..9da60ec 100755 --- a/src/test/java/fr/inote/inoteApi/integrationTest/CommentController_IT.java +++ b/src/test/java/fr/inote/inote_api/integrationTest/CommentController_IT.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.integrationTest; +package fr.inote.inote_api.integrationTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -7,23 +7,24 @@ import com.icegreen.greenmail.util.GreenMailUtil; import com.icegreen.greenmail.util.ServerSetupTest; import com.jayway.jsonpath.JsonPath; -import fr.inote.inoteApi.crossCutting.constants.Endpoint; -import fr.inote.inoteApi.crossCutting.constants.MessagesEn; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.dto.ActivationRequestDto; -import fr.inote.inoteApi.dto.SignInRequestDto; -import fr.inote.inoteApi.dto.CommentRequestDto; -import fr.inote.inoteApi.dto.CommentResponseDto; -import fr.inote.inoteApi.dto.RegisterRequestDto; -import fr.inote.inoteApi.dto.SignInResponseDto; -import fr.inote.inoteApi.entity.Comment; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.CommentRepository; -import fr.inote.inoteApi.repository.JwtRepository; -import fr.inote.inoteApi.repository.UserRepository; -import fr.inote.inoteApi.repository.ValidationRepository; -import fr.inote.inoteApi.service.impl.UserServiceImpl; + +import fr.inote.inote_api.cross_cutting.constants.Endpoint; +import fr.inote.inote_api.cross_cutting.constants.MessagesEn; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.dto.ActivationRequestDto; +import fr.inote.inote_api.dto.CommentRequestDto; +import fr.inote.inote_api.dto.CommentResponseDto; +import fr.inote.inote_api.dto.RegisterRequestDto; +import fr.inote.inote_api.dto.SignInRequestDto; +import fr.inote.inote_api.dto.SignInResponseDto; +import fr.inote.inote_api.entity.Comment; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.CommentRepository; +import fr.inote.inote_api.repository.JwtRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.repository.ValidationRepository; +import fr.inote.inote_api.service.impl.UserServiceImpl; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -47,10 +48,10 @@ import java.util.Map; import java.util.UUID; -import static fr.inote.inoteApi.ConstantsForTests.*; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.AUTHORIZATION; -import static fr.inote.inoteApi.crossCutting.constants.HttpRequestBody.BEARER; -import static fr.inote.inoteApi.crossCutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; +import static fr.inote.inote_api.ConstantsForTests.*; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.AUTHORIZATION; +import static fr.inote.inote_api.cross_cutting.constants.HttpRequestBody.BEARER; +import static fr.inote.inote_api.cross_cutting.constants.MessagesEn.EMAIL_SUBJECT_ACTIVATION_CODE; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; diff --git a/src/test/java/fr/inote/inoteApi/integrationTest/SpringSecurityWebAuxTestConfig.java b/src/test/java/fr/inote/inote_api/integrationTest/SpringSecurityWebAuxTestConfig.java similarity index 83% rename from src/test/java/fr/inote/inoteApi/integrationTest/SpringSecurityWebAuxTestConfig.java rename to src/test/java/fr/inote/inote_api/integrationTest/SpringSecurityWebAuxTestConfig.java index fbd6c31..ec5ec30 100755 --- a/src/test/java/fr/inote/inoteApi/integrationTest/SpringSecurityWebAuxTestConfig.java +++ b/src/test/java/fr/inote/inote_api/integrationTest/SpringSecurityWebAuxTestConfig.java @@ -1,9 +1,9 @@ -package fr.inote.inoteApi.integrationTest; +package fr.inote.inote_api.integrationTest; + +import static fr.inote.inote_api.ConstantsForTests.*; import java.util.List; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; @@ -12,7 +12,8 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; -import static fr.inote.inoteApi.ConstantsForTests.*; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.entity.Role; @TestConfiguration public class SpringSecurityWebAuxTestConfig { diff --git a/src/test/java/fr/inote/inoteApi/repository/JwtRepositoryTest.java b/src/test/java/fr/inote/inote_api/repository/JwtRepositoryTest.java similarity index 97% rename from src/test/java/fr/inote/inoteApi/repository/JwtRepositoryTest.java rename to src/test/java/fr/inote/inote_api/repository/JwtRepositoryTest.java index 6938899..7efeac1 100755 --- a/src/test/java/fr/inote/inoteApi/repository/JwtRepositoryTest.java +++ b/src/test/java/fr/inote/inote_api/repository/JwtRepositoryTest.java @@ -1,10 +1,5 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.security.Jwt; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -20,6 +15,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.ActiveProfiles; + +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.security.Jwt; +import fr.inote.inote_api.cross_cutting.security.RefreshToken; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.JwtRepository; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; + import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -31,8 +36,8 @@ import java.util.Optional; import java.util.stream.Stream; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.assertThat; -import static fr.inote.inoteApi.ConstantsForTests.*; /** * Unit tests of repository JwtRepository diff --git a/src/test/java/fr/inote/inoteApi/repository/RefreshTokenRepositoryTest.java b/src/test/java/fr/inote/inote_api/repository/RefreshTokenRepositoryTest.java similarity index 94% rename from src/test/java/fr/inote/inoteApi/repository/RefreshTokenRepositoryTest.java rename to src/test/java/fr/inote/inote_api/repository/RefreshTokenRepositoryTest.java index cb6edab..99a683b 100755 --- a/src/test/java/fr/inote/inoteApi/repository/RefreshTokenRepositoryTest.java +++ b/src/test/java/fr/inote/inote_api/repository/RefreshTokenRepositoryTest.java @@ -1,6 +1,5 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.crossCutting.security.RefreshToken; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -8,6 +7,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.ActiveProfiles; + +import fr.inote.inote_api.cross_cutting.security.RefreshToken; +import fr.inote.inote_api.repository.RefreshTokenRepository; + import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; diff --git a/src/test/java/fr/inote/inoteApi/repository/RoleRepositoryTest.java b/src/test/java/fr/inote/inote_api/repository/RoleRepositoryTest.java similarity index 94% rename from src/test/java/fr/inote/inoteApi/repository/RoleRepositoryTest.java rename to src/test/java/fr/inote/inote_api/repository/RoleRepositoryTest.java index e1fdb6a..509ad00 100755 --- a/src/test/java/fr/inote/inoteApi/repository/RoleRepositoryTest.java +++ b/src/test/java/fr/inote/inote_api/repository/RoleRepositoryTest.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -12,10 +12,12 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Optional; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; import org.springframework.test.context.ActiveProfiles; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.repository.RoleRepository; + /** * Unit tests of repository * diff --git a/src/test/java/fr/inote/inoteApi/repository/UserRepositoryTest.java b/src/test/java/fr/inote/inote_api/repository/UserRepositoryTest.java similarity index 93% rename from src/test/java/fr/inote/inoteApi/repository/UserRepositoryTest.java rename to src/test/java/fr/inote/inote_api/repository/UserRepositoryTest.java index 5837722..73e644c 100755 --- a/src/test/java/fr/inote/inoteApi/repository/UserRepositoryTest.java +++ b/src/test/java/fr/inote/inote_api/repository/UserRepositoryTest.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -11,16 +11,19 @@ import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.assertThat; import java.util.Optional; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; import org.springframework.test.context.ActiveProfiles; -import static fr.inote.inoteApi.ConstantsForTests.*; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; diff --git a/src/test/java/fr/inote/inoteApi/repository/ValidationRepositoryTest.java b/src/test/java/fr/inote/inote_api/repository/ValidationRepositoryTest.java similarity index 94% rename from src/test/java/fr/inote/inoteApi/repository/ValidationRepositoryTest.java rename to src/test/java/fr/inote/inote_api/repository/ValidationRepositoryTest.java index de6fe34..5ced465 100755 --- a/src/test/java/fr/inote/inoteApi/repository/ValidationRepositoryTest.java +++ b/src/test/java/fr/inote/inote_api/repository/ValidationRepositoryTest.java @@ -1,9 +1,5 @@ -package fr.inote.inoteApi.repository; +package fr.inote.inote_api.repository; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -13,6 +9,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.ActiveProfiles; + +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.repository.ValidationRepository; + import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -21,7 +26,7 @@ import java.util.Optional; import java.util.Random; -import static fr.inote.inoteApi.ConstantsForTests.*; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; diff --git a/src/test/java/fr/inote/inoteApi/service/impl/CommentServiceImplTest.java b/src/test/java/fr/inote/inote_api/service/impl/CommentServiceImplTest.java similarity index 92% rename from src/test/java/fr/inote/inoteApi/service/impl/CommentServiceImplTest.java rename to src/test/java/fr/inote/inote_api/service/impl/CommentServiceImplTest.java index 60f0b2f..882e465 100755 --- a/src/test/java/fr/inote/inoteApi/service/impl/CommentServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/service/impl/CommentServiceImplTest.java @@ -1,15 +1,5 @@ -package fr.inote.inoteApi.service.impl; - -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteEmptyMessageCommentException; -import fr.inote.inoteApi.dto.CommentRequestDto; -import fr.inote.inoteApi.dto.CommentResponseDto; -import fr.inote.inoteApi.entity.Comment; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.CommentRepository; -import fr.inote.inoteApi.repository.UserRepository; -import fr.inote.inoteApi.service.CommentService; +package fr.inote.inote_api.service.impl; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -21,17 +11,29 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.test.context.ActiveProfiles; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteEmptyMessageCommentException; +import fr.inote.inote_api.dto.CommentRequestDto; +import fr.inote.inote_api.dto.CommentResponseDto; +import fr.inote.inote_api.entity.Comment; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.repository.CommentRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.service.CommentService; +import fr.inote.inote_api.service.impl.CommentServiceImpl; + import java.util.ArrayList; import java.util.List; import java.util.Optional; -import static fr.inote.inoteApi.ConstantsForTests.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.*; /** diff --git a/src/test/java/fr/inote/inoteApi/service/impl/NotificationServiceImplTest.java b/src/test/java/fr/inote/inote_api/service/impl/NotificationServiceImplTest.java similarity index 97% rename from src/test/java/fr/inote/inoteApi/service/impl/NotificationServiceImplTest.java rename to src/test/java/fr/inote/inote_api/service/impl/NotificationServiceImplTest.java index 479c781..d6a2190 100755 --- a/src/test/java/fr/inote/inoteApi/service/impl/NotificationServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/service/impl/NotificationServiceImplTest.java @@ -1,4 +1,4 @@ -package fr.inote.inoteApi.service.impl; +package fr.inote.inote_api.service.impl; import static java.util.concurrent.TimeUnit.SECONDS; import static org.awaitility.Awaitility.await; @@ -17,10 +17,11 @@ import com.icegreen.greenmail.util.GreenMailUtil; import com.icegreen.greenmail.util.ServerSetupTest; -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.service.NotificationService; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.service.NotificationService; +import fr.inote.inote_api.service.impl.NotificationServiceImpl; import javax.mail.internet.MimeMessage; diff --git a/src/test/java/fr/inote/inoteApi/service/impl/RoleServiceImplTest.java b/src/test/java/fr/inote/inote_api/service/impl/RoleServiceImplTest.java similarity index 92% rename from src/test/java/fr/inote/inoteApi/service/impl/RoleServiceImplTest.java rename to src/test/java/fr/inote/inote_api/service/impl/RoleServiceImplTest.java index 1007273..dc60d42 100755 --- a/src/test/java/fr/inote/inoteApi/service/impl/RoleServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/service/impl/RoleServiceImplTest.java @@ -1,10 +1,4 @@ -package fr.inote.inoteApi.service.impl; - -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteUserException; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.repository.RoleRepository; -import fr.inote.inoteApi.service.RoleService; +package fr.inote.inote_api.service.impl; import org.junit.jupiter.api.*; import org.junit.jupiter.api.extension.ExtendWith; @@ -14,6 +8,13 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.context.ActiveProfiles; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserException; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.service.RoleService; +import fr.inote.inote_api.service.impl.RoleServiceImpl; + import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/src/test/java/fr/inote/inoteApi/service/impl/UserServiceImplTest.java b/src/test/java/fr/inote/inote_api/service/impl/UserServiceImplTest.java similarity index 91% rename from src/test/java/fr/inote/inoteApi/service/impl/UserServiceImplTest.java rename to src/test/java/fr/inote/inote_api/service/impl/UserServiceImplTest.java index b8348e2..e061a73 100755 --- a/src/test/java/fr/inote/inoteApi/service/impl/UserServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/service/impl/UserServiceImplTest.java @@ -1,11 +1,21 @@ -package fr.inote.inoteApi.service.impl; - -import static fr.inote.inoteApi.ConstantsForTests.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.*; +package fr.inote.inote_api.service.impl; + +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER2_EMAIL; +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER2_NAME; +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER2_PASSWORD; +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER_EMAIL; +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER_NAME; +import static fr.inote.inote_api.ConstantsForTests.REFERENCE_USER_PASSWORD; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.Assertions.catchThrowable; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -13,10 +23,6 @@ import java.time.temporal.ChronoUnit; import java.util.Optional; -import fr.inote.inoteApi.crossCutting.exceptions.*; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.repository.ValidationRepository; -import fr.inote.inoteApi.service.ValidationService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -27,15 +33,26 @@ import org.springframework.mail.MailException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -import fr.inote.inoteApi.service.UserService; -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.repository.RoleRepository; -import fr.inote.inoteApi.repository.UserRepository; import org.springframework.test.context.ActiveProfiles; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteExistingEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidPasswordFormatException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteRoleNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteUserNotFoundException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationExpiredException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationNotFoundException; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.RoleRepository; +import fr.inote.inote_api.repository.UserRepository; +import fr.inote.inote_api.repository.ValidationRepository; +import fr.inote.inote_api.service.UserService; +import fr.inote.inote_api.service.ValidationService; + /** * Unit tests of service UserService * diff --git a/src/test/java/fr/inote/inoteApi/service/impl/ValidationServiceImplTest.java b/src/test/java/fr/inote/inote_api/service/impl/ValidationServiceImplTest.java similarity index 88% rename from src/test/java/fr/inote/inoteApi/service/impl/ValidationServiceImplTest.java rename to src/test/java/fr/inote/inote_api/service/impl/ValidationServiceImplTest.java index a40f594..e161753 100755 --- a/src/test/java/fr/inote/inoteApi/service/impl/ValidationServiceImplTest.java +++ b/src/test/java/fr/inote/inote_api/service/impl/ValidationServiceImplTest.java @@ -1,13 +1,5 @@ -package fr.inote.inoteApi.service.impl; - -import fr.inote.inoteApi.crossCutting.enums.RoleEnum; -import fr.inote.inoteApi.crossCutting.exceptions.InoteInvalidEmailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteMailException; -import fr.inote.inoteApi.crossCutting.exceptions.InoteValidationNotFoundException; -import fr.inote.inoteApi.entity.Role; -import fr.inote.inoteApi.entity.User; -import fr.inote.inoteApi.entity.Validation; -import fr.inote.inoteApi.repository.ValidationRepository; +package fr.inote.inote_api.service.impl; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -17,18 +9,28 @@ import org.springframework.mail.MailException; import org.springframework.test.context.ActiveProfiles; +import fr.inote.inote_api.cross_cutting.enums.RoleEnum; +import fr.inote.inote_api.cross_cutting.exceptions.InoteInvalidEmailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteMailException; +import fr.inote.inote_api.cross_cutting.exceptions.InoteValidationNotFoundException; +import fr.inote.inote_api.entity.Role; +import fr.inote.inote_api.entity.User; +import fr.inote.inote_api.entity.Validation; +import fr.inote.inote_api.repository.ValidationRepository; +import fr.inote.inote_api.service.ValidationService; +import fr.inote.inote_api.service.impl.NotificationServiceImpl; +import fr.inote.inote_api.service.impl.ValidationServiceImpl; + import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Optional; -import static fr.inote.inoteApi.ConstantsForTests.*; +import static fr.inote.inote_api.ConstantsForTests.*; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; -import fr.inote.inoteApi.service.ValidationService; - /** * Unit tests of service ValidationServiceImplTest *