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);
		}