public void MsSqlDbInstaller_CreatorUserWithoutPasswordIsInvalid()
        {
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = "server",
                DatabaseName      = "DB1",
                DbCreatorUserName = "******",
                DbCreatorPassword = null
            };
            var       installer = CreateInstaller(parameters);
            Exception exception = null;

            // ACTION
            try
            {
                installer.GetConnectionString(parameters);
            }
            catch (Exception e)
            {
                exception = e;
            }

            // ASSERT
            Assert.IsNotNull(exception);
            Assert.IsInstanceOfType(exception, typeof(ArgumentException));
            Assert.AreEqual("Value cannot be null. (Parameter 'Password')", exception.Message);
        }
        public void MsSqlDbInstaller_PartialInstall_ExistingCustomer()
        {
            var database = "Database1";
            var userName = "******";
            var password = "******";

            CleanupServer(database, userName);
            EnsureLogin(userName, password);
            Assert.IsTrue(IsLoginExists(userName));

            // ACTION
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = LocalServer,
                DatabaseName      = database,
                DbCreatorUserName = null,
                DbCreatorPassword = null,
                DbOwnerUserName   = userName,
                DbOwnerPassword   = password
            };
            var installer = CreateInstaller(parameters);

            installer.InstallAsync().GetAwaiter().GetResult();

            // ASSERT
            Assert.IsTrue(IsDatabaseExists(database));
            var integratedUserName = $"{Environment.UserDomainName}\\{Environment.UserName}";

            Assert.IsTrue(IsDbOwner(integratedUserName, database) ||
                          IsDbOwner2(integratedUserName, database));
            Assert.IsFalse(IsDbOwner("Creator1", database) ||
                           IsDbOwner2("Creator1", database));
            Assert.IsTrue(IsDbOwner(userName, database) ||
                          IsDbOwner2(userName, database));
        }
        public void MsSqlDbInstaller_CleanInstall_IntegratedCreatorForSqlCustomer()
        {
            CleanupServer("Database1", "Customer1");
            EnsureCreator("Creator1", "CreatorPassword1");

            // ACTION
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = LocalServer,
                DatabaseName      = "Database1",
                DbCreatorUserName = null,
                DbCreatorPassword = null,
                DbOwnerUserName   = "******",
                DbOwnerPassword   = "******"
            };
            var installer = CreateInstaller(parameters);

            installer.InstallAsync().GetAwaiter().GetResult();

            // ASSERT
            Assert.IsTrue(IsDatabaseExists("Database1"));
            var integratedUserName = $"{Environment.UserDomainName}\\{Environment.UserName}";

            Assert.IsTrue(IsDbOwner(integratedUserName, "Database1") ||
                          IsDbOwner2(integratedUserName, "Database1"));
            Assert.IsFalse(IsDbOwner("Creator1", "Database1") ||
                           IsDbOwner2("Creator1", "Database1"));
            Assert.IsTrue(IsDbOwner("Customer1", "Database1") ||
                          IsDbOwner2("Customer1", "Database1"));
            var status         = GetInstallationStatus(parameters);
            var integratedUser = $"{Environment.UserDomainName}\\{Environment.UserName}";

            AssertInstallationStatus(true, integratedUser, false, true, null, true,
                                     status);
        }
