Beispiel #1
0
        public void SqlLocalDbProvider_CreateInstance_Creates_Instance()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();

            // Act
            SqlLocalDbInstance result = target.CreateInstance();

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.IsNotNull(result.Name, "SqlLocalDbInstance.Name is null.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsNotNull(info, "GetInstanceInfo() returned null.");
                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Assert.AreEqual(
                    new Version(target.Version).Major,
                    info.LocalDbVersion.Major,
                    "ISqlLocalDbInstanceInfo.LocalDbVersion is incorrect.");

                Assert.IsTrue(Guid.TryParse(result.Name, out Guid unused), "SqlLocalDbInstance.Name is not a valid GUID.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }
Beispiel #2
0
        public void SqlLocalDbProvider_CreateInstance_Creates_Instance_With_Specified_Name()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target       = new SqlLocalDbProvider();
            string             instanceName = Guid.NewGuid().ToString();

            // Act
            SqlLocalDbInstance result = target.CreateInstance(instanceName);

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsNotNull(info, "GetInstanceInfo() returned null.");
                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Assert.AreEqual(
                    new Version(target.Version).Major,
                    info.LocalDbVersion.Major,
                    "ISqlLocalDbInstanceInfo.LocalDbVersion is incorrect.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }
Beispiel #3
0
        public void SqlLocalDbProvider_As_ISqlLocalDbFactory_CreateInstance_Creates_Instance()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            ISqlLocalDbProvider target = new SqlLocalDbProvider();
            string instanceName        = Guid.NewGuid().ToString();

            // Act
            ISqlLocalDbInstance result = target.CreateInstance(instanceName);

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Assert.IsTrue(Guid.TryParse(result.Name, out Guid unused), "SqlLocalDbInstance.Name is not a valid GUID.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }
Beispiel #4
0
        public void SqlLocalDbProvider_CreateInstance_Specifies_No_Version_If_Default_Instance_Name_Specified_2014_2016()
        {
            // Arrange
            string instanceName = "MSSQLLocalDB";
            string version      = "1.2.3.4";

            Mock <ISqlLocalDbInstanceInfo> mockInfo = new Mock <ISqlLocalDbInstanceInfo>();

            mockInfo
            .SetupSequence((p) => p.Exists)
            .Returns(false)
            .Returns(true);

            Mock <ISqlLocalDbApi> mock = new Mock <ISqlLocalDbApi>();

            mock.Setup((p) => p.CreateInstance(instanceName, string.Empty))
            .Verifiable();

            mock.Setup((p) => p.GetInstanceInfo(instanceName))
            .Returns(mockInfo.Object)
            .Verifiable();

            ISqlLocalDbApi localDB = mock.Object;

            SqlLocalDbProvider target = new SqlLocalDbProvider(localDB)
            {
                Version = version,
            };

            // Act
            target.CreateInstance(instanceName);

            // Assert
            mock.Verify();
        }
        public void SqlLocalDbProvider_As_ISqlLocalDbFactory_CreateInstance_Creates_Instance()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            ISqlLocalDbProvider target = new SqlLocalDbProvider();
            string instanceName = Guid.NewGuid().ToString();

            // Act
            ISqlLocalDbInstance result = target.CreateInstance(instanceName);

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Guid guid;
                Assert.IsTrue(Guid.TryParse(result.Name, out guid), "SqlLocalDbInstance.Name is not a valid GUID.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }
Beispiel #6
0
        public void SqlLocalDbProvider_CreateInstance_Throws_If_No_Instance_Info_From_Api()
        {
            // Arrange
            ISqlLocalDbApi localDB = Mock.Of <ISqlLocalDbApi>();

            SqlLocalDbProvider target       = new SqlLocalDbProvider(localDB);
            string             instanceName = Guid.NewGuid().ToString();

            // Act and Assert
            throw ErrorAssert.Throws <InvalidOperationException>(
                      () => target.CreateInstance(instanceName));
        }
Beispiel #7
0
        public void SqlLocalDbProvider_GetInstances_Returns_Installed_Instances()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();

            // Act
            IList <ISqlLocalDbInstanceInfo> result = target.GetInstances();

            int initialCount = result.Count;

            // Assert
            Assert.IsNotNull(result, "GetInstances() returned null.");
            Assert.IsTrue(result.Count > 0, "No instances were returned by GetInstances().");
            CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");

            string instanceName = Guid.NewGuid().ToString();

            target.CreateInstance(instanceName);

            try
            {
                result = target.GetInstances();

                // Assert
                Assert.IsNotNull(result, "GetInstances() returned null.");
                Assert.AreEqual(initialCount + 1, result.Count, "An incorrect number instances were returned by GetInstances().");
                CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");
                Assert.IsTrue(result.Where((p) => p.Name == instanceName).Any(), "The new instance was not returned in the created set of instances.");
            }
            finally
            {
                SqlLocalDbApi.DeleteInstance(instanceName);
            }

            result = target.GetInstances();

            // Assert
            Assert.IsNotNull(result, "GetInstances() returned null.");
            Assert.AreEqual(initialCount, result.Count, "An incorrect number instances were returned by GetInstances().");
            CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");
        }
Beispiel #8
0
        public void SqlLocalDbProvider_CreateInstance_Throws_If_Instance_Already_Exists()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target       = new SqlLocalDbProvider();
            string             instanceName = Guid.NewGuid().ToString();

            SqlLocalDbApi.CreateInstance(instanceName);

            try
            {
                // Act and Assert
                throw ErrorAssert.Throws <InvalidOperationException>(
                          () => target.CreateInstance(instanceName));
            }
            finally
            {
                SqlLocalDbApi.DeleteInstance(instanceName);
            }
        }
Beispiel #9
0
        public void SqlLocalDbProvider_CreateInstance_Uses_Specified_Version_If_Overridden()
        {
            // Arrange
            string instanceName  = Guid.NewGuid().ToString();
            string latestVersion = "2.3.4.5";
            string version       = "1.2.3.4";

            Mock <ISqlLocalDbInstanceInfo> mockInfo = new Mock <ISqlLocalDbInstanceInfo>();

            mockInfo
            .SetupSequence((p) => p.Exists)
            .Returns(false)
            .Returns(true);

            Mock <ISqlLocalDbApi> mock = new Mock <ISqlLocalDbApi>();

            mock.Setup((p) => p.LatestVersion)
            .Returns(latestVersion);

            mock.Setup((p) => p.CreateInstance(instanceName, version))
            .Verifiable();

            mock.Setup((p) => p.GetInstanceInfo(instanceName))
            .Returns(mockInfo.Object)
            .Verifiable();

            ISqlLocalDbApi localDB = mock.Object;

            SqlLocalDbProvider target = new SqlLocalDbProvider(localDB)
            {
                Version = version,
            };

            // Act
            target.CreateInstance(instanceName);

            // Assert
            mock.Verify();
        }
Beispiel #10
0
        internal static void Main(string[] args)
        {
            PrintBanner();

            ISqlLocalDbApi localDB = new SqlLocalDbApiWrapper();

            if (!localDB.IsLocalDBInstalled())
            {
                Console.WriteLine(SR.SqlLocalDbApi_NotInstalledFormat, Environment.MachineName);
                return;
            }

            if (args?.Length == 1 && string.Equals(args[0], "/deleteuserinstances", StringComparison.OrdinalIgnoreCase))
            {
                SqlLocalDbApi.DeleteUserInstances(deleteFiles: true);
            }

            ISqlLocalDbProvider provider = new SqlLocalDbProvider();

            IList <ISqlLocalDbVersionInfo> versions = provider.GetVersions();

            Console.WriteLine(Strings.Program_VersionsListHeader);
            Console.WriteLine();

            foreach (ISqlLocalDbVersionInfo version in versions)
            {
                Console.WriteLine(version.Name);
            }

            Console.WriteLine();

            IList <ISqlLocalDbInstanceInfo> instances = provider.GetInstances();

            Console.WriteLine(Strings.Program_InstancesListHeader);
            Console.WriteLine();

            foreach (ISqlLocalDbInstanceInfo instanceInfo in instances)
            {
                Console.WriteLine(instanceInfo.Name);
            }

            Console.WriteLine();

            string instanceName = Guid.NewGuid().ToString();

            ISqlLocalDbInstance instance = provider.CreateInstance(instanceName);

            instance.Start();

            try
            {
                if (IsCurrentUserAdmin())
                {
                    instance.Share(Guid.NewGuid().ToString());
                }

                try
                {
                    using (SqlConnection connection = instance.CreateConnection())
                    {
                        connection.Open();

                        try
                        {
                            using (SqlCommand command = new SqlCommand("create database [MyDatabase]", connection))
                            {
                                command.ExecuteNonQuery();
                            }

                            using (SqlCommand command = new SqlCommand("drop database [MyDatabase]", connection))
                            {
                                command.ExecuteNonQuery();
                            }
                        }
                        finally
                        {
                            connection.Close();
                        }
                    }
                }
                finally
                {
                    if (IsCurrentUserAdmin())
                    {
                        instance.Unshare();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                instance.Stop();
                localDB.DeleteInstance(instance.Name);
            }

            Console.WriteLine();
            Console.Write(Strings.Program_ExitPrompt);
            Console.ReadKey();
        }
        public void SqlLocalDbProvider_CreateInstance_Creates_Instance_With_Specified_Name()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();
            string instanceName = Guid.NewGuid().ToString();

            // Act
            SqlLocalDbInstance result = target.CreateInstance(instanceName);

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.AreEqual(instanceName, result.Name, "SqlLocalDbInstance.Name is incorrect.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsNotNull(info, "GetInstanceInfo() returned null.");
                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Assert.AreEqual(
                    new Version(target.Version),
                    new Version(info.LocalDbVersion.Major, info.LocalDbVersion.Minor),
                    "ISqlLocalDbInstanceInfo.LocalDbVersion is incorrect.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }
Beispiel #12
0
        internal static void Main(string[] args)
        {
            PrintBanner();

            ISqlLocalDbApi localDB = new SqlLocalDbApiWrapper();

            if (!localDB.IsLocalDBInstalled())
            {
                Console.WriteLine(SR.SqlLocalDbApi_NotInstalledFormat, Environment.MachineName);
                return;
            }

            if (args != null &&
                args.Length == 1 &&
                string.Equals(args[0], "/deleteuserinstances", StringComparison.OrdinalIgnoreCase))
            {
                SqlLocalDbApi.DeleteUserInstances(deleteFiles: true);
            }

            ISqlLocalDbProvider provider = new SqlLocalDbProvider();

            IList<ISqlLocalDbVersionInfo> versions = provider.GetVersions();

            Console.WriteLine(Strings.Program_VersionsListHeader);
            Console.WriteLine();

            foreach (ISqlLocalDbVersionInfo version in versions)
            {
                Console.WriteLine(version.Name);
            }

            Console.WriteLine();

            IList<ISqlLocalDbInstanceInfo> instances = provider.GetInstances();

            Console.WriteLine(Strings.Program_InstancesListHeader);
            Console.WriteLine();

            foreach (ISqlLocalDbInstanceInfo instanceInfo in instances)
            {
                Console.WriteLine(instanceInfo.Name);
            }

            Console.WriteLine();

            string instanceName = Guid.NewGuid().ToString();

            ISqlLocalDbInstance instance = provider.CreateInstance(instanceName);

            instance.Start();

            try
            {
                if (IsCurrentUserAdmin())
                {
                    instance.Share(Guid.NewGuid().ToString());
                }

                try
                {
                    using (SqlConnection connection = instance.CreateConnection())
                    {
                        connection.Open();

                        try
                        {
                            using (SqlCommand command = new SqlCommand("create database [MyDatabase]", connection))
                            {
                                command.ExecuteNonQuery();
                            }

                            using (SqlCommand command = new SqlCommand("drop database [MyDatabase]", connection))
                            {
                                command.ExecuteNonQuery();
                            }
                        }
                        finally
                        {
                            connection.Close();
                        }
                    }
                }
                finally
                {
                    if (IsCurrentUserAdmin())
                    {
                        instance.Unshare();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                instance.Stop();
                localDB.DeleteInstance(instance.Name);
            }

            Console.WriteLine();
            Console.Write(Strings.Program_ExitPrompt);
            Console.ReadKey();
        }
        public void SqlLocalDbProvider_GetInstances_Returns_Installed_Instances()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();

            // Act
            IList<ISqlLocalDbInstanceInfo> result = target.GetInstances();

            int initialCount = result.Count;

            // Assert
            Assert.IsNotNull(result, "GetInstances() returned null.");
            Assert.IsTrue(result.Count > 0, "No instances were returned by GetInstances().");
            CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");

            string instanceName = Guid.NewGuid().ToString();
            target.CreateInstance(instanceName);

            try
            {
                result = target.GetInstances();

                // Assert
                Assert.IsNotNull(result, "GetInstances() returned null.");
                Assert.AreEqual(initialCount + 1, result.Count, "An incorrect number instances were returned by GetInstances().");
                CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");
                Assert.IsTrue(result.Where((p) => p.Name == instanceName).Any(), "The new instance was not returned in the created set of instances.");
            }
            finally
            {
                SqlLocalDbApi.DeleteInstance(instanceName);
            }

            result = target.GetInstances();

            // Assert
            Assert.IsNotNull(result, "GetInstances() returned null.");
            Assert.AreEqual(initialCount, result.Count, "An incorrect number instances were returned by GetInstances().");
            CollectionAssert.AllItemsAreNotNull(result.ToList(), "GetInstances() returned a null instance.");
        }
        public void SqlLocalDbProvider_CreateInstance_Uses_Specified_Version_If_Overridden()
        {
            // Arrange
            string instanceName = Guid.NewGuid().ToString();
            string latestVersion = "2.3.4.5";
            string version = "1.2.3.4";

            Mock<ISqlLocalDbInstanceInfo> mockInfo = new Mock<ISqlLocalDbInstanceInfo>();

            mockInfo
                .SetupSequence((p) => p.Exists)
                .Returns(false)
                .Returns(true);

            Mock<ISqlLocalDbApi> mock = new Mock<ISqlLocalDbApi>();

            mock.Setup((p) => p.LatestVersion)
                .Returns(latestVersion);

            mock.Setup((p) => p.CreateInstance(instanceName, version))
                .Verifiable();

            mock.Setup((p) => p.GetInstanceInfo(instanceName))
                .Returns(mockInfo.Object)
                .Verifiable();

            ISqlLocalDbApi localDB = mock.Object;

            SqlLocalDbProvider target = new SqlLocalDbProvider(localDB);
            target.Version = version;

            // Act
            target.CreateInstance(instanceName);

            // Assert
            mock.Verify();
        }
        public void SqlLocalDbProvider_CreateInstance_Throws_If_No_Instance_Info_From_Api()
        {
            // Arrange
            ISqlLocalDbApi localDB = Mock.Of<ISqlLocalDbApi>();

            SqlLocalDbProvider target = new SqlLocalDbProvider(localDB);
            string instanceName = Guid.NewGuid().ToString();

            // Act and Assert
            throw ErrorAssert.Throws<InvalidOperationException>(
                () => target.CreateInstance(instanceName));
        }
        public void SqlLocalDbProvider_CreateInstance_Throws_If_Instance_Already_Exists()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();
            string instanceName = Guid.NewGuid().ToString();

            SqlLocalDbApi.CreateInstance(instanceName);

            try
            {
                // Act and Assert
                throw ErrorAssert.Throws<InvalidOperationException>(
                    () => target.CreateInstance(instanceName));
            }
            finally
            {
                SqlLocalDbApi.DeleteInstance(instanceName);
            }
        }
        public void SqlLocalDbProvider_CreateInstance_Specifies_No_Version_If_Default_Instance_Name_Specified_2014()
        {
            // Arrange
            string instanceName = "MSSQLLocalDB";
            string version = "1.2.3.4";

            Mock<ISqlLocalDbInstanceInfo> mockInfo = new Mock<ISqlLocalDbInstanceInfo>();

            mockInfo
                .SetupSequence((p) => p.Exists)
                .Returns(false)
                .Returns(true);

            Mock<ISqlLocalDbApi> mock = new Mock<ISqlLocalDbApi>();

            mock.Setup((p) => p.CreateInstance(instanceName, string.Empty))
                .Verifiable();

            mock.Setup((p) => p.GetInstanceInfo(instanceName))
                .Returns(mockInfo.Object)
                .Verifiable();

            ISqlLocalDbApi localDB = mock.Object;

            SqlLocalDbProvider target = new SqlLocalDbProvider(localDB);
            target.Version = version;

            // Act
            target.CreateInstance(instanceName);

            // Assert
            mock.Verify();
        }
 private void SetupLocalDbDatabase()
 {
     var localDbProvider = new SqlLocalDbProvider();
     var localInstance = localDbProvider.CreateInstance(DatabaseName); // instance name = db name, the api will always use the latest version
     localInstance.Start();
     this.SetupMsSqlDatabase(localInstance.CreateConnectionStringBuilder().ConnectionString);
 }
        public void SqlLocalDbProvider_CreateInstance_Creates_Instance()
        {
            // Arrange
            Helpers.EnsureLocalDBInstalled();

            SqlLocalDbProvider target = new SqlLocalDbProvider();

            // Act
            SqlLocalDbInstance result = target.CreateInstance();

            // Assert
            Assert.IsNotNull(result, "CreateInstance() returned null.");
            Assert.IsNotNull(result.Name, "SqlLocalDbInstance.Name is null.");

            try
            {
                ISqlLocalDbInstanceInfo info = result.GetInstanceInfo();

                Assert.IsNotNull(info, "GetInstanceInfo() returned null.");
                Assert.IsTrue(info.Exists, "ISqlLocalDbInstanceInfo.Exists is incorrect.");
                Assert.IsFalse(info.IsRunning, "ISqlLocalDbInstanceInfo.IsRunning is incorrect.");

                Assert.AreEqual(
                    new Version(target.Version),
                    new Version(info.LocalDbVersion.Major, info.LocalDbVersion.Minor),
                    "ISqlLocalDbInstanceInfo.LocalDbVersion is incorrect.");

                Guid guid;
                Assert.IsTrue(Guid.TryParse(result.Name, out guid), "SqlLocalDbInstance.Name is not a valid GUID.");
            }
            finally
            {
                SqlLocalDbInstance.Delete(result);
            }
        }