public void SetPropertyInvalidFormat()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            Should.Throw<ArgumentException>(() => packageDeployer.SetProperty("AllowDropBlockingAssemblies", "ARandomString"));
        }
        public void SetProperty_SqlCommandVariableValues_ShouldThrowException()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Assert
            Should.Throw <ArgumentException>(() => packageDeployer.SetDeployProperty("SqlCommandVariableValues=var1,var2"));
        }
Пример #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 public DeploymentConfiguration()
 {
     ProductConfigurationSource = new ProductConfigurationSource();
     PackageConfigurationSource = new PackageConfigurationSource();
     DeploymentStrategySource   = new DeploymentStrategySource();
     TransactionSource          = new DeploymentTransactionSource();
     PackageDeployer            = new PackageDeployer();
     PackageDiscoverer          = new PackageDiscoverer();
 }
        public void DeployNoAuthentication()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            Should.Throw<InvalidOperationException>(() => packageDeployer.Deploy(packagePath, "TestDatabase"));
        }
        public void SetPropertyInvalidFormat()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            Should.Throw <ArgumentException>(() => packageDeployer.SetProperty("AllowDropBlockingAssemblies", "ARandomString"));
        }
        public void DeployPackageDoesNotExist()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);
            packageDeployer.UseTargetServer("localhost");
            packageDeployer.UseWindowsAuthentication();

            // Act
            Should.Throw<ArgumentException>(() => packageDeployer.Deploy(new FileInfo("does-not-exist.dacpac"), "TestDatabase"));
        }
        public void SetPropertyExcludeObjectTypes()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.SetProperty("ExcludeObjectTypes", "Contracts,Endpoints");

            // Assert
            packageDeployer.DeployOptions.ExcludeObjectTypes.ShouldBe(new ObjectType[] { ObjectType.Contracts, ObjectType.Endpoints });
        }
        public void SetPropertyDoNotDropObjectTypes()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.SetProperty("DoNotDropObjectTypes", "Aggregates,Assemblies");

            // Assert
            packageDeployer.DeployOptions.DoNotDropObjectTypes.ShouldBe(new ObjectType[] { ObjectType.Aggregates, ObjectType.Assemblies });
        }
        public void SetPropertySimpleValue()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.SetProperty("AllowDropBlockingAssemblies", "true");

            // Assert
            packageDeployer.DeployOptions.AllowDropBlockingAssemblies.ShouldBeTrue();
        }
        public void SetSqlCmdVariableNoValue()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            Should.Throw<ArgumentException>(() => packageDeployer.SetSqlCmdVariable("MySqlCmdVariable", string.Empty));

            // Assert
            packageDeployer.DeployOptions.SqlCommandVariableValues.ContainsKey("MySqlCmdVariable").ShouldBeFalse();
        }
        public void UseWindowsAuthentication()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.UseWindowsAuthentication();

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeTrue();
        }
        public void SetPropertyDatabaseSpecificationInvalidEdition()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            Should.Throw<ArgumentException>(() => packageDeployer.SetProperty("DatabaseSpecification", "MyFancyEdition;1024;P15"));

            // Assert
            packageDeployer.DeployOptions.DatabaseSpecification.Edition.ShouldBe(DacAzureEdition.Default);
            packageDeployer.DeployOptions.DatabaseSpecification.MaximumSize.ShouldBe(default);
        public void SetSqlCmdVariable()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.SetSqlCmdVariable("MySqlCmdVariable", "SomeValue");

            // Assert
            packageDeployer.DeployOptions.SqlCommandVariableValues.ContainsKey("MySqlCmdVariable").ShouldBeTrue();
            packageDeployer.DeployOptions.SqlCommandVariableValues["MySqlCmdVariable"].ShouldBe("SomeValue");
        }
        public void UseTargetServerAndPort()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.UseTargetServerAndPort("localhost", 1432);

            // Assert
            packageDeployer.ConnectionStringBuilder.DataSource.ShouldNotBeNull();
            packageDeployer.ConnectionStringBuilder.DataSource.ShouldBe("localhost,1432");
        }
        public void LoadPackageFileDoesNotExist()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = "SomeDummyFile.dacpac";

            // Act
            Should.Throw <ArgumentException>(() => packageDeployer.LoadPackage(new FileInfo(packagePath)));

            // Assert
            packageDeployer.Package.ShouldBeNull();
        }
        public void DeployNoPackageLoaded()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            Should.Throw <InvalidOperationException>(() => packageDeployer.Deploy("TestDatabase"));

            // Assert
            // Should throw
        }
        public void LoadPackage()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);

            // Assert
            packageDeployer.Package.ShouldNotBeNull();
        }
        public void UseTargetServerWithoutLoadPackage()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            Should.Throw <InvalidOperationException>(() => packageDeployer.UseTargetServer("localhost"));

            // Assert
            packageDeployer.ConnectionStringBuilder.DataSource.ShouldBeEmpty();
        }
        public void UseWindowsAuthenticationWithoutLoadPackage()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            Should.Throw <InvalidOperationException>(() => packageDeployer.UseWindowsAuthentication());

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeFalse();
        }
        public void SetPropertyDoNotDropObjectTypes()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.SetProperty("DoNotDropObjectTypes", "Aggregates;Assemblies");

            // Assert
            packageDeployer.DeployOptions.DoNotDropObjectTypes.ShouldBe(new ObjectType[] { ObjectType.Aggregates, ObjectType.Assemblies });
        }
        public void SetPropertyDatabaseSpecification()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.SetProperty("DatabaseSpecification", "Hyperscale,1024,P15");

            // Assert
            packageDeployer.DeployOptions.DatabaseSpecification.Edition.ShouldBe(DacAzureEdition.Hyperscale);
            packageDeployer.DeployOptions.DatabaseSpecification.MaximumSize.ShouldBe(1024);
            packageDeployer.DeployOptions.DatabaseSpecification.ServiceObjective.ShouldBe("P15");
        }
        public void SetPropertySimpleValue()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.SetProperty("AllowDropBlockingAssemblies", "true");

            // Assert
            packageDeployer.DeployOptions.AllowDropBlockingAssemblies.ShouldBeTrue();
        }
        public void SetPropertyExcludeObjectTypes()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.SetProperty("ExcludeObjectTypes", "Contracts;Endpoints");

            // Assert
            packageDeployer.DeployOptions.ExcludeObjectTypes.ShouldBe(new ObjectType[] { ObjectType.Contracts, ObjectType.Endpoints });
        }
        public void UseSqlServerAuthenticationNoPasswordPrompts()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.UseSqlAuthentication("testuser", null);

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeFalse();
            packageDeployer.ConnectionStringBuilder.UserID.ShouldBe("testuser");
            _console.Received().ReadLine();
        }
        public void UseWindowsAuthentication()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.UseWindowsAuthentication();

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeTrue();
        }
        public void UseSqlAuthenticationWithPasswordDoesNotPrompt()
        {
            // Arrange
            var packageDeployer = new PackageDeployer(_console);

            // Act
            packageDeployer.UseSqlAuthentication("testuser", "testpassword");

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeFalse();
            packageDeployer.ConnectionStringBuilder.UserID.ShouldBe("testuser");
            packageDeployer.ConnectionStringBuilder.Password.ShouldBe("testpassword");
            _console.DidNotReceive().ReadLine();
        }
        public void SetSqlCmdVariable()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.SetSqlCmdVariable("MySqlCmdVariable", "SomeValue");

            // Assert
            packageDeployer.DeployOptions.SqlCommandVariableValues.ContainsKey("MySqlCmdVariable").ShouldBeTrue();
            packageDeployer.DeployOptions.SqlCommandVariableValues["MySqlCmdVariable"].ShouldBe("SomeValue");
        }
        public void UseTargetServer()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.UseTargetServer("localhost");

            // Assert
            packageDeployer.ConnectionStringBuilder.DataSource.ShouldNotBeNull();
            packageDeployer.ConnectionStringBuilder.DataSource.ShouldBe("localhost");
        }
        public void SetPropertyDatabaseSpecification()
        {
            // Arrange
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.SetProperty("DatabaseSpecification", "Hyperscale;1024;P15");

            // Assert
            packageDeployer.DeployOptions.DatabaseSpecification.Edition.ShouldBe(DacAzureEdition.Hyperscale);
            packageDeployer.DeployOptions.DatabaseSpecification.MaximumSize.ShouldBe(1024);
            packageDeployer.DeployOptions.DatabaseSpecification.ServiceObjective.ShouldBe("P15");
        }
        public void UseSqlServerAuthenticationNoPasswordSetsPassword()
        {
            // Arrange
            _console.ReadLine().Returns("testpassword");
            using var packageDeployer = new PackageDeployer(_console);
            var packagePath = BuildSimpleModel();

            // Act
            packageDeployer.LoadPackage(packagePath);
            packageDeployer.UseSqlAuthentication("testuser", null);

            // Assert
            packageDeployer.ConnectionStringBuilder.IntegratedSecurity.ShouldBeFalse();
            packageDeployer.ConnectionStringBuilder.UserID.ShouldBe("testuser");
            packageDeployer.ConnectionStringBuilder.Password.ShouldBe("testpassword");
        }