Пример #4
0
        }                                                                                                  //TODO:~ UNDELETABLE

        public MsSqlDataProvider(IOptions <DataOptions> dataOptions, IOptions <ConnectionStringOptions> connectionOptions,
                                 IOptions <MsSqlDatabaseInstallationOptions> dbInstallerOptions, MsSqlDatabaseInstaller databaseInstaller,
                                 IDataInstaller dataInstaller,
                                 ILogger <MsSqlDataProvider> logger)
        {
            DataInstaller       = dataInstaller ?? throw new ArgumentNullException(nameof(dataInstaller));
            DataOptions         = dataOptions.Value;
            _dbInstallerOptions = dbInstallerOptions.Value;
            _databaseInstaller  = databaseInstaller;
            ConnectionStrings   = connectionOptions;
            _logger             = logger;
        }
        public void MsSqlDbInstaller_ConnectionString_LocalServerInstance()
        {
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server       = LocalServer,
                DatabaseName = "DB1"
            };
            var installer = CreateInstaller(parameters);

            // ACTION
            var connectionString = installer.GetConnectionString(parameters);

            // ASSERT
            Assert.AreEqual($"Data Source={LocalServer};Initial Catalog=DB1;Integrated Security=True",
                            connectionString);
        }
        public void MsSqlDbInstaller_ConnectionStrings(string server, string user, string password, string result)
        {
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = server,
                DatabaseName      = "DB1",
                DbCreatorUserName = user,
                DbCreatorPassword = password
            };
            var installer = CreateInstaller(parameters);

            // ACTION
            var connectionString = installer.GetConnectionString(parameters);

            // ASSERT
            Assert.AreEqual(result, connectionString);
        }
        public void MsSqlDbInstaller_PartialInstall_SecondInstall()
        {
            var database = "Database1";
            var userName = "******";
            var password = "******";

            CleanupServer(database, userName);
            EnsureLogin(userName, password);
            var connectionString = GetConnectionStringFor(database);
            var installer        = CreateInstaller();

            installer.CreateDatabaseAsync(database, SystemConnectionString).ConfigureAwait(false).GetAwaiter()
            .GetResult();
            installer.CreateUserAsync(userName, connectionString).ConfigureAwait(false).GetAwaiter().GetResult();
            installer.AddDbOwnerRoleAsync(userName, connectionString).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.IsTrue(IsLoginExists(userName));
            Assert.IsTrue(IsDatabaseExists(database));
            Assert.IsTrue(IsDbOwner(userName, database));

            // ACTION
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = LocalServer,
                DatabaseName      = database,
                DbCreatorUserName = null,
                DbCreatorPassword = null,
                DbOwnerUserName   = userName,
                DbOwnerPassword   = password
            };

            installer = CreateInstaller(parameters);
            installer.InstallAsync().GetAwaiter().GetResult();

            // ASSERT
            Assert.IsTrue(IsDatabaseExists(database));
            var integratedUserName = $"{Environment.UserDomainName}\\{Environment.UserName}";

            Assert.IsTrue(IsDbOwner(integratedUserName, database) ||
                          IsDbOwner2(integratedUserName, database));
            Assert.IsTrue(IsDbOwner(userName, database) ||
                          IsDbOwner2(userName, database));
        }
        public void MsSqlDbInstaller_PartialInstall_ExistingCustomer_Disabled()
        {
            var database = "Database1";
            var userName = "******";
            var password = "******";

            CleanupServer(database, userName);
            EnsureLogin(userName, password);
            DisableLogin(userName);
            Assert.IsTrue(IsLoginExists(userName));

            // ACTION
            var parameters = new MsSqlDatabaseInstallationOptions
            {
                Server            = LocalServer,
                DatabaseName      = database,
                DbCreatorUserName = null,
                DbCreatorPassword = null,
                DbOwnerUserName   = userName,
                DbOwnerPassword   = password
            };
            var       installer = CreateInstaller(parameters);
            Exception exception = null;

            try
            {
                installer.InstallAsync().GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                exception = e;
            }

            // ASSERT
            Assert.IsFalse(IsDatabaseExists(database));
            Assert.IsNotNull(exception);
            Assert.IsInstanceOfType(exception, typeof(DbCreationException));
            Assert.AreEqual("User is disabled on this server.", exception.Message);
        }
        public void MsSqlDbInstaller_EmptyArgsIsInvalid()
        {
            var parameters = new MsSqlDatabaseInstallationOptions();
            var installer  = CreateInstaller(parameters);

            Exception exception = null;

            // ACTION
            try
            {
                installer.ValidateParameters(parameters);
            }
            catch (Exception e)
            {
                exception = e;
            }

            // ASSERT
            Assert.IsNotNull(exception);
            Assert.IsInstanceOfType(exception, typeof(ArgumentException));
            Assert.AreEqual("ExpectedDatabaseName cannot be null or empty.", exception.Message);
        }
 private static MsSqlDatabaseInstaller CreateInstaller(MsSqlDatabaseInstallationOptions options = null)
 {
     return(new MsSqlDatabaseInstaller(Options.Create(options ?? new MsSqlDatabaseInstallationOptions()),
                                       NullLoggerFactory.Instance.CreateLogger <MsSqlDatabaseInstaller>()));
 }