mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-09-19 10:21:44 +02:00
Merge remote-tracking branch 'refs/remotes/origin/master' into 745-captcha-login-message
This commit is contained in:
commit
fba2a898b9
@ -1,105 +0,0 @@
|
|||||||
package fr.xephi.authme.settings;
|
|
||||||
|
|
||||||
import com.github.authme.configme.knownproperties.ConfigurationData;
|
|
||||||
import com.github.authme.configme.migration.MigrationService;
|
|
||||||
import com.github.authme.configme.migration.PlainMigrationService;
|
|
||||||
import com.github.authme.configme.properties.Property;
|
|
||||||
import com.github.authme.configme.resource.PropertyResource;
|
|
||||||
import com.github.authme.configme.resource.YamlFileResource;
|
|
||||||
import fr.xephi.authme.TestHelper;
|
|
||||||
import fr.xephi.authme.settings.properties.AuthMeSettingsRetriever;
|
|
||||||
import org.bukkit.configuration.MemorySection;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test for {@link Settings} and the project's config.yml,
|
|
||||||
* verifying that no settings are missing from the file.
|
|
||||||
*/
|
|
||||||
public class ConfigFileConsistencyTest {
|
|
||||||
|
|
||||||
/** The file name of the project's sample config file. */
|
|
||||||
private static final String CONFIG_FILE = "/config.yml";
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldHaveAllConfigs() throws IOException {
|
|
||||||
// given
|
|
||||||
File configFile = TestHelper.getJarFile(CONFIG_FILE);
|
|
||||||
PropertyResource resource = new YamlFileResource(configFile);
|
|
||||||
MigrationService migration = new PlainMigrationService();
|
|
||||||
|
|
||||||
// when
|
|
||||||
boolean result = migration.checkAndMigrate(
|
|
||||||
resource, AuthMeSettingsRetriever.buildConfigurationData().getProperties());
|
|
||||||
|
|
||||||
// then
|
|
||||||
if (result) {
|
|
||||||
Set<String> knownProperties = getAllKnownPropertyPaths();
|
|
||||||
List<String> missingProperties = new ArrayList<>();
|
|
||||||
for (String path : knownProperties) {
|
|
||||||
if (!resource.contains(path)) {
|
|
||||||
missingProperties.add(path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fail("Found missing properties!\n-" + String.join("\n-", missingProperties));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldNotHaveUnknownConfigs() {
|
|
||||||
// given
|
|
||||||
File configFile = TestHelper.getJarFile(CONFIG_FILE);
|
|
||||||
FileConfiguration configuration = YamlConfiguration.loadConfiguration(configFile);
|
|
||||||
Map<String, Object> allReadProperties = configuration.getValues(true);
|
|
||||||
Set<String> knownKeys = getAllKnownPropertyPaths();
|
|
||||||
|
|
||||||
// when
|
|
||||||
List<String> unknownPaths = new ArrayList<>();
|
|
||||||
for (Map.Entry<String, Object> entry : allReadProperties.entrySet()) {
|
|
||||||
// The value being a MemorySection means it's a parent node
|
|
||||||
if (!(entry.getValue() instanceof MemorySection) && !knownKeys.contains(entry.getKey())) {
|
|
||||||
unknownPaths.add(entry.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// then
|
|
||||||
if (!unknownPaths.isEmpty()) {
|
|
||||||
fail("Found " + unknownPaths.size() + " unknown property paths in the project's config.yml: \n- "
|
|
||||||
+ String.join("\n- ", unknownPaths));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldHaveValueCorrespondingToPropertyDefault() {
|
|
||||||
// given
|
|
||||||
File configFile = TestHelper.getJarFile(CONFIG_FILE);
|
|
||||||
PropertyResource resource = new YamlFileResource(configFile);
|
|
||||||
ConfigurationData configurationData = AuthMeSettingsRetriever.buildConfigurationData();
|
|
||||||
|
|
||||||
// when / then
|
|
||||||
for (Property<?> property : configurationData.getProperties()) {
|
|
||||||
assertThat("Default value of '" + property.getPath() + "' in config.yml should be the same as in Property",
|
|
||||||
property.getValue(resource).equals(property.getDefaultValue()), equalTo(true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Set<String> getAllKnownPropertyPaths() {
|
|
||||||
return AuthMeSettingsRetriever.buildConfigurationData()
|
|
||||||
.getProperties().stream()
|
|
||||||
.map(Property::getPath)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,67 +0,0 @@
|
|||||||
package fr.xephi.authme.settings;
|
|
||||||
|
|
||||||
import com.github.authme.configme.knownproperties.ConfigurationData;
|
|
||||||
import com.github.authme.configme.resource.PropertyResource;
|
|
||||||
import com.github.authme.configme.resource.YamlFileResource;
|
|
||||||
import com.google.common.io.Files;
|
|
||||||
import fr.xephi.authme.TestHelper;
|
|
||||||
import fr.xephi.authme.settings.properties.AuthMeSettingsRetriever;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.rules.TemporaryFolder;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.arrayWithSize;
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
|
||||||
import static org.junit.Assert.assertThat;
|
|
||||||
import static org.junit.Assume.assumeThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test for {@link SettingsMigrationService}.
|
|
||||||
*/
|
|
||||||
public class SettingsMigrationServiceTest {
|
|
||||||
|
|
||||||
@Rule
|
|
||||||
public TemporaryFolder testFolderHandler = new TemporaryFolder();
|
|
||||||
|
|
||||||
private File testFolder;
|
|
||||||
private File configTestFile;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ensure that AuthMe regards the JAR's own config.yml as complete.
|
|
||||||
* If something legitimately needs migrating, a test from {@link ConfigFileConsistencyTest} should fail.
|
|
||||||
* If none fails in that class, it means something is wrong with the migration service
|
|
||||||
* as it wants to perform a migration on our up-to-date config.yml.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void shouldNotRewriteJarConfig() throws IOException {
|
|
||||||
// given
|
|
||||||
copyConfigToTestFolder();
|
|
||||||
PropertyResource resource = new YamlFileResource(configTestFile);
|
|
||||||
ConfigurationData configurationData = AuthMeSettingsRetriever.buildConfigurationData();
|
|
||||||
assumeThat(testFolder.listFiles(), arrayWithSize(1));
|
|
||||||
SettingsMigrationService migrationService = new SettingsMigrationService(testFolder);
|
|
||||||
|
|
||||||
// when
|
|
||||||
boolean result = migrationService.checkAndMigrate(resource, configurationData.getProperties());
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertThat(result, equalTo(false));
|
|
||||||
assertThat(testFolder.listFiles(), arrayWithSize(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void copyConfigToTestFolder() throws IOException {
|
|
||||||
testFolder = testFolderHandler.newFolder("migrationtest");
|
|
||||||
|
|
||||||
final File testConfig = testFolderHandler.newFile("migrationtest/config.yml");
|
|
||||||
final File realConfig = TestHelper.getJarFile("/config.yml");
|
|
||||||
|
|
||||||
Files.copy(realConfig, testConfig);
|
|
||||||
if (!testConfig.exists()) {
|
|
||||||
throw new IOException("Could not copy project's config.yml to test folder");
|
|
||||||
}
|
|
||||||
configTestFile = testConfig;
|
|
||||||
}
|
|
||||||
}
|
|
@ -49,15 +49,15 @@ public class FileUtilsTest {
|
|||||||
public void shouldCopyFileFromJar() throws IOException {
|
public void shouldCopyFileFromJar() throws IOException {
|
||||||
// given
|
// given
|
||||||
File folder = temporaryFolder.newFolder();
|
File folder = temporaryFolder.newFolder();
|
||||||
File file = new File(folder, "some/folders/config.yml");
|
File file = new File(folder, "some/folders/welcome.txt");
|
||||||
|
|
||||||
// when
|
// when
|
||||||
boolean result = FileUtils.copyFileFromResource(file, "config.yml");
|
boolean result = FileUtils.copyFileFromResource(file, "welcome.txt");
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(result, equalTo(true));
|
assertThat(result, equalTo(true));
|
||||||
assertThat(file.exists(), equalTo(true));
|
assertThat(file.exists(), equalTo(true));
|
||||||
File configJarFile = TestHelper.getJarFile("/config.yml");
|
File configJarFile = TestHelper.getJarFile("/welcome.txt");
|
||||||
assertThat(file.length(), equalTo(configJarFile.length()));
|
assertThat(file.length(), equalTo(configJarFile.length()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user