public void Test_CreateDeployemntTask_RunsProperly_WhenAllIsWell()
        {
            var objectFactory = new Mock<IObjectFactory>(MockBehavior.Strict);
              var envInfoRepository = new Mock<IEnvironmentInfoRepository>(MockBehavior.Strict);
              var artifactsRepository = new Mock<IArtifactsRepository>(MockBehavior.Strict);
              var taskScheduler = new Mock<ITaskScheduler>(MockBehavior.Strict);
              var ntServiceManager = new Mock<INtServiceManager>(MockBehavior.Strict);
              var projInfoRepository = new Mock<IProjectInfoRepository>(MockBehavior.Strict);
              var directoryAdapter = new Mock<IDirectoryAdapter>(MockBehavior.Loose);
              var fileAdapter = new Mock<IFileAdapter>(MockBehavior.Loose);
              var zipFileAdapter = new Mock<IZipFileAdapter>(MockBehavior.Loose);

              var projectInfo = new TerminalAppProjectInfo(
            _Name,
            _ArtifactsRepositoryName,
            _AllowedEnvironmentNames,
            _ArtifactsRepositoryDirName,
            _ArtifactsAreNotEnvirionmentSpecific,
            _TerminalAppName,
            _TerminalAppDirName,
            _TerminalAppExeName);

              objectFactory.Setup(o => o.CreateEnvironmentInfoRepository()).Returns(envInfoRepository.Object);
              objectFactory.Setup(o => o.CreateArtifactsRepository()).Returns(artifactsRepository.Object);
              objectFactory.Setup(o => o.CreateTaskScheduler()).Returns(taskScheduler.Object);
              objectFactory.Setup(o => o.CreateNtServiceManager()).Returns(ntServiceManager.Object);
              objectFactory.Setup(o => o.CreateProjectInfoRepository()).Returns(projInfoRepository.Object);
              objectFactory.Setup(o => o.CreateDirectoryAdapter()).Returns(directoryAdapter.Object);
              objectFactory.Setup(o => o.CreateFileAdapter()).Returns(fileAdapter.Object);
              objectFactory.Setup(o => o.CreateZipFileAdapter()).Returns(zipFileAdapter.Object);

              projectInfo.CreateDeploymentTask(objectFactory.Object);
        }
        public void Test_CreateDeployemntTask_RunsProperly_WhenAllIsWell()
        {
            var objectFactory = new Mock<IObjectFactory>(MockBehavior.Strict);
              var envInfoRepository = new Mock<IEnvironmentInfoRepository>(MockBehavior.Strict);
              var artifactsRepository = new Mock<IArtifactsRepository>(MockBehavior.Strict);
              var taskScheduler = new Mock<ITaskScheduler>(MockBehavior.Strict);
              var ntServiceManager = new Mock<INtServiceManager>(MockBehavior.Strict);

              var projectInfo = new TerminalAppProjectInfo(
            _Name,
            _ArtifactsRepositoryName,
            _ArtifactsRepositoryDirName,
            _ArtifactsAreNotEnvirionmentSpecific,
            _TerminalAppName,
            _TerminalAppDirName,
            _TerminalAppExeName);

              objectFactory.Setup(o => o.CreateEnvironmentInfoRepository()).Returns(envInfoRepository.Object);
              objectFactory.Setup(o => o.CreateArtifactsRepository()).Returns(artifactsRepository.Object);
              objectFactory.Setup(o => o.CreateTaskScheduler()).Returns(taskScheduler.Object);
              objectFactory.Setup(o => o.CreateNtServiceManager()).Returns(ntServiceManager.Object);

              projectInfo.CreateDeploymentTask(
              objectFactory.Object, "configName", "buildID", "targetEnvironmentName");
        }
        public DeployTerminalAppDeploymentTask(IEnvironmentInfoRepository environmentInfoRepository, IArtifactsRepository artifactsRepository, TerminalAppProjectInfo projectInfo, string projectConfigurationName, string projectConfigurationBuildId, string targetEnvironmentName)
            : base(environmentInfoRepository, targetEnvironmentName)
        {
            if (artifactsRepository == null)
              {
            throw new ArgumentNullException("artifactsRepository");
              }

              if (projectInfo == null)
              {
            throw new ArgumentNullException("projectInfo");
              }

              if (string.IsNullOrEmpty(projectConfigurationName))
              {
            throw new ArgumentException("Argument can't be null nor empty.", "projectConfigurationName");
              }

              if (string.IsNullOrEmpty(projectConfigurationBuildId))
              {
            throw new ArgumentException("Argument can't be null nor empty.", "projectConfigurationBuildId");
              }

              _artifactsRepository = artifactsRepository;
              _projectInfo = projectInfo;
              _projectConfigurationName = projectConfigurationName;
              _projectConfigurationBuildId = projectConfigurationBuildId;
        }
        public void OnDeploymentTaskStarting_WhenEnvironmentIsProductionAndConfigurationIsNot_ThrowsInvalidOperationException()
        {
            var enforceTargetEnvironmentConstraintsModule = new EnforceTargetEnvironmentConstraintsModule();
              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "trunk", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.Throws<InvalidOperationException>(() => enforceTargetEnvironmentConstraintsModule.OnDeploymentTaskStarting(deploymentTask, deploymentContext));
        }
        public void OnDeploymentTaskFinished_DoNothing_SoDoesNotThrows()
        {
            var enforceTargetEnvironmentConstraintsModule = new EnforceTargetEnvironmentConstraintsModule();
              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.DoesNotThrow(() => enforceTargetEnvironmentConstraintsModule.OnDeploymentTaskFinished(deploymentTask, deploymentContext));
        }
        public void OnDeploymentTaskStarting_DoNothing_SoDoesNotThrow()
        {
            var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>();
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo("name", "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", "prod");
              var deploymentContext = new DeploymentContext("requester");

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskStarting(deploymentTask, deploymentContext));
        }
        public void Test_CreateDeployemntTask_Throws_WhenObjectFactory_null()
        {
            var projectInfo = new TerminalAppProjectInfo(
            _Name,
            _ArtifactsRepositoryName,
            _ArtifactsRepositoryDirName,
            _ArtifactsAreNotEnvirionmentSpecific,
            _TerminalAppName,
            _TerminalAppDirName,
            _TerminalAppExeName);

              Assert.Throws<ArgumentNullException>(()=>projectInfo.CreateDeploymentTask(
              null, "configName", "buildID", "targetEnvironmentName"));
        }
        public void OnDeploymentTaskFinished_ExpectAddDeploymnetRequest()
        {
            string projectName = "projectName";
              string targetEnvironmentName = "targetEnvironmentName";
              var deploymentRequestRepository = new Mock<IDeploymentRequestRepository>(MockBehavior.Strict);
              var auditingModule = new AuditingModule(deploymentRequestRepository.Object);

              var environmentInfoRepository = new Mock<IEnvironmentInfoRepository>();
              var artifactsRepository = new Mock<IArtifactsRepository>();
              TerminalAppProjectInfo projectInfo = new TerminalAppProjectInfo(projectName, "artifactsRepositoryName", "artifactsrepositoryDirName", false, "terminalAppName", "terminalAppDirName", "terminalAppExeName");
              var deploymentTask = new DeployTerminalAppDeploymentTask(environmentInfoRepository.Object, artifactsRepository.Object, projectInfo, "Production", "buildId", targetEnvironmentName);
              var deploymentContext = new DeploymentContext("requester");

              deploymentRequestRepository
            .Setup(
              drr =>
              drr.AddDeploymentRequest(
            It.Is<DeploymentRequest>(
              r => r.ProjectName == projectName
                && r.TargetEnvironmentName == targetEnvironmentName)));

              Assert.DoesNotThrow(() => auditingModule.OnDeploymentTaskFinished(deploymentTask, deploymentContext));
        }
        public void Test_GetTargetFolders_RunsProperly_WhenAllIsWell()
        {
            string machine = Environment.MachineName;
              const string baseDirPath = "c:\\basedir";
              string terminalmachine = "terminalmachine";

              var envInfo =
            new EnvironmentInfo(
              "name",
              "templates",
              machine,
              "failover",
              new[] { "webmachine" },
              terminalmachine,
              "databasemachine",
              baseDirPath,
              "webbasedir",
              "c:\\scheduler",
              "c:\\terminal",
              false,
              _EnvironmentUsers,
              _ProjectToFailoverClusterGroupMappings);

              var projectInfo = new TerminalAppProjectInfo(
            _Name,
            _ArtifactsRepositoryName,
            _ArtifactsRepositoryDirName,
            _ArtifactsAreNotEnvirionmentSpecific,
            _TerminalAppName,
            _TerminalAppDirName,
            _TerminalAppExeName);

              List<string> targetFolders =
              projectInfo.GetTargetFolders(envInfo)
                .ToList();

              Assert.IsNotNull(targetFolders);
              Assert.AreEqual(1, targetFolders.Count);
              Assert.AreEqual("\\\\" + terminalmachine + "\\c$\\terminal\\" + _TerminalAppDirName, targetFolders[0]);
        }
        public void Test_GetTargetFolders_Throws_EnvInfo_null()
        {
            var projectInfo = new TerminalAppProjectInfo(
            _Name,
            _ArtifactsRepositoryName,
            _ArtifactsRepositoryDirName,
            _ArtifactsAreNotEnvirionmentSpecific,
            _TerminalAppName,
            _TerminalAppDirName,
            _TerminalAppExeName);

              Assert.Throws<ArgumentNullException>(() => projectInfo.GetTargetFolders(null));
        }
        public void Test_GetTargetFolders_RunsProperly_WhenAllIsWell()
        {
            var envInfo = DeploymentDataGenerator.GetEnvironmentInfo();

              var projectInfo =
            new TerminalAppProjectInfo(
              _Name,
              _ArtifactsRepositoryName,
              _AllowedEnvironmentNames,
              _ArtifactsRepositoryDirName,
              _ArtifactsAreNotEnvirionmentSpecific,
              _TerminalAppName,
              _TerminalAppDirName,
              _TerminalAppExeName);

              string terminalServerNetworkPath =
            envInfo.GetTerminalServerNetworkPath(
              string.Format("{0}{1}\\1.0.0.0", envInfo.TerminalAppsBaseDirPath, projectInfo.TerminalAppDirName));

              _directoryAdapterFake.Setup(
            da => da.GetDirectories(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<SearchOption>()))
            .Returns(new[] { terminalServerNetworkPath });

              // act
              List<string> targetFolders =
            projectInfo.GetTargetFolders(_objectFactoryFake.Object, envInfo)
              .ToList();

              Assert.IsNotNull(targetFolders);
              Assert.AreEqual(1, targetFolders.Count);
              Assert.AreEqual(terminalServerNetworkPath, targetFolders[0]);
        }