diff --git a/build.gradle b/build.gradle index 900cb84..79bd272 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'org.springframework.boot' version '4.0.1' + id 'org.springframework.boot' version '3.5.9' id 'io.spring.dependency-management' version '1.1.7' } @@ -47,12 +47,9 @@ dependencies { // From Spring Initalizr implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-webmvc' - implementation 'org.springframework.boot:spring-boot-starter-jackson' - implementation 'org.springframework.boot:spring-boot-starter-flyway' - runtimeOnly 'org.postgresql:postgresql' - testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' - testImplementation 'org.springframework.boot:spring-boot-starter-jackson-test' + implementation 'org.springframework.boot:spring-boot-starter-web' + runtimeOnly 'org.postgresql:postgresql' + testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' @@ -67,7 +64,7 @@ dependencies { implementation 'org.commonmark:commonmark:0.27.0' implementation 'org.jsoup:jsoup:1.21.2' - implementation 'tools.jackson.dataformat:jackson-dataformat-yaml:3.0.3' + implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.20.1' implementation 'io.minio:minio:8.6.0' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/auth/AuthControllerTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/auth/AuthControllerTests.java index af02e6f..0b5c204 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/auth/AuthControllerTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/auth/AuthControllerTests.java @@ -4,17 +4,17 @@ import app.mealsmadeeasy.api.IntegrationTestsExtension; import app.mealsmadeeasy.api.user.User; import app.mealsmadeeasy.api.user.UserCreateException; import app.mealsmadeeasy.api.user.UserService; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.Cookie; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; -import tools.jackson.databind.ObjectMapper; import java.util.Map; import java.util.UUID; @@ -51,7 +51,7 @@ public class AuthControllerTests { } } - private MockHttpServletRequestBuilder getLoginRequest(String username, String password) { + private MockHttpServletRequestBuilder getLoginRequest(String username, String password) throws Exception { final Map body = Map.of( "username", username, "password", password diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/image/ImageControllerTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/image/ImageControllerTests.java index 11f359b..bceef5b 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/image/ImageControllerTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/image/ImageControllerTests.java @@ -9,11 +9,12 @@ import app.mealsmadeeasy.api.image.spec.ImageUpdateInfoSpec; import app.mealsmadeeasy.api.user.User; import app.mealsmadeeasy.api.user.UserCreateException; import app.mealsmadeeasy.api.user.UserService; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.DynamicPropertyRegistry; @@ -23,7 +24,6 @@ import org.testcontainers.containers.MinIOContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.DockerImageName; -import tools.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.InputStream; diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeControllerTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeControllerTests.java index d247fc0..f712519 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeControllerTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/recipe/RecipeControllerTests.java @@ -14,11 +14,13 @@ import app.mealsmadeeasy.api.recipe.star.RecipeStarService; import app.mealsmadeeasy.api.user.User; import app.mealsmadeeasy.api.user.UserCreateException; import app.mealsmadeeasy.api.user.UserService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -27,7 +29,6 @@ import org.testcontainers.containers.MinIOContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.DockerImageName; -import tools.jackson.databind.ObjectMapper; import java.io.InputStream; import java.util.UUID; @@ -223,7 +224,7 @@ public class RecipeControllerTests { .andExpect(jsonPath("$.content[*].id").value(hasItems(r0.getId(), r1.getId(), r2.getId()))); } - private String getUpdateBody() { + private String getUpdateBody() throws JsonProcessingException { final RecipeUpdateSpec spec = new RecipeUpdateSpec(); spec.setTitle("Updated Test Recipe"); spec.setPreparationTime(15); diff --git a/src/integrationTest/java/app/mealsmadeeasy/api/signup/SignUpControllerTests.java b/src/integrationTest/java/app/mealsmadeeasy/api/signup/SignUpControllerTests.java index 65c9a1f..a4dead1 100644 --- a/src/integrationTest/java/app/mealsmadeeasy/api/signup/SignUpControllerTests.java +++ b/src/integrationTest/java/app/mealsmadeeasy/api/signup/SignUpControllerTests.java @@ -3,16 +3,17 @@ package app.mealsmadeeasy.api.signup; import app.mealsmadeeasy.api.IntegrationTestsExtension; import app.mealsmadeeasy.api.user.UserCreateException.Type; import app.mealsmadeeasy.api.user.UserService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; -import tools.jackson.databind.ObjectMapper; import java.util.Map; import java.util.UUID; @@ -36,7 +37,8 @@ public class SignUpControllerTests { @Autowired private UserService userService; - private MockHttpServletRequestBuilder getCheckUsernameRequest(String usernameToCheck) { + private MockHttpServletRequestBuilder getCheckUsernameRequest(String usernameToCheck) + throws JsonProcessingException { final Map body = Map.of("username", usernameToCheck); return MockMvcRequestBuilders.get("/sign-up/check-username") .content(this.objectMapper.writeValueAsString(body)) @@ -61,7 +63,7 @@ public class SignUpControllerTests { } - private MockHttpServletRequestBuilder getCheckEmailRequest(String emailToCheck) { + private MockHttpServletRequestBuilder getCheckEmailRequest(String emailToCheck) throws JsonProcessingException { final Map body = Map.of("email", emailToCheck); return MockMvcRequestBuilders.get("/sign-up/check-email") .content(this.objectMapper.writeValueAsString(body)) diff --git a/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java b/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java index 23894ca..43d39d9 100644 --- a/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java +++ b/src/main/java/app/mealsmadeeasy/api/DevConfiguration.java @@ -8,14 +8,14 @@ import app.mealsmadeeasy.api.recipe.RecipeService; import app.mealsmadeeasy.api.recipe.spec.RecipeCreateSpec; import app.mealsmadeeasy.api.user.User; import app.mealsmadeeasy.api.user.UserService; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.dataformat.yaml.YAMLFactory; import java.io.FileInputStream; import java.io.InputStream; diff --git a/src/main/java/app/mealsmadeeasy/api/security/JwtFilter.java b/src/main/java/app/mealsmadeeasy/api/security/JwtFilter.java index 54c9c89..6ee6f0f 100644 --- a/src/main/java/app/mealsmadeeasy/api/security/JwtFilter.java +++ b/src/main/java/app/mealsmadeeasy/api/security/JwtFilter.java @@ -1,6 +1,7 @@ package app.mealsmadeeasy.api.security; import app.mealsmadeeasy.api.jwt.JwtService; +import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.JwtException; import jakarta.servlet.FilterChain; @@ -18,7 +19,6 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; -import tools.jackson.databind.ObjectMapper; import java.io.IOException; diff --git a/src/main/java/app/mealsmadeeasy/api/security/SecurityConfiguration.java b/src/main/java/app/mealsmadeeasy/api/security/SecurityConfiguration.java index 271ebda..2f12c89 100644 --- a/src/main/java/app/mealsmadeeasy/api/security/SecurityConfiguration.java +++ b/src/main/java/app/mealsmadeeasy/api/security/SecurityConfiguration.java @@ -33,7 +33,7 @@ public class SecurityConfiguration { } @Bean - public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) { + public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception { httpSecurity.authorizeHttpRequests(requests -> requests.anyRequest().permitAll()); httpSecurity.csrf(AbstractHttpConfigurer::disable); httpSecurity.cors(Customizer.withDefaults());