From 009d82c0a944c1ae278d28deff1403d9a927cf72 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sat, 4 Mar 2017 17:52:08 +0100 Subject: [PATCH] #1120 Use empty "realname" when converting from flatfile - FlatFile doesn't store the "realname" - all names are always in all-lowercase. Converting from flatfile to other data source should therefore not take over an auth's realname - Adjust sample flatfile file to only have all-lowercase usernames --- .../converter/AbstractDataSourceConverter.java | 12 +++++++++++- .../datasource/converter/ForceFlatToSqlite.java | 8 ++++++++ .../authme/datasource/FlatFileIntegrationTest.java | 8 ++++---- .../datasource/converter/ForceFlatToSqliteTest.java | 6 +++--- .../fr/xephi/authme/datasource/flatfile-test.txt | 12 ++++++------ 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java index d2be78047..8ca506250 100644 --- a/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java @@ -37,7 +37,7 @@ public abstract class AbstractDataSourceConverter implemen // which is never the case when a converter is launched from the /authme converter command. @Override public void execute(CommandSender sender) { - if (!destinationType.equals(destination.getType())) { + if (destinationType != destination.getType()) { if (sender != null) { sender.sendMessage("Please configure your connection to " + destinationType + " and re-run this command"); @@ -59,6 +59,7 @@ public abstract class AbstractDataSourceConverter implemen if (destination.isAuthAvailable(auth.getNickname())) { skippedPlayers.add(auth.getNickname()); } else { + adaptPlayerAuth(auth); destination.saveAuth(auth); destination.updateQuitLoc(auth); } @@ -72,6 +73,15 @@ public abstract class AbstractDataSourceConverter implemen + " to " + destinationType); } + /** + * Adapts the PlayerAuth from the source before it is saved in the destination. + * + * @param auth the auth from the source + */ + protected void adaptPlayerAuth(PlayerAuth auth) { + // noop + } + /** * @return the data source to convert from * @throws Exception during initialization of source diff --git a/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java b/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java index a52b216b6..1c67061f3 100644 --- a/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java @@ -1,5 +1,6 @@ package fr.xephi.authme.datasource.converter; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.FlatFile; @@ -25,4 +26,11 @@ public class ForceFlatToSqlite extends AbstractDataSourceConverter { public FlatFile getSource() { return source; } + + @Override + protected void adaptPlayerAuth(PlayerAuth auth) { + // Issue #1120: FlatFile returns PlayerAuth objects with realname = lower-case name all the time. + // We don't want to take this over into the new data source. + auth.setRealName("Player"); + } } diff --git a/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java b/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java index 7e0bb1a51..102584edf 100644 --- a/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java @@ -61,13 +61,13 @@ public class FlatFileIntegrationTest { // then assertThat(authList, hasSize(7)); - assertThat(getName("bobby", authList), hasAuthBasicData("bobby", "Bobby", "your@email.com", "123.45.67.89")); + assertThat(getName("bobby", authList), hasAuthBasicData("bobby", "bobby", "your@email.com", "123.45.67.89")); assertThat(getName("bobby", authList), hasAuthLocation(1.05, 2.1, 4.2, "world")); assertThat(getName("bobby", authList).getPassword(), equalToHash("$SHA$11aa0706173d7272$dbba966")); - assertThat(getName("twofields", authList), hasAuthBasicData("twofields", "twoFields", "your@email.com", "127.0.0.1")); + assertThat(getName("twofields", authList), hasAuthBasicData("twofields", "twofields", "your@email.com", "127.0.0.1")); assertThat(getName("twofields", authList).getPassword(), equalToHash("hash1234")); - assertThat(getName("threefields", authList), hasAuthBasicData("threefields", "threeFields", "your@email.com", "33.33.33.33")); - assertThat(getName("fourfields", authList), hasAuthBasicData("fourfields", "fourFields", "your@email.com", "4.4.4.4")); + assertThat(getName("threefields", authList), hasAuthBasicData("threefields", "threefields", "your@email.com", "33.33.33.33")); + assertThat(getName("fourfields", authList), hasAuthBasicData("fourfields", "fourfields", "your@email.com", "4.4.4.4")); assertThat(getName("fourfields", authList).getLastLogin(), equalTo(404040404L)); assertThat(getName("sevenfields", authList), hasAuthLocation(7.7, 14.14, 21.21, "world")); assertThat(getName("eightfields", authList), hasAuthLocation(8.8, 17.6, 26.4, "eightworld")); diff --git a/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java b/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java index 3ec28a7b6..556f58ef9 100644 --- a/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java +++ b/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java @@ -63,11 +63,11 @@ public class ForceFlatToSqliteTest { ArgumentCaptor authCaptor = ArgumentCaptor.forClass(PlayerAuth.class); verify(dataSource, times(7)).saveAuth(authCaptor.capture()); List auths = authCaptor.getAllValues(); - assertThat(auths, hasItem(hasAuthBasicData("bobby", "Bobby", "your@email.com", "123.45.67.89"))); + assertThat(auths, hasItem(hasAuthBasicData("bobby", "Player", "your@email.com", "123.45.67.89"))); assertThat(auths, hasItem(hasAuthLocation(1.05, 2.1, 4.2, "world"))); - assertThat(auths, hasItem(hasAuthBasicData("user", "user", "user@example.org", "34.56.78.90"))); + assertThat(auths, hasItem(hasAuthBasicData("user", "Player", "user@example.org", "34.56.78.90"))); assertThat(auths, hasItem(hasAuthLocation(124.1, 76.3, -127.8, "nether"))); - assertThat(auths, hasItem(hasAuthBasicData("eightfields", "eightFields", "your@email.com", "6.6.6.66"))); + assertThat(auths, hasItem(hasAuthBasicData("eightfields", "Player", "your@email.com", "6.6.6.66"))); assertThat(auths, hasItem(hasAuthLocation(8.8, 17.6, 26.4, "eightworld"))); } diff --git a/src/test/resources/fr/xephi/authme/datasource/flatfile-test.txt b/src/test/resources/fr/xephi/authme/datasource/flatfile-test.txt index da5a13124..d0ac4aa57 100644 --- a/src/test/resources/fr/xephi/authme/datasource/flatfile-test.txt +++ b/src/test/resources/fr/xephi/authme/datasource/flatfile-test.txt @@ -1,7 +1,7 @@ -Bobby:$SHA$11aa0706173d7272$dbba966:123.45.67.89:1449136800:1.05:2.1:4.2:world:your@email.com +bobby:$SHA$11aa0706173d7272$dbba966:123.45.67.89:1449136800:1.05:2.1:4.2:world:your@email.com user:b28c32f624a4eb161d6adc9acb5bfc5b:34.56.78.90:1453242857:124.1:76.3:-127.8:nether:user@example.org -twoFields:hash1234 -threeFields:hash369:33.33.33.33 -fourFields:$hash$4444:4.4.4.4:404040404 -sevenFields:hash7749:5.5.5.55:1414141414:7.7:14.14:21.21 -eightFields:hash8168:6.6.6.66:1234567888:8.8:17.6:26.4:eightworld +twofields:hash1234 +threefields:hash369:33.33.33.33 +fourfields:$hash$4444:4.4.4.4:404040404 +sevenfields:hash7749:5.5.5.55:1414141414:7.7:14.14:21.21 +eightfields:hash8168:6.6.6.66:1234567888:8.8:17.6:26.4:eightworld