public void TemporarySqlLocalDbInstance_Constructor_Creates_Temporary_Instance_With_Specified_Provider_And_Does_Not_Delete_Instance_Files() { // Arrange var mock = new Mock <SqlLocalDbProvider>() { CallBase = true, }; string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); SqlLocalDbProvider provider = mock.Object; bool deleteFiles = false; // Act using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider, deleteFiles)) { // Assert Mock.Get(provider).Verify((p) => p.CreateInstance(instanceName), Times.Once()); Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.AreEqual(deleteFiles, target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: true); }
public void TemporarySqlLocalDbInstance_Create_Creates_Temporary_Instance_With_Random_Name() { string instanceName; // Act using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { // Assert Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); instanceName = target.Instance.Name; Assert.IsTrue(Guid.TryParse(instanceName, out Guid unused), "The random instance name is not a valid GUID."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.IsFalse(target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: true); // Verify that the same random name isn't used again using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { Assert.AreNotEqual(instanceName, target.Instance.Name, "The same random name was used to generate a temporary instance."); } }
public void TemporarySqlLocalDbInstance_Dispose_Does_Not_Throw_If_Instance_Cannot_Be_Stopped_Due_To_Sql_LocalDb_Error() { // Arrange string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); var mock = new Mock <SqlLocalDbProvider>() { CallBase = true, }; // Set up the CreateInstance() method to create an SQL LocalDB // instance but that then throws an exception when stopped. mock.Setup((p) => p.CreateInstance(instanceName)) .Returns( () => { SqlLocalDbApi.CreateInstance(instanceName); return(new SqlLocalDbInstanceThatCannotBeStopped(instanceName)); }) .Verifiable(); ISqlLocalDbProvider provider = mock.Object; // Act using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } // Assert mock.Verify(); // Tidy up as the stop intentionally failed, meaning delete would also have failed SqlLocalDbApi.StopInstance(instanceName); SqlLocalDbApi.DeleteInstance(instanceName); }
public void TestFixtureSetUp() { if (!SqlLocalDbApi.IsLocalDBInstalled()) { throw new Exception("LocalDB is not installed!"); } this.databaseName = "SqlServerClientManagerTests" + Guid.NewGuid().ToString("N"); // Configure dapper to support datetime2 SqlMapper.AddTypeMap(typeof(DateTime), DbType.DateTime2); // Create test instance this.instance = TemporarySqlLocalDbInstance.Create(deleteFiles: true); // Seed test data using (var connection = this.instance.CreateConnection()) { connection.Open(); try { connection.Execute("CREATE DATABASE " + this.databaseName); connection.Execute("USE " + this.databaseName); connection.Execute("CREATE TABLE Clients (ClientId VARCHAR(255) NOT NULL PRIMARY KEY, ClientSecret VARCHAR(MAX) NOT NULL, RedirectUri VARCHAR(255) NOT NULL, Name NVARCHAR(255) NOT NULL, LastUsed DATETIME2, Enabled bit)"); connection.Execute("INSERT INTO Clients (ClientId, ClientSecret, RedirectUri, Name, Enabled) VALUES ('NUnit', '10000:gW7zpVeugKl8IFu7TcpPskcgQjy4185eAwBk9fFlZK6JNd1I45tLyCYtJrzWzE+kVCUP7lMSY8o808EjUgfavBzYU/ZtWypcdCdCJ0BMfMcf8Mk+XIYQCQLiFpt9Rjrf5mAY86NuveUtd1yBdPjxX5neMXEtquNYhu9I6iyzcN4=:Lk2ZkpmTDkNtO/tsB/GskMppdAX2bXehP+ED4oLis0AAv3Q1VeI8KL0SxIIWdxjKH0NJKZ6qniRFkfZKZRS2hS4SB8oyB34u/jyUlmv+RZGZSt9nJ9FYJn1percd/yFA7sSQOpkGljJ6OTwdthe0Bw0A/8qlKHbO2y2M5BFgYHY=', 'http://localhost', 'NUnit Test', 1)"); connection.Execute("INSERT INTO Clients (ClientId, ClientSecret, RedirectUri, Name) VALUES ('NUnit2', '10000:gW7zpVeugKl8IFu7TcpPskcgQjy4185eAwBk9fFlZK6JNd1I45tLyCYtJrzWzE+kVCUP7lMSY8o808EjUgfavBzYU/ZtWypcdCdCJ0BMfMcf8Mk+XIYQCQLiFpt9Rjrf5mAY86NuveUtd1yBdPjxX5neMXEtquNYhu9I6iyzcN4=:Lk2ZkpmTDkNtO/tsB/GskMppdAX2bXehP+ED4oLis0AAv3Q1VeI8KL0SxIIWdxjKH0NJKZ6qniRFkfZKZRS2hS4SB8oyB34u/jyUlmv+RZGZSt9nJ9FYJn1percd/yFA7sSQOpkGljJ6OTwdthe0Bw0A/8qlKHbO2y2M5BFgYHY=', 'http://localhost', 'NUnit2 Test')"); } finally { connection.Close(); } } }
public void TestFixtureSetUp() { var localDb = new SqlLocalDbApiWrapper(); if (!localDb.IsLocalDBInstalled()) { throw new Exception("LocalDB is not installed!"); } this.instance = TemporarySqlLocalDbInstance.Create(deleteFiles: true); // Initialize database var strategy = new DropCreateDatabaseAlways<SentinelContext>(); Database.SetInitializer(strategy); var builder = this.instance.CreateConnectionStringBuilder(); // Update the connection string to specify the name of the database // and its physical location to the current application directory builder.SetInitialCatalogName("SentinelAuth"); builder.SetPhysicalFileName(@".\SentinelAuth.mdf"); this.connectionString = builder.ConnectionString; using (var context = new SentinelContext(this.connectionString)) { context.Database.Initialize(true); } }
public void TemporarySqlLocalDbInstance_Constructor_Creates_Temporary_Instance() { // Arrange string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); // Act using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName)) { // Assert Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.IsFalse(target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: true); }
public SqlServerTests() { _instance = TemporarySqlLocalDbInstance.Create(deleteFiles: true); _connection = _instance.CreateConnection(); _connection.Open(); _database = new Database(_connection); _database.Execute("create database [SqlServerTests]"); }
public void TemporarySqlLocalDbInstance_GetInstanceInfo_Returns_ISqlLocalDbInstanceInfo() { // Arrange using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { // Act ISqlLocalDbInstanceInfo result = target.GetInstanceInfo(); // Assert Assert.IsNotNull(result, "GetInstanceInfo() returned null."); } }
public void TemporarySqlLocalDbInstance_CreateConnectionStringBuilder_Creates_SqlConnectionStringBuilder() { // Arrange using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { // Act SqlConnectionStringBuilder result = target.CreateConnectionStringBuilder(); // Assert Assert.IsNotNull(result, "CreateConnectionStringBuilder() returned null."); } }
public void TemporarySqlLocalDbInstance_CreateConnection_Creates_Connection() { // Arrange using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { // Act using (SqlConnection result = target.CreateConnection()) { // Assert Assert.IsNotNull(result, "CreateConnection() returned null."); } } }
private static void AssertThrowsObjectDisposedException(Action <TemporarySqlLocalDbInstance> action) { // Arrange ISqlLocalDbInstance instance = CreateMockInstance(); using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instance)) { target.Dispose(); // Act action(target); } }
public void TemporarySqlLocalDbInstance_Unshare_Invokes_Wrapped_Instance() { // Arrange ISqlLocalDbInstance instance = CreateMockInstance(); using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instance)) { // Act target.Unshare(); // Assert Mock.Get(instance).Verify((p) => p.Unshare(), Times.Once()); } }
public void TemporarySqlLocalDbInstance_Constructor_Throws_If_Provider_Is_Null() { // Arrange string instanceName = Guid.NewGuid().ToString(); ISqlLocalDbProvider provider = null; // Act and Assert throw ErrorAssert.Throws <ArgumentNullException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } }, "provider"); }
public void TemporarySqlLocalDbInstance_Share_Invokes_Wrapped_Instance() { // Arrange ISqlLocalDbInstance instance = CreateMockInstance(); using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instance)) { string sharedName = Guid.NewGuid().ToString(); // Act target.Share(sharedName); // Assert Mock.Get(instance).Verify((p) => p.Share(sharedName), Times.Once()); } }
public void TemporarySqlLocalDbInstance_Constructor_Throws_If_InstanceName_Is_Null() { // Arrange string instanceName = null; ISqlLocalDbProvider provider = Mock.Of <ISqlLocalDbProvider>(); // Act and Assert throw ErrorAssert.Throws <ArgumentNullException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } }, "instanceName"); }
public void TemporarySqlLocalDbInstance_Create_Creates_Temporary_Instance_With_Random_Name_And_Deletes_If_SqlLocalDbApi_AutomaticallyDeleteInstanceFiles_Is_True() { // Arrange Helpers.InvokeInNewAppDomain( () => { SqlLocalDbApi.AutomaticallyDeleteInstanceFiles = true; SqlLocalDbApi.StopOptions = StopInstanceOptions.NoWait; string instanceName; // Act using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { // Assert Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); instanceName = target.Instance.Name; Guid notUsed; Assert.IsTrue(Guid.TryParse(instanceName, out notUsed), "The random instance name is not a valid GUID."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.IsTrue(target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: false); // Verify that the same random name isn't used again using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create()) { Assert.AreNotEqual(instanceName, target.Instance.Name, "The same random name was used to generate a temporary instance."); } }); }
public void TemporarySqlLocalDbInstance_Constructor_Attempts_To_Delete_Instance_If_Instance_Cannot_Be_Started() { // Arrange string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); var mock = new Mock <SqlLocalDbProvider>() { CallBase = true, }; // Set up the CreateInstance() method to create an SQL LocalDB // instance but that then throws an exception when started. mock.Setup((p) => p.CreateInstance(instanceName)) .Returns( () => { SqlLocalDbApi.CreateInstance(instanceName); return(new SqlLocalDbInstanceThatCannotBeStarted(instanceName)); }) .Verifiable(); ISqlLocalDbProvider provider = mock.Object; bool deleteFiles = false; // Act InvalidOperationException error = ErrorAssert.Throws <InvalidOperationException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider, deleteFiles)) { } }); mock.Verify(); ISqlLocalDbInstanceInfo instanceInfo = SqlLocalDbApi.GetInstanceInfo(instanceName); Assert.IsFalse(instanceInfo.Exists, "The temporary instance was not deleted."); throw error; }
public void TemporarySqlLocalDbInstance_Constructor_Attempts_To_Delete_Instance_If_Instance_Cannot_Be_Started() { // Arrange string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); var mock = new Mock<SqlLocalDbProvider>() { CallBase = true, }; // Set up the CreateInstance() method to create an SQL LocalDB // instance but that then throws an exception when started. mock.Setup((p) => p.CreateInstance(instanceName)) .Returns( () => { SqlLocalDbApi.CreateInstance(instanceName); return new SqlLocalDbInstanceThatCannotBeStarted(instanceName); }) .Verifiable(); ISqlLocalDbProvider provider = mock.Object; bool deleteFiles = false; // Act InvalidOperationException error = ErrorAssert.Throws<InvalidOperationException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider, deleteFiles)) { } }); mock.Verify(); ISqlLocalDbInstanceInfo instanceInfo = SqlLocalDbApi.GetInstanceInfo(instanceName); Assert.IsFalse(instanceInfo.Exists, "The temporary instance was not deleted."); throw error; }
public void TemporarySqlLocalDbInstance_Create_With_DeleteFiles_Parameter_Creates_Temporary_Instance_With_Random_Name_And_Deletes_Files_When_Disposed() { // Arrange Helpers.InvokeInNewAppDomain( () => { // Set the property to false to ensure that the parameter is used to control deletion not the property SqlLocalDbApi.AutomaticallyDeleteInstanceFiles = false; SqlLocalDbApi.StopOptions = StopInstanceOptions.NoWait; string instanceName; bool deleteFiles = true; // Act using (TemporarySqlLocalDbInstance target = TemporarySqlLocalDbInstance.Create(deleteFiles)) { // Assert Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); instanceName = target.Instance.Name; Guid notUsed; Assert.IsTrue(Guid.TryParse(instanceName, out notUsed), "The random instance name is not a valid GUID."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.IsTrue(target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: false); }); }
private static void AssertThrowsObjectDisposedException(Action<TemporarySqlLocalDbInstance> action) { // Arrange ISqlLocalDbInstance instance = CreateMockInstance(); using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instance)) { target.Dispose(); // Act action(target); } }
public void TemporarySqlLocalDbInstance_Dispose_Does_Not_Throw_If_Instance_Cannot_Be_Stopped_Due_To_Sql_LocalDb_Error() { // Arrange string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); var mock = new Mock<SqlLocalDbProvider>() { CallBase = true, }; // Set up the CreateInstance() method to create an SQL LocalDB // instance but that then throws an exception when stopped. mock.Setup((p) => p.CreateInstance(instanceName)) .Returns( () => { SqlLocalDbApi.CreateInstance(instanceName); return new SqlLocalDbInstanceThatCannotBeStopped(instanceName); }) .Verifiable(); ISqlLocalDbProvider provider = mock.Object; // Act using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } // Assert mock.Verify(); // Tidy up as the stop intentionally failed, meaning delete would also have failed SqlLocalDbApi.StopInstance(instanceName); SqlLocalDbApi.DeleteInstance(instanceName); }
public void TemporarySqlLocalDbInstance_Constructor_Throws_If_Provider_Is_Null() { // Arrange string instanceName = Guid.NewGuid().ToString(); ISqlLocalDbProvider provider = null; // Act and Assert throw ErrorAssert.Throws<ArgumentNullException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } }, "provider"); }
public void TemporarySqlLocalDbInstance_Constructor_Throws_If_InstanceName_Is_Null() { // Arrange string instanceName = null; ISqlLocalDbProvider provider = Mock.Of<ISqlLocalDbProvider>(); // Act and Assert throw ErrorAssert.Throws<ArgumentNullException>( () => { using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider)) { } }, "instanceName"); }
public void TemporarySqlLocalDbInstance_Constructor_Creates_Temporary_Instance_With_Specified_Provider_And_Does_Not_Delete_Instance_Files() { // Arrange var mock = new Mock<SqlLocalDbProvider>() { CallBase = true, }; string instanceName = "MyTempInstance" + Guid.NewGuid().ToString(); SqlLocalDbProvider provider = mock.Object; bool deleteFiles = false; // Act using (TemporarySqlLocalDbInstance target = new TemporarySqlLocalDbInstance(instanceName, provider, deleteFiles)) { // Assert Mock.Get(provider).Verify((p) => p.CreateInstance(instanceName), Times.Once()); Assert.IsNotNull(target.Instance, "TemporarySqlLocalDbInstance.Instance is null."); // Check the instance was created AssertExistence(instanceName, exists: true); // The instance is not running if there is no pipe open Assert.IsFalse(string.IsNullOrEmpty(target.Instance.NamedPipe), "The temporary SQL LocalDB instance has not been started."); Assert.AreEqual(deleteFiles, target.DeleteFiles, "TemporarySqlLocalDbInstance.DeleteFiles is incorrect."); Assert.AreEqual(target.Instance.Name, target.Name, "TemporarySqlLocalDbInstance.Name is incorrect."); Assert.AreEqual(target.Instance.NamedPipe, target.NamedPipe, "TemporarySqlLocalDbInstance.NamedPipe is incorrect."); } // The instance should have been deleted AssertExistence(instanceName, exists: false); AssertFileExistence(instanceName, shouldFilesExist: true); }