diff --git a/src/main/java/com/faforever/api/user/GogService.java b/src/main/java/com/faforever/api/user/GogService.java index 774f5e659..df08d1ea8 100644 --- a/src/main/java/com/faforever/api/user/GogService.java +++ b/src/main/java/com/faforever/api/user/GogService.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.text.StringEscapeUtils; import org.jetbrains.annotations.NotNull; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -48,9 +49,10 @@ void verifyGogUsername(@NotNull String username) { } void verifyProfileToken(String gogUsername, User user, String targetToken) { - String profileStatus = getProfileStatus(gogUsername); + final String profileStatus = getProfileStatus(gogUsername); + final String profileStatusTrimmed = StringEscapeUtils.unescapeJava(profileStatus).trim(); - if(profileStatus.length() > 100 || !Objects.equals(targetToken, profileStatus.trim())) { + if (profileStatusTrimmed.length() > 100 || !Objects.equals(targetToken, profileStatusTrimmed)) { throw ApiException.of(ErrorCode.GOG_LINK_PROFILE_TOKEN_NOT_SET); } } diff --git a/src/test/java/com/faforever/api/user/GogServiceTest.java b/src/test/java/com/faforever/api/user/GogServiceTest.java index a590ceb3f..aca2790da 100644 --- a/src/test/java/com/faforever/api/user/GogServiceTest.java +++ b/src/test/java/com/faforever/api/user/GogServiceTest.java @@ -23,6 +23,7 @@ import static com.faforever.api.user.GogService.GOG_FA_GAME_ID; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; @@ -170,6 +171,67 @@ void verifyProfileTokenSuccess() { instance.verifyProfileToken(GOG_USERNAME, user, "{{FAF:76365}}"); } + @Test + void verifyProfileTokenSuccessWhenDescriptionTrailingNewLine() { + when(fafApiProperties.getGog().getProfilePageUrl()).thenReturn(PROFILE_PAGE_URL); + + when(restTemplate.getForObject(PROFILE_PAGE_URL, String.class)) + .thenReturn(""" + + + + + + + + + + """); + + assertDoesNotThrow(() -> instance.verifyProfileToken(GOG_USERNAME, user, "{{FAF:76365}}")); + } + @Test void verifyGameOwnershipSuccess() { when(fafApiProperties.getGog().getGamesListUrl()).thenReturn(GAME_LIST_PAGE_URL);