public void IfDeployThrowsExShouldBeHandled(DeployMode mode) { var cFactory = DefaultMocks.GetConfFactory(); var validator = new Mock <IValidator>(); validator.Setup(v => v.IsValidForInstall()).Returns(true); validator.Setup(v => v.IsValidForUpdate()).Returns(true); var correctDeployers = DefaultMocks.GetMockedDeployers(3).ToList(); var deployersWithEx = correctDeployers.ToList(); var deployerWithEx = new Mock <IDeployer>(); deployerWithEx.Setup(d => d.Name).Returns(string.Format("deployer-{0}", 4)); deployerWithEx.Setup(d => d.Install()).Throws(new DeployException("deploy ex install")); deployerWithEx.Setup(d => d.Update()).Throws(new DeployException("deploy ex update")); deployersWithEx.Add(deployerWithEx); var settingsMock = new Mock <IConf>(); settingsMock.Setup(s => s.SurveyPath).Returns(new SurveyPaths(_surveyPath, null)); settingsMock.Setup(s => s.Survey).Returns(new Survey(null, null, mode)); settingsMock.Setup(s => s.PackageManager).Returns(new PackageManagerStub()); var dsFactory = DefaultMocks.GetServiceFactory(mode); dsFactory.Setup(f => f.CreateDeployExHandlerObj(It.IsAny <IDeployEvents>(), It.IsAny <IConf>(), It.IsAny <IServiceLogger>(), It.IsAny <ISession>())) .Returns(new DeployExceptionHandlerStub()); dsFactory.Setup(f => f.CreateValidatorsList(It.IsAny <IConf>())).Returns(new List <IValidator> { validator.Object }); dsFactory.Setup(f => f.CreateDeployersList(It.IsAny <IConf>())).Returns(deployersWithEx.Select(d => d.Object)); using (var service = new DeployService(dsFactory.Object, cFactory.Object)) ConsumeService(service, mode); if (mode == DeployMode.Install) { validator.Verify(v => v.IsValidForInstall(), Times.Once()); } else { validator.Verify(v => v.IsValidForUpdate(), Times.Once()); } foreach (var deployer in correctDeployers) { if (mode == DeployMode.Install) { deployer.Verify(d => d.Install(), Times.Once()); deployer.Verify(d => d.InstallRollback(), Times.Once()); } else { deployer.Verify(d => d.Update(), Times.Once()); deployer.Verify(d => d.UpdateRollback(), Times.Once()); } } }
public void ServiceShouldDemandOpenSessionMethod() { var dsFacory = DefaultMocks.GetServiceFactory(); var service = new DeployService(dsFacory.Object, null); Assert.Throws <AuthenticationException>(() => service.Deploy(GetDeployContext(DeployMode.Install), new byte[10])); }
public void ServiceShouldLockUsedFolders() { var dsFactory = DefaultMocks.GetServiceFactory(); using (var service1 = new DeployService(dsFactory.Object, null)) using (var service2 = new DeployService(dsFactory.Object, null)) { Assert.True(service1.OpenSession(_surveyName)); Assert.False(service2.OpenSession(_surveyName)); } }
public void CallDeployWithoutFilesWillFail() { var dsFactory = DefaultMocks.GetServiceFactory(); var cFactory = DefaultMocks.GetConfFactory(); Assert.Throws <InvalidOperationException>(() => { using (var service = new DeployService(dsFactory.Object, cFactory.Object)) { service.OpenSession(_surveyName); service.Deploy(GetDeployContext(), new byte[0]); } }); }
public void IfValidationFailedHadleExAndDontCallDeployers(DeployMode mode) { var cFactory = DefaultMocks.GetConfFactory(); var validator = new Mock <IValidator>(); validator.Setup(v => v.IsValidForInstall()).Returns(false); validator.Setup(v => v.IsValidForUpdate()).Returns(false); var deployer = new Mock <IDeployer>(); deployer.Setup(d => d.Install()); deployer.Setup(d => d.Update()); var exceptionHandler = new Mock <IDeployExceptionHandler>(); exceptionHandler.Setup(e => e.HandleValidation(It.IsAny <ValidationException>(), It.IsAny <IDeployEvents>())); var dsFactory = DefaultMocks.GetServiceFactory(mode); dsFactory.Setup(f => f.CreateDeployExHandlerObj(It.IsAny <IDeployEvents>(), It.IsAny <IConf>(), It.IsAny <IServiceLogger>(), It.IsAny <ISession>())) .Returns(exceptionHandler.Object); dsFactory.Setup(f => f.CreateValidatorsList(It.IsAny <IConf>())).Returns(new List <IValidator> { validator.Object }); dsFactory.Setup(f => f.CreateDeployersList(It.IsAny <IConf>())).Returns(new List <IDeployer> { deployer.Object }); using (var service = new DeployService(dsFactory.Object, cFactory.Object)) ConsumeService(service, mode); if (mode == DeployMode.Install) { validator.Verify(v => v.IsValidForInstall(), Times.Once()); } else { validator.Verify(v => v.IsValidForUpdate(), Times.Once()); } deployer.Verify(d => d.Install(), Times.Never()); deployer.Verify(d => d.Update(), Times.Never()); exceptionHandler.Verify(e => e.HandleValidation(It.IsAny <ValidationException>(), It.IsAny <IDeployEvents>()), Times.Once()); }
public void IfFilesTransferWasCorruptedDeployThrows() { var dsFactory = DefaultMocks.GetServiceFactory(); var cFactory = DefaultMocks.GetConfFactory(); Assert.Throws <ArgumentException>(() => { using (var service = new DeployService(dsFactory.Object, cFactory.Object)) { service.OpenSession(_surveyName); foreach (var chunk in _files.Chunks) { service.SendFilesChunk(chunk); } var spoiledFiles = new byte[_files.Bytes.Length]; Array.Copy(_files.Bytes, spoiledFiles, _files.Bytes.Length); spoiledFiles[100] = 0; service.Deploy(GetDeployContext(), MD5.Create().ComputeHash(spoiledFiles)); } }); }
public void ServiceShouldCallAllValidatorsAndDeployers(DeployMode mode) { var cFactory = DefaultMocks.GetConfFactory(); var validators = DefaultMocks.GetMockedValidators(3).ToList(); var deployers = DefaultMocks.GetMockedDeployers(3).ToList(); var dsFactory = DefaultMocks.GetServiceFactory(mode); dsFactory.Setup(f => f.CreateValidatorsList(It.IsAny <IConf>())).Returns(validators.Select(v => v.Object)); dsFactory.Setup(f => f.CreateDeployersList(It.IsAny <IConf>())).Returns(deployers.Select(v => v.Object)); using (var service = new DeployService(dsFactory.Object, cFactory.Object)) ConsumeService(service, mode); foreach (var validator in validators) { if (mode == DeployMode.Install) { validator.Verify(v => v.IsValidForInstall(), Times.Once()); } else { validator.Verify(v => v.IsValidForUpdate(), Times.Once()); } } foreach (var deployer in deployers) { if (mode == DeployMode.Install) { deployer.Verify(d => d.Install(), Times.Once()); } else { deployer.Verify(d => d.Update(), Times.Once()); } } }