Skip to content

Commit 7c1ad0e

Browse files
committed
WIP SB 4.0.0
1 parent 92e7c2c commit 7c1ad0e

35 files changed

+124
-135
lines changed

build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,12 @@ dependencies {
143143
implementation("org.checkerframework:checker-qual:3.51.0")
144144
implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")
145145
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
146-
implementation("org.springframework.boot:spring-boot-starter-web")
146+
implementation("org.springframework.boot:spring-boot-starter-webmvc")
147+
implementation("org.springframework.boot:spring-boot-starter-jackson")
148+
implementation("org.springframework.boot:spring-boot-starter-restclient")
147149
implementation("org.springframework.boot:spring-boot-starter-amqp")
148150
implementation("org.springframework.boot:spring-boot-starter-security")
151+
implementation("org.springframework.security:spring-security-access")
149152
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
150153
implementation("org.springframework.boot:spring-boot-starter-mail")
151154
implementation("org.springframework.boot:spring-boot-starter-validation")
@@ -154,6 +157,8 @@ dependencies {
154157
implementation("com.github.ben-manes.caffeine:caffeine")
155158

156159
testImplementation("org.springframework.boot:spring-boot-starter-test")
160+
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
161+
testImplementation("org.springframework.boot:spring-boot-starter-security-test")
157162
testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc")
158163
testImplementation("org.springframework.security:spring-security-test")
159164
testImplementation("com.jayway.jsonpath:json-path")

src/inttest/java/com/faforever/api/AbstractIntegrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import com.faforever.commons.api.dto.ModerationReport;
1212
import com.faforever.commons.api.dto.Player;
1313
import com.faforever.commons.api.dto.Tutorial;
14-
import com.fasterxml.jackson.annotation.JsonInclude.Include;
15-
import com.fasterxml.jackson.databind.ObjectMapper;
1614
import com.github.jasminb.jsonapi.JSONAPIDocument;
1715
import com.github.jasminb.jsonapi.ResourceConverter;
1816
import com.github.jasminb.jsonapi.exceptions.DocumentSerializationException;
@@ -38,6 +36,8 @@
3836
import org.testcontainers.containers.Network;
3937
import org.testcontainers.containers.RabbitMQContainer;
4038
import org.testcontainers.junit.jupiter.Testcontainers;
39+
import tools.jackson.annotation.JsonInclude.Include;
40+
import tools.jackson.databind.ObjectMapper;
4141

4242
import jakarta.transaction.Transactional;
4343
import java.time.format.DateTimeFormatter;

src/inttest/java/com/faforever/api/clan/ClanControllerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
import com.faforever.api.player.PlayerRepository;
88
import org.junit.jupiter.api.Test;
99
import org.springframework.beans.factory.annotation.Autowired;
10-
import org.springframework.http.HttpHeaders;
1110
import org.springframework.test.context.jdbc.Sql;
1211
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
1312
import org.springframework.test.web.servlet.MvcResult;
1413
import org.springframework.test.web.servlet.ResultActions;
14+
import org.springframework.util.LinkedMultiValueMap;
1515
import org.springframework.util.MultiValueMap;
1616

1717
import static org.hamcrest.Matchers.is;
@@ -45,7 +45,7 @@ public class ClanControllerTest extends AbstractIntegrationTest {
4545

4646
@Test
4747
public void meDataWithoutClan() throws Exception {
48-
Player player = playerRepository.findById(USERID_USER).orElseThrow();
48+
Player player = playerRepository.getReferenceById(USERID_USER);
4949

5050
mockMvc.perform(get("/clans/me")
5151
.with(getOAuthTokenForUserId(USERID_USER)))
@@ -78,7 +78,7 @@ public void createClanWithSuccess() throws Exception {
7878
assertNull(player.getClan());
7979
assertFalse(clanRepository.findOneByName(NEW_CLAN_NAME).isPresent());
8080

81-
MultiValueMap<String, String> params = new HttpHeaders();
81+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
8282
params.add("name", NEW_CLAN_NAME);
8383
params.add("tag", NEW_CLAN_TAG);
8484
params.add("description", NEW_CLAN_DESCRIPTION);
@@ -98,7 +98,7 @@ public void createClanWithSuccess() throws Exception {
9898

9999
@Test
100100
public void createClanWithoutAuth() throws Exception {
101-
MultiValueMap<String, String> params = new HttpHeaders();
101+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
102102
params.add("name", NEW_CLAN_NAME);
103103
params.add("tag", NEW_CLAN_TAG);
104104
params.add("description", NEW_CLAN_DESCRIPTION);
@@ -116,7 +116,7 @@ public void createClanWithExistingName() throws Exception {
116116
assertNull(player.getClan());
117117
assertTrue(clanRepository.findOneByName(EXISTING_CLAN).isPresent());
118118

119-
MultiValueMap<String, String> params = new HttpHeaders();
119+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
120120
params.add("name", EXISTING_CLAN);
121121
params.add("tag", NEW_CLAN_TAG);
122122
params.add("description", NEW_CLAN_DESCRIPTION);
@@ -138,7 +138,7 @@ public void createClanWithExistingTag() throws Exception {
138138
assertNull(player.getClan());
139139
assertFalse(clanRepository.findOneByName(NEW_CLAN_NAME).isPresent());
140140

141-
MultiValueMap<String, String> params = new HttpHeaders();
141+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
142142
params.add("name", NEW_CLAN_NAME);
143143
params.add("tag", "123");
144144
params.add("description", NEW_CLAN_DESCRIPTION);
@@ -160,7 +160,7 @@ public void createSecondClan() throws Exception {
160160
assertNotNull(player.getClan());
161161
assertFalse(clanRepository.findOneByName(NEW_CLAN_NAME).isPresent());
162162

163-
MultiValueMap<String, String> params = new HttpHeaders();
163+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
164164
params.add("name", NEW_CLAN_NAME);
165165
params.add("tag", NEW_CLAN_TAG);
166166
params.add("description", NEW_CLAN_DESCRIPTION);

src/inttest/java/com/faforever/api/config/LeagueDbTestContainers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.slf4j.LoggerFactory;
66
import org.springframework.beans.factory.annotation.Qualifier;
77
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
8-
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
98
import org.springframework.boot.context.properties.ConfigurationProperties;
9+
import org.springframework.boot.jdbc.autoconfigure.DataSourceProperties;
1010
import org.springframework.context.annotation.Bean;
1111
import org.springframework.context.annotation.Configuration;
1212
import org.testcontainers.containers.GenericContainer;

src/inttest/java/com/faforever/api/config/MainDbTestContainers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.slf4j.LoggerFactory;
66
import org.springframework.beans.factory.annotation.Qualifier;
77
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
8-
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
98
import org.springframework.boot.context.properties.ConfigurationProperties;
9+
import org.springframework.boot.jdbc.autoconfigure.DataSourceProperties;
1010
import org.springframework.context.annotation.Bean;
1111
import org.springframework.context.annotation.Configuration;
1212
import org.springframework.context.annotation.Primary;

src/inttest/java/com/faforever/api/user/UsersControllerTest.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import com.faforever.api.security.OAuthScope;
1313
import org.junit.jupiter.api.Test;
1414
import org.springframework.beans.factory.annotation.Autowired;
15-
import org.springframework.http.HttpHeaders;
1615
import org.springframework.security.test.context.support.WithAnonymousUser;
1716
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1817
import org.springframework.test.web.servlet.MvcResult;
18+
import org.springframework.util.LinkedMultiValueMap;
1919
import org.springframework.util.MultiValueMap;
2020

2121
import java.time.Duration;
@@ -63,7 +63,7 @@ public class UsersControllerTest extends AbstractIntegrationTest {
6363

6464
@Test
6565
public void registerWithSuccess() throws Exception {
66-
MultiValueMap<String, String> params = new HttpHeaders();
66+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
6767
params.add("username", NEW_USER);
6868
params.add("email", NEW_EMAIL);
6969

@@ -76,7 +76,7 @@ public void registerWithSuccess() throws Exception {
7676

7777
@Test
7878
public void registerWithAuthentication() throws Exception {
79-
MultiValueMap<String, String> params = new HttpHeaders();
79+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
8080
params.add("username", NEW_USER);
8181
params.add("email", NEW_EMAIL);
8282
params.add("password", NEW_PASSWORD);
@@ -109,7 +109,7 @@ public void activateWithSuccess() throws Exception {
109109

110110
@Test
111111
public void changePasswordWithSuccess() throws Exception {
112-
MultiValueMap<String, String> params = new HttpHeaders();
112+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
113113
params.add("currentPassword", AUTH_USER);
114114
params.add("newPassword", NEW_PASSWORD);
115115

@@ -125,7 +125,7 @@ public void changePasswordWithSuccess() throws Exception {
125125

126126
@Test
127127
public void changePasswordWithoutScope() throws Exception {
128-
MultiValueMap<String, String> params = new HttpHeaders();
128+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
129129
params.add("currentPassword", AUTH_USER);
130130
params.add("newPassword", NEW_PASSWORD);
131131

@@ -138,7 +138,7 @@ public void changePasswordWithoutScope() throws Exception {
138138

139139
@Test
140140
public void changePasswordWithWrongPassword() throws Exception {
141-
MultiValueMap<String, String> params = new HttpHeaders();
141+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
142142
params.add("currentPassword", "wrongPassword");
143143
params.add("newPassword", NEW_PASSWORD);
144144

@@ -154,7 +154,7 @@ public void changePasswordWithWrongPassword() throws Exception {
154154

155155
@Test
156156
public void changeEmailWithSuccess() throws Exception {
157-
MultiValueMap<String, String> params = new HttpHeaders();
157+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
158158
params.add("currentPassword", AUTH_USER);
159159
params.add("newEmail", NEW_EMAIL);
160160

@@ -170,7 +170,7 @@ public void changeEmailWithSuccess() throws Exception {
170170

171171
@Test
172172
public void changeEmailWithoutScope() throws Exception {
173-
MultiValueMap<String, String> params = new HttpHeaders();
173+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
174174
params.add("currentPassword", AUTH_USER);
175175
params.add("newEmail", NEW_EMAIL);
176176

@@ -183,7 +183,7 @@ public void changeEmailWithoutScope() throws Exception {
183183

184184
@Test
185185
public void changeEmailWithWrongPassword() throws Exception {
186-
MultiValueMap<String, String> params = new HttpHeaders();
186+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
187187
params.add("currentPassword", "wrongPassword");
188188
params.add("newEmail", NEW_EMAIL);
189189

@@ -199,7 +199,7 @@ public void changeEmailWithWrongPassword() throws Exception {
199199

200200
@Test
201201
public void changeEmailWithInvalidEmail() throws Exception {
202-
MultiValueMap<String, String> params = new HttpHeaders();
202+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
203203
params.add("currentPassword", AUTH_USER);
204204
params.add("newEmail", "invalid-email");
205205

@@ -215,7 +215,7 @@ public void changeEmailWithInvalidEmail() throws Exception {
215215

216216
@Test
217217
public void resetPasswordWithUsername() throws Exception {
218-
MultiValueMap<String, String> params = new HttpHeaders();
218+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
219219
params.add("identifier", AUTH_USER);
220220

221221
mockMvc.perform(
@@ -228,7 +228,7 @@ public void resetPasswordWithUsername() throws Exception {
228228

229229
@Test
230230
public void resetPasswordWithEmail() throws Exception {
231-
MultiValueMap<String, String> params = new HttpHeaders();
231+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
232232
params.add("identifier", "[email protected]");
233233

234234
mockMvc.perform(
@@ -344,7 +344,7 @@ public void linkToSteamAlreadyLinkedAccount() throws Exception {
344344

345345
@Test
346346
public void changeUsernameUnauthorized() throws Exception {
347-
MultiValueMap<String, String> params = new HttpHeaders();
347+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
348348
params.add("newUsername", NEW_USER);
349349

350350
mockMvc.perform(
@@ -355,7 +355,7 @@ public void changeUsernameUnauthorized() throws Exception {
355355

356356
@Test
357357
public void changeUsernameWithWrongScope() throws Exception {
358-
MultiValueMap<String, String> params = new HttpHeaders();
358+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
359359
params.add("newUsername", NEW_USER);
360360

361361
mockMvc.perform(
@@ -369,7 +369,7 @@ public void changeUsernameWithWrongScope() throws Exception {
369369
public void changeUsernameSuccess() throws Exception {
370370
assertThat(userRepository.findById(1).orElseThrow().getLogin(), is(AUTH_USER));
371371

372-
MultiValueMap<String, String> params = new HttpHeaders();
372+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
373373
params.add("newUsername", NEW_USER);
374374

375375
mockMvc.perform(
@@ -385,7 +385,7 @@ public void changeUsernameSuccess() throws Exception {
385385
public void changeUsernameForcedByUser() throws Exception {
386386
assertThat(userRepository.findById(1).orElseThrow().getLogin(), is(AUTH_USER));
387387

388-
MultiValueMap<String, String> params = new HttpHeaders();
388+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
389389
params.add("newUsername", NEW_USER);
390390

391391
mockMvc.perform(
@@ -400,7 +400,7 @@ public void changeUsernameForcedByUser() throws Exception {
400400

401401
@Test
402402
public void changeUsernameForcedByModerator() throws Exception {
403-
MultiValueMap<String, String> params = new HttpHeaders();
403+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
404404
params.add("newUsername", NEW_USER);
405405

406406
mockMvc.perform(
@@ -414,7 +414,7 @@ public void changeUsernameForcedByModerator() throws Exception {
414414

415415
@Test
416416
public void changeUsernameForcedByModeratorWithoutScope() throws Exception {
417-
MultiValueMap<String, String> params = new HttpHeaders();
417+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
418418
params.add("newUsername", NEW_USER);
419419

420420
mockMvc.perform(
@@ -426,7 +426,7 @@ public void changeUsernameForcedByModeratorWithoutScope() throws Exception {
426426

427427
@Test
428428
public void changeUsernameForcedByModeratorWithoutRole() throws Exception {
429-
MultiValueMap<String, String> params = new HttpHeaders();
429+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
430430
params.add("newUsername", NEW_USER);
431431

432432
mockMvc.perform(
@@ -440,7 +440,7 @@ public void changeUsernameForcedByModeratorWithoutRole() throws Exception {
440440
public void changeUsernameTooEarly() throws Exception {
441441
assertThat(userRepository.findById(2).orElseThrow().getLogin(), is(AUTH_MODERATOR));
442442

443-
MultiValueMap<String, String> params = new HttpHeaders();
443+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
444444
params.add("newUsername", NEW_USER);
445445

446446
MvcResult result = mockMvc.perform(
@@ -457,7 +457,7 @@ public void changeUsernameTooEarly() throws Exception {
457457

458458
@Test
459459
public void changeUsernameTooEarlyButForced() throws Exception {
460-
MultiValueMap<String, String> params = new HttpHeaders();
460+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
461461
params.add("newUsername", NEW_USER);
462462

463463
mockMvc.perform(
@@ -480,7 +480,7 @@ public void resyncAccountSuccess() throws Exception {
480480

481481
@Test
482482
public void buildGogProfileToken() throws Exception {
483-
MultiValueMap<String, String> params = new HttpHeaders();
483+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
484484
params.add("gogUsername", "someUsername");
485485
when(gogService.buildGogToken(any())).thenReturn("theToken");
486486

@@ -496,7 +496,7 @@ public void buildGogProfileToken() throws Exception {
496496

497497
@Test
498498
public void linkToGogWithoutOAuthScopeFails() throws Exception {
499-
MultiValueMap<String, String> params = new HttpHeaders();
499+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
500500
params.add("gogUsername", "someUsername");
501501

502502
mockMvc.perform(
@@ -508,7 +508,7 @@ public void linkToGogWithoutOAuthScopeFails() throws Exception {
508508

509509
@Test
510510
public void linkToGogSuccess() throws Exception {
511-
MultiValueMap<String, String> params = new HttpHeaders();
511+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
512512
params.add("gogUsername", "someUsername");
513513

514514
when(gogService.buildGogToken(any())).thenReturn("theToken");
@@ -524,7 +524,7 @@ public void linkToGogSuccess() throws Exception {
524524

525525
@Test
526526
public void linkToGogAlreadyLinked() throws Exception {
527-
MultiValueMap<String, String> params = new HttpHeaders();
527+
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
528528
params.add("gogUsername", "username");
529529

530530
when(gogService.buildGogToken(any())).thenReturn("theToken");

src/main/java/com/faforever/api/challonge/ChallongeController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.faforever.api.config.FafApiProperties.Challonge;
55
import lombok.RequiredArgsConstructor;
66
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7-
import org.springframework.boot.web.client.RestTemplateBuilder;
7+
import org.springframework.boot.restclient.RestTemplateBuilder;
88
import org.springframework.cache.annotation.Cacheable;
99
import org.springframework.context.annotation.Scope;
1010
import org.springframework.context.annotation.ScopedProxyMode;
@@ -62,14 +62,14 @@ private static String translateRoute(HttpServletRequest request) {
6262

6363
@Async
6464
@Cacheable(cacheNames = CHALLONGE_READ_CACHE_NAME)
65-
@RequestMapping(path = "/**", method = GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
65+
@RequestMapping(path = "/**", method = GET, produces = MediaType.APPLICATION_JSON_VALUE)
6666
public CompletableFuture<ResponseEntity<String>> get(HttpServletRequest request) {
6767
return CompletableFuture.completedFuture(restTemplate.getForEntity(translateRoute(request), String.class, Map.of()));
6868
}
6969

7070
@Async
7171
@Secured("ROLE_TOURNAMENT_DIRECTOR")
72-
@RequestMapping(path = "/**", method = {POST, PUT, DELETE}, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
72+
@RequestMapping(path = "/**", method = {POST, PUT, DELETE}, produces = MediaType.APPLICATION_JSON_VALUE)
7373
public CompletableFuture<ResponseEntity<String>> write(@RequestBody(required = false) Object body, HttpMethod method, HttpServletRequest request) {
7474
return CompletableFuture.completedFuture(restTemplate.exchange(translateRoute(request), method, new HttpEntity<>(body), String.class));
7575
}

src/main/java/com/faforever/api/clan/ClanService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
import com.faforever.api.player.PlayerRepository;
1515
import com.faforever.api.player.PlayerService;
1616
import com.faforever.api.security.JwtService;
17-
import com.fasterxml.jackson.databind.ObjectMapper;
1817
import lombok.RequiredArgsConstructor;
1918
import lombok.SneakyThrows;
2019
import org.springframework.security.core.Authentication;
2120
import org.springframework.stereotype.Service;
21+
import tools.jackson.databind.ObjectMapper;
2222

2323
import java.time.Instant;
2424
import java.time.temporal.ChronoUnit;

0 commit comments

Comments
 (0)