public void FailConnectThenSucceed()
{
var dbName = TestUtil.GetUniqueIdentifier(nameof(FailConnectThenSucceed));
using (var conn1 = OpenConnection())
{
conn1.ExecuteNonQuery($"DROP DATABASE IF EXISTS \"{dbName}\"");
try
{
var connString = new NpgsqlConnectionStringBuilder(ConnectionString)
{
Database = dbName,
Pooling = false
}.ToString();
using (var conn2 = new NpgsqlConnection(connString))
{
Assert.That(() => conn2.Open(),
Throws.Exception.TypeOf <PostgresException>()
.With.Property(nameof(PostgresException.SqlState)).EqualTo("3D000") // database doesn't exist
);
Assert.That(conn2.FullState, Is.EqualTo(ConnectionState.Closed));
conn1.ExecuteNonQuery($"CREATE DATABASE \"{dbName}\" TEMPLATE template0");
conn2.Open();
conn2.Close();
}
}
finally
{
//conn1.ExecuteNonQuery($"DROP DATABASE IF EXISTS \"{dbName}\"");
}
}
}