Skip to content

Commit

Permalink
Remove ignore case conversions in database (fixes #335)
Browse files Browse the repository at this point in the history
This is no longer required as all columns use CI collation now (see FAForever/db#194)
  • Loading branch information
Konstantin Kalinovsky committed Sep 4, 2019
1 parent aaafe2d commit 4e8ae40
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public void changePasswordWithSuccess() throws Exception {
.params(params))
.andExpect(status().isOk());

User user = userRepository.findOneByLoginIgnoreCase(AUTH_USER).get();
User user = userRepository.findOneByLogin(AUTH_USER).get();
assertEquals(user.getPassword(), "5c29a959abce4eda5f0e7a4e7ea53dce4fa0f0abbe8eaa63717e2fed5f193d31");
verify(anopeUserRepository, times(1)).updatePassword(eq(AUTH_USER), anyString());
}
Expand Down Expand Up @@ -180,7 +180,7 @@ public void changeEmailWithSuccess() throws Exception {
.params(params))
.andExpect(status().isOk());

User user = userRepository.findOneByLoginIgnoreCase(AUTH_USER).get();
User user = userRepository.findOneByLogin(AUTH_USER).get();
assertEquals(user.getEmail(), NEW_EMAIL);
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/faforever/api/ban/BanService.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public boolean hasActiveGlobalBan(Player player) {
}

public boolean hasActiveGlobalBan(String username) {
return hasActiveGlobalBan(playerRepository.findOneByLoginIgnoreCase(username));
return hasActiveGlobalBan(playerRepository.findOneByLogin(username));
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/faforever/api/mod/ModRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public interface ModRepository extends JpaRepository<Mod, Integer> {
// "from Mod m where lower(m.displayName) = lower(:displayName) and m.uploader <> :uploader")
// boolean modExistsByDifferentUser(@Param("displayName") String displayName, @Param("uploader") User user);

boolean existsByDisplayNameIgnoreCaseAndUploaderIsNot(String displayName, Player uploader);
boolean existsByDisplayNameAndUploaderIsNot(String displayName, Player uploader);

/**
* @deprecated get rid of this as soon as proper review mechanisms are in place.
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/faforever/api/mod/ModService.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,15 +154,15 @@ private boolean modExists(String displayName, short version) {
.setDisplayName(displayName)
);

return modVersionRepository.exists(Example.of(probe, ExampleMatcher.matching().withIgnoreCase()));
return modVersionRepository.exists(Example.of(probe, ExampleMatcher.matching()));
}

private boolean modUidExists(String uuid) {
return modVersionRepository.existsByUid(uuid);
}

private boolean canUploadMod(String displayName, Player uploader) {
return !modRepository.existsByDisplayNameIgnoreCaseAndUploaderIsNot(displayName, uploader);
return !modRepository.existsByDisplayNameAndUploaderIsNot(displayName, uploader);
}

private void validateModInfo(com.faforever.commons.mod.Mod modInfo) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

@Repository
public interface PlayerRepository extends JpaRepository<Player, Integer> {
Player findOneByLoginIgnoreCase(String login);
Player findOneByLogin(String login);
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public FafUserDetailsService(UserRepository userRepository) {

@Override
public UserDetails loadUserByUsername(String usernameOrEmail) throws UsernameNotFoundException {
User user = userRepository.findOneByLoginIgnoreCaseOrEmailIgnoreCase(usernameOrEmail, usernameOrEmail)
User user = userRepository.findOneByLoginOrEmail(usernameOrEmail, usernameOrEmail)
.orElseThrow(() -> new UsernameNotFoundException("User could not be found: " + usernameOrEmail));

ArrayList<GrantedAuthority> authorities = new ArrayList<>();
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/com/faforever/api/user/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findOneByLoginIgnoreCase(String login);
Optional<User> findOneByLogin(String login);

Optional<User> findOneByEmailIgnoreCase(String email);
Optional<User> findOneByEmail(String email);

Optional<User> findOneBySteamIdIgnoreCase(String steamId);
Optional<User> findOneBySteamId(String steamId);

Optional<User> findOneByLoginIgnoreCaseOrEmailIgnoreCase(String login, String email);
Optional<User> findOneByLoginOrEmail(String login, String email);

boolean existsByEmailIgnoreCase(String email);
boolean existsByEmail(String email);

boolean existsByLoginIgnoreCase(String login);
boolean existsByLogin(String login);
}
10 changes: 5 additions & 5 deletions src/main/java/com/faforever/api/user/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ void register(String username, String email, String password) {
validateUsername(username);
emailService.validateEmailAddress(email);

if (userRepository.existsByEmailIgnoreCase(email)) {
if (userRepository.existsByEmail(email)) {
throw new ApiException(new Error(ErrorCode.EMAIL_REGISTERED, email));
}

Expand All @@ -110,7 +110,7 @@ private void validateUsername(String username) {
if (!USERNAME_PATTERN.matcher(username).matches()) {
throw new ApiException(new Error(ErrorCode.USERNAME_INVALID, username));
}
if (userRepository.existsByLoginIgnoreCase(username)) {
if (userRepository.existsByLogin(username)) {
throw new ApiException(new Error(ErrorCode.USERNAME_TAKEN, username));
}
}
Expand Down Expand Up @@ -248,8 +248,8 @@ private void createOrUpdateUser(User user, String ipAddress) {
void resetPassword(String identifier, String newPassword) {
log.debug("Password reset requested for user-identifier: {}", identifier);

User user = userRepository.findOneByLoginIgnoreCase(identifier)
.orElseGet(() -> userRepository.findOneByEmailIgnoreCase(identifier)
User user = userRepository.findOneByLogin(identifier)
.orElseGet(() -> userRepository.findOneByEmail(identifier)
.orElseThrow(() -> new ApiException(new Error(ErrorCode.UNKNOWN_IDENTIFIER))));

String token = fafTokenService.createToken(FafTokenType.PASSWORD_RESET,
Expand Down Expand Up @@ -327,7 +327,7 @@ public SteamLinkResult linkToSteam(String token, String steamId) {
errors.add(new Error(ErrorCode.STEAM_LINK_NO_FA_GAME));
}

Optional<User> userWithSameSteamIdOptional = userRepository.findOneBySteamIdIgnoreCase(steamId);
Optional<User> userWithSameSteamIdOptional = userRepository.findOneBySteamId(steamId);
userWithSameSteamIdOptional.ifPresent(userWithSameId ->
errors.add(new Error(ErrorCode.STEAM_ID_ALREADY_LINKED, userWithSameId.getLogin()))
);
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/faforever/api/mod/ModServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public void testNotOriginalUploader() throws Exception {
Path uploadedFile = prepareMod(TEST_MOD);

Player uploader = new Player();
when(modRepository.existsByDisplayNameIgnoreCaseAndUploaderIsNot("No Friendly Fire", uploader)).thenReturn(true);
when(modRepository.existsByDisplayNameAndUploaderIsNot("No Friendly Fire", uploader)).thenReturn(true);
when(modRepository.findOneByDisplayName("No Friendly Fire")).thenReturn(Optional.of(new Mod()));

expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.MOD_NOT_ORIGINAL_AUTHOR));
Expand Down
28 changes: 14 additions & 14 deletions src/test/java/com/faforever/api/user/UserServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public void register() {
instance.register(TEST_USERNAME, TEST_CURRENT_EMAIL, TEST_CURRENT_PASSWORD);

verify(emailService).validateEmailAddress(TEST_CURRENT_EMAIL);
verify(userRepository).existsByEmailIgnoreCase(TEST_CURRENT_EMAIL);
verify(userRepository).existsByEmail(TEST_CURRENT_EMAIL);

ArgumentCaptor<String> urlCaptor = ArgumentCaptor.forClass(String.class);
verify(emailService).sendActivationMail(eq(TEST_USERNAME), eq(TEST_CURRENT_EMAIL), urlCaptor.capture());
Expand All @@ -137,7 +137,7 @@ public void register() {

@Test
public void registerEmailAlreadyRegistered() {
when(userRepository.existsByEmailIgnoreCase(TEST_CURRENT_EMAIL)).thenReturn(true);
when(userRepository.existsByEmail(TEST_CURRENT_EMAIL)).thenReturn(true);
expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.EMAIL_REGISTERED));

instance.register("junit", TEST_CURRENT_EMAIL, TEST_CURRENT_PASSWORD);
Expand All @@ -163,7 +163,7 @@ public void registerInvalidUsernameTooShort() {

@Test
public void registerUsernameTaken() {
when(userRepository.existsByLoginIgnoreCase("junit")).thenReturn(true);
when(userRepository.existsByLogin("junit")).thenReturn(true);
expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.USERNAME_TAKEN));
instance.register("junit", TEST_CURRENT_EMAIL, TEST_CURRENT_PASSWORD);
}
Expand Down Expand Up @@ -263,7 +263,7 @@ public void changeLoginWithUsernameInUse() {
expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.USERNAME_TAKEN));

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);
when(userRepository.existsByLoginIgnoreCase(TEST_USERNAME_CHANGED)).thenReturn(true);
when(userRepository.existsByLogin(TEST_USERNAME_CHANGED)).thenReturn(true);
instance.changeLogin(TEST_USERNAME_CHANGED, user, IP_ADDRESS);
}

Expand All @@ -272,7 +272,7 @@ public void changeLoginWithUsernameInUseButForced() {
expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.USERNAME_TAKEN));

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);
when(userRepository.existsByLoginIgnoreCase(TEST_USERNAME_CHANGED)).thenReturn(true);
when(userRepository.existsByLogin(TEST_USERNAME_CHANGED)).thenReturn(true);
instance.changeLoginForced(TEST_USERNAME_CHANGED, user, IP_ADDRESS);
}

Expand Down Expand Up @@ -341,10 +341,10 @@ public void resetPasswordByLogin() {

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);

when(userRepository.findOneByLoginIgnoreCase(TEST_USERNAME)).thenReturn(Optional.of(user));
when(userRepository.findOneByLogin(TEST_USERNAME)).thenReturn(Optional.of(user));
instance.resetPassword(TEST_USERNAME, TEST_NEW_PASSWORD);

verify(userRepository).findOneByLoginIgnoreCase(TEST_USERNAME);
verify(userRepository).findOneByLogin(TEST_USERNAME);

ArgumentCaptor<String> urlCaptor = ArgumentCaptor.forClass(String.class);
verify(emailService).sendPasswordResetMail(eq(TEST_USERNAME), eq(TEST_CURRENT_EMAIL), urlCaptor.capture());
Expand All @@ -365,10 +365,10 @@ public void resetPasswordByEmail() {

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);

when(userRepository.findOneByEmailIgnoreCase(TEST_CURRENT_EMAIL)).thenReturn(Optional.of(user));
when(userRepository.findOneByEmail(TEST_CURRENT_EMAIL)).thenReturn(Optional.of(user));
instance.resetPassword(TEST_CURRENT_EMAIL, TEST_NEW_PASSWORD);

verify(userRepository).findOneByEmailIgnoreCase(TEST_CURRENT_EMAIL);
verify(userRepository).findOneByEmail(TEST_CURRENT_EMAIL);

ArgumentCaptor<String> urlCaptor = ArgumentCaptor.forClass(String.class);
verify(emailService).sendPasswordResetMail(eq(TEST_USERNAME), eq(TEST_CURRENT_EMAIL), urlCaptor.capture());
Expand All @@ -386,8 +386,8 @@ public void resetPasswordByEmail() {
public void resetPasswordUnknownUsernameAndEmail() {
expectedException.expect(ApiExceptionWithCode.apiExceptionWithCode(ErrorCode.UNKNOWN_IDENTIFIER));

when(userRepository.findOneByEmailIgnoreCase(TEST_CURRENT_EMAIL)).thenReturn(Optional.empty());
when(userRepository.findOneByEmailIgnoreCase(TEST_CURRENT_EMAIL)).thenReturn(Optional.empty());
when(userRepository.findOneByEmail(TEST_CURRENT_EMAIL)).thenReturn(Optional.empty());
when(userRepository.findOneByEmail(TEST_CURRENT_EMAIL)).thenReturn(Optional.empty());
instance.resetPassword(TEST_CURRENT_EMAIL, TEST_NEW_PASSWORD);
}

Expand Down Expand Up @@ -457,7 +457,7 @@ public void linkToSteam() {

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);
when(userRepository.findById(5)).thenReturn(Optional.of(user));
when(userRepository.findOneBySteamIdIgnoreCase(STEAM_ID)).thenReturn(Optional.empty());
when(userRepository.findOneBySteamId(STEAM_ID)).thenReturn(Optional.empty());

SteamLinkResult result = instance.linkToSteam(TOKEN_VALUE, STEAM_ID);

Expand Down Expand Up @@ -486,7 +486,7 @@ public void linkToSteamNoGame() {
KEY_STEAM_LINK_CALLBACK_URL, "callbackUrl"
));
when(steamService.ownsForgedAlliance(any())).thenReturn(false);
when(userRepository.findOneBySteamIdIgnoreCase(STEAM_ID)).thenReturn(Optional.empty());
when(userRepository.findOneBySteamId(STEAM_ID)).thenReturn(Optional.empty());

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);
when(userRepository.findById(5)).thenReturn(Optional.of(user));
Expand All @@ -510,7 +510,7 @@ public void linkToSteamAlreadyLinked() {
when(steamService.ownsForgedAlliance(any())).thenReturn(true);
User otherUser = new User();
otherUser.setLogin("axel12");
when(userRepository.findOneBySteamIdIgnoreCase(STEAM_ID)).thenReturn(Optional.of(otherUser));
when(userRepository.findOneBySteamId(STEAM_ID)).thenReturn(Optional.of(otherUser));

User user = createUser(TEST_USERID, TEST_USERNAME, TEST_CURRENT_PASSWORD, TEST_CURRENT_EMAIL);
when(userRepository.findById(6)).thenReturn(Optional.of(user));
Expand Down

0 comments on commit 4e8ae40

Please sign in to comment.