public void CanProcessFailedPostAction() { var engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true); var postActionProcessor = new CaptureMePostAction(expectedResult: false); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), postActionProcessor); var postAction = new MockPostAction(); MockCreationResult creationResult = new MockCreationResult(new List <IPostAction>() { postAction }); MockCreationEffects creationEffects = new MockCreationEffects(); var templateCreationResult = new TemplateCreationResult( CreationResultStatus.Success, "TestTemplate", null, creationResult, "TestPath", creationEffects); PostActionDispatcher dispatcher = new PostActionDispatcher( engineEnvironmentSettings, new NewCommandCallbacks(), () => string.Empty); var result = dispatcher.Process(templateCreationResult, isDryRun: false, AllowRunScripts.Prompt); Assert.Equal(PostActionExecutionStatus.Failure, result); Assert.Equal(engineEnvironmentSettings, postActionProcessor.Calls.Single().EngineEnvironmentSettings); Assert.Equal(postAction, postActionProcessor.Calls.Single().PostAction); Assert.Equal(creationEffects, postActionProcessor.Calls.Single().CreationEffects); Assert.Equal(creationResult, postActionProcessor.Calls.Single().CreationResult); Assert.Equal("TestPath", postActionProcessor.Calls.Single().OutputPath); }
public void CanDryRunSuccessPostAction() { var engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true); var postActionProcessor = new CaptureMePostAction(expectedResult: true); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), postActionProcessor); var postAction = new MockPostAction(); MockCreationEffects creationEffects = new MockCreationEffects(); var templateCreationResult = new TemplateCreationResult( CreationResultStatus.Success, "TestTemplate", null, null, "TestPath", creationEffects); PostActionDispatcher dispatcher = new PostActionDispatcher( engineEnvironmentSettings, new NewCommandCallbacks(), () => string.Empty); var result = dispatcher.Process(templateCreationResult, isDryRun: true, AllowRunScripts.Prompt); Assert.Equal(PostActionExecutionStatus.Success, result); Assert.Empty(postActionProcessor.Calls); }
public void CanContinueOnErrorWhenConfigured() { var engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true); var trueProcessorGuid = Guid.NewGuid(); var falseProcessorGuid = Guid.NewGuid(); var trueProcessor = new CaptureMePostAction(expectedResult: true, guid: trueProcessorGuid); var falseProcessor = new CaptureMePostAction(expectedResult: false, guid: falseProcessorGuid); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), trueProcessor); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), falseProcessor); var postAction1 = new MockPostAction { ActionId = falseProcessorGuid, ContinueOnError = true }; var postAction2 = new MockPostAction { ActionId = trueProcessorGuid, ContinueOnError = true }; MockCreationResult creationResult = new MockCreationResult(new List <IPostAction>() { postAction1, postAction2 }); MockCreationEffects creationEffects = new MockCreationEffects(); var templateCreationResult = new TemplateCreationResult( CreationResultStatus.Success, "TestTemplate", null, creationResult, "TestPath", creationEffects); PostActionDispatcher dispatcher = new PostActionDispatcher( engineEnvironmentSettings, new NewCommandCallbacks(), () => string.Empty); var result = dispatcher.Process(templateCreationResult, isDryRun: false, AllowRunScripts.Yes); // in case continue on error is true, success status is returned on failure Assert.Equal(PostActionExecutionStatus.Success, result); //2 post actions were executed Assert.Equal(1, trueProcessor.Calls.Count); Assert.Equal(1, falseProcessor.Calls.Count); Assert.Equal(postAction1, falseProcessor.Calls[0].PostAction); Assert.Equal(postAction2, trueProcessor.Calls[0].PostAction); }
public void CanProcessRunScriptPostActionAndSuccessPostAction_WhenRunScriptPrompt_No() { var engineEnvironmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true); var postActionProcessor = new CaptureMePostAction(expectedResult: true); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), postActionProcessor); engineEnvironmentSettings.Components.AddComponent(typeof(IPostActionProcessor), new ProcessStartPostActionProcessor()); var postAction1 = new MockPostAction { ActionId = ProcessStartPostActionProcessor.ActionProcessorId, //the post action will fail, but that is OK for test purpose Args = new Dictionary <string, string>() { { "executable", "do-not-exist" } }, ContinueOnError = true }; var postAction2 = new MockPostAction { ActionId = Guid.Empty, //CaptureMePostAction ContinueOnError = true }; MockCreationResult creationResult = new MockCreationResult(new List <IPostAction>() { postAction1, postAction2 }); MockCreationEffects creationEffects = new MockCreationEffects(); var templateCreationResult = new TemplateCreationResult( CreationResultStatus.Success, "TestTemplate", null, creationResult, Path.GetTempPath(), creationEffects); PostActionDispatcher dispatcher = new PostActionDispatcher( engineEnvironmentSettings, new NewCommandCallbacks(), () => "N"); // the user forbids to run post action var result = dispatcher.Process(templateCreationResult, isDryRun: false, AllowRunScripts.Prompt); Assert.Equal(PostActionExecutionStatus.Cancelled, result); Assert.NotEqual(PostActionExecutionStatus.Failure, result); Assert.Single(postActionProcessor.Calls); Assert.Equal(postAction2, postActionProcessor.Calls.Single().PostAction); }