UnitTests/ConfigurationTest.cs
namespace SandbankDatabase;
[TestClass]
public partial class ConfigurationTest
{
[TestInitialize]
public void Initialise()
{
FileController.Initialise();
// Do this on start and on finish so not to have any interference from (or to) other tests.
FileController.DeleteFile( "sandbank_config.ini" );
}
[TestCleanup]
public void Cleanup()
{
Sandbank.Shutdown().GetAwaiter().GetResult();
FileController.DeleteFile( "sandbank_config.ini" );
}
[TestMethod]
public void TestConfigFilesGetsCreatedAutomatically()
{
Assert.IsFalse( FileController.FileExists( "sandbank_config.ini", "/" ) );
InitialisationController.Initialise();
Assert.IsTrue( FileController.FileExists( "sandbank_config.ini", "/" ) );
}
[TestMethod]
public void TestConfigFileUsedIfAlreadyExists()
{
var defaultFile = ConfigController.GetDefaultConfigFileContents();
defaultFile = defaultFile.Replace( "BACKUPS_TO_KEEP=10", "BACKUPS_TO_KEEP=123" );
FileController.WriteFile( "sandbank_config.ini", defaultFile );
InitialisationController.Initialise();
Assert.AreEqual( 123, ConfigController.BACKUPS_TO_KEEP );
}
[TestMethod]
public void TestEnumsAreParsedCorrectly()
{
var defaultFile = ConfigController.GetDefaultConfigFileContents();
defaultFile = defaultFile.Replace( "ON_ENDPOINT_ERROR_BEHAVIOUR=LogWarning", "ON_ENDPOINT_ERROR_BEHAVIOUR=DoNothing" );
defaultFile = defaultFile.Replace( "BACKUP_FREQUENCY=Hourly", "BACKUP_FREQUENCY=Daily" );
FileController.WriteFile( "sandbank_config.ini", defaultFile );
InitialisationController.Initialise();
Assert.AreEqual( BackupFrequency.Daily, ConfigController.BACKUP_FREQUENCY );
Assert.AreEqual( OnEndpointErrorBehaviour.DoNothing, ConfigController.ON_ENDPOINT_ERROR_BEHAVIOUR );
}
[TestMethod]
public void TestThrowsErrorIfKeyMissing()
{
var defaultFile = ConfigController.GetDefaultConfigFileContents();
defaultFile = defaultFile.Replace( "BACKUPS_TO_KEEP=10", "BACKUPS_TO_KEE=10" );
FileController.WriteFile( "sandbank_config.ini", defaultFile );
// This will throw an exception and the database won't be initialised.
InitialisationController.Initialise();
Assert.AreEqual( InitialisationController.CurrentDatabaseState, DatabaseState.Uninitialised );
}
}