public void ArgumentsShouldBeCorrectlyMappedToConfiguration() { var connections = new[] { new DatabaseEndpoint() {DatabaseName = "Db1", ServerName = "Server1"} }; var arguments = new Arguments() { Database=new DatabaseEndpoints() { Endpoints=connections }, DeployedAssemblyOverridePath=@"c:\some dir\some other dir\MyAssembly1.dll", TargetAssemblyPath=@".\MyAssembly1.dll", RunServerMigrationsInTransaction=false, Mode=DeploymentMode.MigrationOnly, DeploymentHistoryExtractPath=@"c:\some dir\deployment history" }; var migration = new MigrationConfigurationInfo { Type = "Galen.Enterprise.Data.MigrationConfigs.SomeContext.Configuration" }; var initializer = new InitializerConfigurationInfo { Type = "Galen.Enterprise.Data.Initializers.SomeContextCreateDatabaseIfNotExists", ServiceAccount = new ServiceAccountInfo() { Name = "SomeWindowsAccountName", Domain = "SomeDomainName", DatabaseUser = "******", AccountType = "Windows" } }; var mockConfigStore = new Moq.Mock<IDeploymentConfigurationStore>(); mockConfigStore.Setup(m => m.Load()) .Returns(new DeploymentConfiguration() { MigrationConfigurationInfo=migration, InitializerConfigurationInfo=initializer }); var expected = new DbDeploymentManagerConfiguration { Database=connections.First(), MigrationConfig=migration, InitializationConfig=initializer, DeployedAssemblyOverridePath=@"c:\some dir\some other dir\MyAssembly1.dll", TargetAssemblyPath=@".\MyAssembly1.dll", RunServerMigrationsInTransaction=false, Mode=DeploymentMode.MigrationOnly, AuthMode=AuthenticationMode.Integrated, DeploymentHistoryExtractPath = @"c:\some dir\deployment history" }; var sut = new ConfigurationArgumentMapper(mockConfigStore.Object); var actual = sut.FromArguments(arguments); Assert.IsNotNull(actual); Assert.AreEqual(expected.DeployedAssemblyOverridePath, actual.DeployedAssemblyOverridePath); Assert.AreEqual(expected.TargetAssemblyPath, actual.TargetAssemblyPath); Assert.AreEqual(expected.RunServerMigrationsInTransaction, actual.RunServerMigrationsInTransaction); Assert.AreEqual(expected.Mode, actual.Mode); Assert.AreEqual(expected.DeploymentHistoryExtractPath, actual.DeploymentHistoryExtractPath); Assert.IsNull(actual.SqlLogin); Assert.IsNull(actual.SqlPassword); Assert.IsNotNull(actual.Database); Assert.AreEqual(expected.Database.ServerName, actual.Database.ServerName); Assert.AreEqual(expected.Database.DatabaseName, actual.Database.DatabaseName); Assert.IsNotNull(actual.MigrationConfig); Assert.AreEqual(migration.Type, actual.MigrationConfig.Type); Assert.IsNotNull(actual.InitializationConfig); Assert.IsNotNull(actual.InitializationConfig.ServiceAccount); Assert.AreEqual(initializer.Type, actual.InitializationConfig.Type); Assert.AreEqual(initializer.ServiceAccount.AccountType, actual.InitializationConfig.ServiceAccount.AccountType); Assert.AreEqual(initializer.ServiceAccount.Name, actual.InitializationConfig.ServiceAccount.Name); Assert.AreEqual(initializer.ServiceAccount.Domain, actual.InitializationConfig.ServiceAccount.Domain); Assert.AreEqual(initializer.ServiceAccount.DatabaseUser, actual.InitializationConfig.ServiceAccount.DatabaseUser); Assert.AreEqual(initializer.ServiceAccount.DatabaseUserPassword, actual.InitializationConfig.ServiceAccount.DatabaseUserPassword); }