mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-11-23 10:45:23 +01: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 {
|
||||
// given
|
||||
File folder = temporaryFolder.newFolder();
|
||||
File file = new File(folder, "some/folders/config.yml");
|
||||
File file = new File(folder, "some/folders/welcome.txt");
|
||||
|
||||
// when
|
||||
boolean result = FileUtils.copyFileFromResource(file, "config.yml");
|
||||
boolean result = FileUtils.copyFileFromResource(file, "welcome.txt");
|
||||
|
||||
// then
|
||||
assertThat(result, 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()));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user