void Verify_CanDeploy_IsAuthorized(bool expectedCanDeploy, bool isAuthorizedDeployFrom, bool isAuthorizedDeployTo)
{
var sourceConnection = new Mock<IEnvironmentConnection>();
sourceConnection.Setup(c => c.AppServerUri).Returns(new Uri("http://localhost"));
var mockSourceServer = new Mock<IEnvironmentModel>();
mockSourceServer.Setup(e => e.Connection).Returns(sourceConnection.Object);
mockSourceServer.Setup(server => server.IsConnected).Returns(true);
mockSourceServer.Setup(server => server.IsAuthorizedDeployFrom).Returns(isAuthorizedDeployFrom);
mockSourceServer.Setup(server => server.IsAuthorizedDeployTo).Returns(true);
mockSourceServer.Setup(a => a.AuthorizationService).Returns(_authService.Object);
var remoteConnection = new Mock<IEnvironmentConnection>();
remoteConnection.Setup(c => c.AppServerUri).Returns(new Uri("http://remote"));
var mockDestinationServer = new Mock<IEnvironmentModel>();
mockDestinationServer.Setup(e => e.Connection).Returns(remoteConnection.Object);
mockDestinationServer.Setup(server => server.IsConnected).Returns(true);
mockDestinationServer.Setup(server => server.IsAuthorizedDeployFrom).Returns(true);
mockDestinationServer.Setup(server => server.IsAuthorizedDeployTo).Returns(isAuthorizedDeployTo);
mockDestinationServer.Setup(a => a.AuthorizationService).Returns(_authService.Object);
Mock<IEnvironmentModel> destEnv;
Mock<IEnvironmentModel> destServer;
var deployViewModel = SetupDeployViewModel(out destEnv, out destServer);
deployViewModel.SelectedSourceServer = mockSourceServer.Object;
deployViewModel.SelectedDestinationServer = mockDestinationServer.Object;
deployViewModel.HasItemsToDeploy = (sourceDeployItemCount, destinationDeployItemCount) => true;
Assert.AreEqual(expectedCanDeploy, deployViewModel.CanDeploy);
}