public void Validate()
{
if (string.IsNullOrWhiteSpace(ConnectionString))
{
throw new ValidationArgException("Connection string is required for deployment.");
}
if (UseWindowsLogin && !HasLoginName)
{
throw new ValidationArgException("Login name is required when UseWindowsLogin is specified.");
}
if (HasLoginPassword && !HasLoginName)
{
throw new ValidationArgException("Login name is required when LoginPassword is specified.");
}
if (HasLoginName && !UseWindowsLogin && !HasLoginPassword)
{
throw new ValidationArgException("LoginPassword is required when creating a login and not using Windows login.");
}
if (UseWindowsLogin && HasLoginPassword)
{
throw new ValidationArgException("LoginPassword cannot be specified when using Windows login.");
}
if (HasDatabaseUserName && !HasLoginName)
{
throw new ValidationArgException("LoginName is required when creating database user.");
}
}
}
public void CorrectlyAcceptsValidArguments() { var sut = new DeployArgs { ConnectionString = @"Server = (localdb)\mssqllocaldb; Initial Catalog = SomeTestDb; Integrated Security = true; Application Name = Galen.CI.Azure.Sql.Sharding.App.Tests; " }; // should not throw exception // connection string by itself is valid sut.Validate(); // should not throw exception // connection string w/both a login name and password is valid when not using Windows login sut.LoginName = "MySqlLogin"; sut.LoginPassword = "******"; sut.Validate(); // should not throw exception // connection string w/login name and no password is valid when using Windows login sut.LoginPassword = null; sut.UseWindowsLogin = true; sut.Validate(); // should not throw exception // connection string w/database user name is valid when login name is provided with no password and using Windows login sut.DatabaseUserName = "******"; sut.Validate(); // should not throw exception // connection string w/database user name is valid when login name and password are provided and not using Windows login sut.LoginPassword = "******"; sut.UseWindowsLogin = false; sut.Validate(); }