public void ScheduledResourceModel_Constructor_ShouldSelectedCorrectResourcesWithId() { SetupSingleTaskWithId(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); Assert.AreEqual(1, model.ScheduledResources.Count); }
public void ScheduledResourceModel_HistoryTestDebugCreated_StatusFailureIfDebugHasError() { //setup var log = new MockTaskEventLog { new MockTaskEvent(Guid.NewGuid(), 12, "Task Started", new DateTime(2000, 1, 1), "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "2", new DateTime(2001, 1, 1), "12346", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "3", new DateTime(2002, 1, 1), "12347", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "Task Completed", new DateTime(2003, 1, 1), "12348", "dave") }; // this should return two history items without any debug output var mockDirectory = new Mock <IDirectory>(); var fileHelper = new Mock <IFile>(); var res = new Mock <IScheduledResource>(); //expectations mockDirectory.Setup(a => a.GetFiles(@"c:\")).Returns(new[] { "b_12345_Bob" }); fileHelper.Setup(a => a.ReadAllText("b_12345_Bob")) .Returns("[{\"$type\":\"Dev2.Diagnostics.Debug.DebugState, Dev2.Diagnostics\",\"ID\":\"05d4e815-61bf-49ad-b46c-b6f0e0e2e839\",\"ParentID\":\"00000000-0000-0000-0000-000000000000\",\"ServerID\":\"00000000-0000-0000-0000-000000000000\",\"EnvironmentID\":\"00000000-0000-0000-0000-000000000000\",\"ClientID\":\"00000000-0000-0000-0000-000000000000\",\"StateType\":64,\"DisplayName\":\"BUGS/Bug_11889\",\"HasError\":true,\"ErrorMessage\":\"Service [ BUGS/Bug_11889 ] not found.\",\"Version\":\"\",\"Name\":\"EsbServiceInvoker\",\"ActivityType\":0,\"Duration\":\"00:00:00\",\"DurationString\":\"PT0S\",\"StartTime\":\"2014-07-24T12:49:28.4006805+02:00\",\"EndTime\":\"2014-07-24T12:49:28.4006805+02:00\",\"Inputs\":[],\"Outputs\":[],\"Server\":\"\",\"WorkspaceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginalInstanceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginatingResourceID\":\"00000000-0000-0000-0000-000000000000\",\"IsSimulation\":false,\"Message\":null,\"NumberOfSteps\":0,\"Origin\":\"\",\"ExecutionOrigin\":0,\"ExecutionOriginDescription\":null,\"ExecutingUser\":null,\"SessionID\":\"00000000-0000-0000-0000-000000000000\",\"WorkSurfaceMappingId\":\"00000000-0000-0000-0000-000000000000\"}]"); res.Setup(a => a.Name).Returns("Bob"); _convertorFactory.Setup(a => a.CreateTaskEventLog(It.IsAny <string>())).Returns(log); //test var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName, fileHelper.Object, mockDirectory.Object); var history = model.CreateHistory(res.Object); Assert.AreEqual(1, history.Count); Assert.AreEqual(1, history.Last().DebugOutput.Count); Assert.AreEqual("Bob", history.Last().UserName); }
public void ScheduledResourceModel_SaveTest_UserPassword() { SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); var task = new Mock <IDev2TaskDefinition>(); var resourceToSave = new Mock <IScheduledResource>(); var action = new Mock <IExecAction>(); var trigger = new Mock <IScheduleTrigger>(); var nativeTrigger = new Mock <ITrigger>(); var mockSettings = new Mock <ITaskSettings>(); var resource = new Mock <IScheduledResource>(); _convertorFactory.Setup(a => a.CreateExecAction("WareWolf", "a b", null)).Returns(action.Object); resourceToSave.Setup(a => a.Name).Returns("henry"); resourceToSave.Setup(a => a.Trigger).Returns(trigger.Object); resourceToSave.Setup(a => a.WorkflowName).Returns("b"); task.Setup(a => a.Settings).Returns(mockSettings.Object); trigger.Setup(a => a.Trigger).Returns(nativeTrigger.Object); task.Setup(a => a.AddTrigger(nativeTrigger.Object)).Verifiable(); _mockService.Setup(a => a.NewTask()).Returns(task.Object); _mockService.Setup(a => a.GetFolder(_folderId)).Returns(_folder.Object); task.Setup(a => a.AddTrigger(nativeTrigger.Object)).Verifiable(); _folder.Setup(a => a.ValidTasks).Returns(new List <IDev2Task>()); var mockFolder = new Mock <ITaskFolder>(); _mockService.Setup(a => a.GetFolder("WareWolf")).Returns(mockFolder.Object); resource.Setup(a => a.Name).Returns("Dora"); model.Save(resourceToSave.Object, "user", "pwd"); mockFolder.Verify( a => a.RegisterTaskDefinition("henry", task.Object, TaskCreation.CreateOrUpdate, "user", "pwd", TaskLogonType.InteractiveTokenOrPassword)); task.Verify(a => a.AddTrigger(It.IsAny <ITrigger>())); }
public void ScheduledResourceModel_HistoryTestStatusFailedWindowsSchedulerError() { //setup var log = new MockTaskEventLog { new MockTaskEvent(Guid.NewGuid(), 104, "Task Started", new DateTime(2000, 1, 1), "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 104, "2", new DateTime(2001, 1, 1), "12346", "dave"), new MockTaskEvent(Guid.NewGuid(), 104, "3", new DateTime(2002, 1, 1), "12347", "dave"), new MockTaskEvent(Guid.NewGuid(), 104, "Task Completed", new DateTime(2003, 1, 1), "12348", "dave") }; // this should return two history items without any debug output var mockDirectory = new Mock <IDirectory>(); var fileHelper = new Mock <IFile>(); var res = new Mock <IScheduledResource>(); //expectations mockDirectory.Setup(a => a.GetFiles(@"c:\")).Returns(new[] { "b_12345_Bob" }); fileHelper.Setup(a => a.ReadAllText("b_12345_Bob")) .Returns("[{\"$type\":\"Dev2.Diagnostics.Debug.DebugState, Dev2.Diagnostics\",\"ID\":\"cd902be2-a202-4d54-8c07-c5f56bae97fe\",\"ParentID\":\"00000000-0000-0000-0000-000000000000\",\"ServerID\":\"00000000-0000-0000-0000-000000000000\",\"EnvironmentID\":\"00000000-0000-0000-0000-000000000000\",\"ClientID\":\"00000000-0000-0000-0000-000000000000\",\"StateType\":64,\"DisplayName\":\"dave\",\"HasError\":true,\"ErrorMessage\":\"Service [ dave ] not found.\",\"Version\":\"\",\"Name\":\"DynamicServicesInvoker\",\"ActivityType\":0,\"Duration\":\"00:00:00\",\"DurationString\":\"PT0S\",\"StartTime\":\"2014-03-20T17:23:14.0224329+02:00\",\"EndTime\":\"2014-03-20T17:23:14.0224329+02:00\",\"Inputs\":[],\"Outputs\":[],\"Server\":\"\",\"WorkspaceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginalInstanceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginatingResourceID\":\"00000000-0000-0000-0000-000000000000\",\"IsSimulation\":false,\"Message\":null,\"NumberOfSteps\":0,\"Origin\":\"\",\"ExecutionOrigin\":0,\"ExecutionOriginDescription\":null,\"ExecutingUser\":null,\"SessionID\":\"00000000-0000-0000-0000-000000000000\"}]"); res.Setup(a => a.Name).Returns("Bob"); _convertorFactory.Setup(a => a.CreateTaskEventLog(It.IsAny <string>())).Returns(log); //test var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName, fileHelper.Object, mockDirectory.Object); var history = model.CreateHistory(res.Object); Assert.AreEqual(1, history.Count); Assert.AreEqual(ScheduleRunStatus.Error, history.Last().TaskHistoryOutput.Success); }
public void ScheduledResourceModel_HistoryTest_CorrectTaskEventsSelected() { // setup var log = new MockTaskEventLog { new MockTaskEvent(Guid.NewGuid(), 12, "Task Started", new DateTime(2000, 1, 1), "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "2", new DateTime(2001, 1, 1), "12346", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "3", new DateTime(2002, 1, 1), "12347", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "Task Completed", new DateTime(2003, 1, 1), "12348", "dave") }; var dirHelper = new Mock <IDirectoryHelper>(); var fileHelper = new Mock <IFileHelper>(); var res = new Mock <IScheduledResource>(); //setup expectancies dirHelper.Setup(a => a.GetFiles(@"c:\")).Returns(new[] { "b_12345_Bob" }); fileHelper.Setup(a => a.ReadAllText("b_12345_Bob")).Returns(""); res.Setup(a => a.Name).Returns("Bob"); _convertorFactory.Setup(a => a.CreateTaskEventLog(It.IsAny <string>())).Returns(log); //construct var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object); IList <IResourceHistory> history = model.CreateHistory(res.Object); Assert.AreEqual(2, history.Count); Assert.AreEqual(new DateTime(2003, 1, 1), history.First().TaskHistoryOutput.StartDate); Assert.AreEqual(new DateTime(2000, 1, 1), history.Last().TaskHistoryOutput.EndDate); }
public void ScheduledResourceModel_CorrectSelectedResources() { SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, d => d.WorkflowName); var a = model.ScheduledResources.First(); Assert.AreEqual("bob", a.Name); Assert.AreEqual("a", a.WorkflowName); }
public void ScheduledResourceModel_Get_ShouldErrorInvalidMessages() { //setup SetupSingleTask(); //create var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object); Assert.AreEqual(1, model.ScheduledResources.Count()); }
public void ServerSchedulerFactory_CreateModel() { IDev2TaskService service = new Mock <IDev2TaskService>().Object; ITaskServiceConvertorFactory cFactory = new Mock <ITaskServiceConvertorFactory>().Object; var factory = new ServerSchedulerFactory(service, cFactory, new DirectoryHelper()); ScheduledResourceModel model = (ScheduledResourceModel)factory.CreateModel("bob", new SecurityWrapper(ServerAuthorizationService.Instance)); Assert.AreEqual("bob", model.WarewolfFolderPath); Assert.IsTrue(model.WarewolfAgentPath.Contains(GlobalConstants.SchedulerAgentPath)); Assert.IsTrue(model.DebugHistoryPath.Contains(GlobalConstants.SchedulerDebugPath)); }
public void ScheduledResourceModel_Constructor_ShouldSelectedCorrectResources() { //setup SetupSingleTask(); //create var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object); Assert.AreEqual(1, model.ScheduledResources.Count()); }
public void ScheduledResourceModel_Constructor_ShouldConstruct() { _mockService.Setup(a => a.GetFolder(_folderId)).Returns(_folder.Object); _folder.Setup(a => a.ValidTasks).Returns(new List <IDev2Task>()); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); Assert.AreEqual(_convertorFactory.Object, model.ConvertorFactory); Assert.AreEqual(_folderId, model.WarewolfFolderPath); Assert.AreEqual(_agentPath, model.WarewolfAgentPath); Assert.AreEqual(_mockService.Object, model.TaskService); Assert.AreEqual(0, model.ScheduledResources.Count); }
public void ScheduledResourceModel_SaveInvalidWindowsUserPermissions() { //create objects SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); var resourceToSave = new Mock <IScheduledResource>(); //setup expectations _wrapper.Setup(a => a.IsWindowsAuthorised(It.IsAny <string>(), It.IsAny <string>())).Returns(false); //run test model.Save(resourceToSave.Object, out string errorMessage); Assert.AreEqual(Warewolf.Resource.Errors.ErrorResource.ScheduledResourceLogOnAsBatchErrorTest, errorMessage); }
public void ScheduledResourceModel_SaveInvalidName() { //create objects SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); var resourceToSave = new Mock <IScheduledResource>(); //setup expectations _wrapper.Setup(a => a.IsWarewolfAuthorised(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>())).Returns(true); resourceToSave.Setup(a => a.Name).Returns("bob?"); //run test model.Save(resourceToSave.Object, out string errorMessage); Assert.AreEqual("The task name may not contain the following characters \\/:*?\"<>| .", errorMessage); }
public void ScheduledResourceModel_HistoryTestDebugCreated() { var startTime = new DateTime(2000, 1, 1); var endTime = new DateTime(2003, 1, 1); //setup var log = new MockTaskEventLog { new MockTaskEvent(Guid.NewGuid(), 12, "Task Started", startTime, "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "2", new DateTime(2001, 1, 1), "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "3", new DateTime(2002, 1, 1), "12345", "dave"), new MockTaskEvent(Guid.NewGuid(), 12, "Task Completed", endTime, "12345", "dave") }; // this should return two history items without any debug output var dirHelper = new Mock <IDirectoryHelper>(); var fileHelper = new Mock <IFileHelper>(); var res = new Mock <IScheduledResource>(); //expectations dirHelper.Setup(a => a.GetFiles(@"c:\")).Returns(new[] { "b_12345_Bob" }); const string content = "[{\"$type\":\"Dev2.Diagnostics.Debug.DebugState, Dev2.Diagnostics\",\"ID\":\"cd902be2-a202-4d54-8c07-c5f56bae97fe\",\"ParentID\":\"00000000-0000-0000-0000-000000000000\",\"ServerID\":\"00000000-0000-0000-0000-000000000000\",\"EnvironmentID\":\"00000000-0000-0000-0000-000000000000\",\"ClientID\":\"00000000-0000-0000-0000-000000000000\",\"StateType\":64,\"DisplayName\":\"dave\",\"HasError\":false,\"ErrorMessage\":\"Service [ dave ] not found.\",\"Version\":\"\",\"Name\":\"DynamicServicesInvoker\",\"ActivityType\":0,\"Duration\":\"00:00:00\",\"DurationString\":\"PT0S\",\"StartTime\":\"2014-03-20T17:23:14.0224329+02:00\",\"EndTime\":\"2014-03-20T17:23:14.0224329+02:00\",\"Inputs\":[],\"Outputs\":[],\"Server\":\"\",\"WorkspaceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginalInstanceID\":\"00000000-0000-0000-0000-000000000000\",\"OriginatingResourceID\":\"00000000-0000-0000-0000-000000000000\",\"IsSimulation\":false,\"Message\":null,\"NumberOfSteps\":0,\"Origin\":\"\",\"ExecutionOrigin\":0,\"ExecutionOriginDescription\":null,\"ExecutingUser\":null,\"SessionID\":\"00000000-0000-0000-0000-000000000000\"}]"; fileHelper.Setup(a => a.ReadAllText("b_12345_Bob")) .Returns(content); res.Setup(a => a.Name).Returns("Bob"); _convertorFactory.Setup(a => a.CreateTaskEventLog(It.IsAny <string>())).Returns(log); //test // ReSharper disable UseObjectOrCollectionInitializer var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, // ReSharper restore UseObjectOrCollectionInitializer @"c:\", _wrapper.Object, a => a.WorkflowName); model.DirectoryHelper = dirHelper.Object; model.FileHelper = fileHelper.Object; //var history = RunOutput(startTime, endTime, "Bob"); var serializer = new Dev2JsonSerializer(); var debugStates = serializer.Deserialize <List <IDebugState> >(content).First(); IList <IResourceHistory> history = model.CreateHistory(res.Object); Assert.AreEqual(1, history.Count); Assert.AreEqual(debugStates.StartTime, history.First().DebugOutput.First().StartTime); Assert.AreEqual(debugStates.EndTime, history.First().DebugOutput.First().EndTime); Assert.AreEqual(history.Last().DebugOutput.Count, 1); Assert.AreEqual("Bob", history.Last().UserName); }
void DeleteTask() { if (SelectedTask != null && CurrentEnvironment != null) { if (CurrentEnvironment.IsConnected) { if (CurrentEnvironment.AuthorizationService.IsAuthorized(AuthorizationContext.Administrator, null)) { if (_popupController.ShowDeleteConfirmation(SelectedTask.Name) == MessageBoxResult.Yes) { int index = ScheduledResourceModel.ScheduledResources.IndexOf(SelectedTask); int indexInFilteredList = TaskList.IndexOf(SelectedTask); if (index != -1) { Dev2Logger.Log.Info(String.Format("Delete Schedule Name: {0} Resource:{1} Env:{2}", SelectedTask.Name, SelectedTask.ResourceId, CurrentEnvironment.Name)); ScheduledResourceModel.DeleteSchedule(SelectedTask); //if delete is successfull then do the code below ScheduledResourceModel.ScheduledResources.RemoveAt(index); NotifyOfPropertyChange(() => TaskList); if (indexInFilteredList <= TaskList.Count && indexInFilteredList > 0) { SelectedTask = TaskList[indexInFilteredList - 1]; } else if (indexInFilteredList == 0 && TaskList.Count > 0) { SelectedTask = TaskList[0]; } } NotifyOfPropertyChange(() => History); } } else { ShowError(@"Error while saving: You don't have permission to schedule on this server. You need Administrator permission."); } } else { ShowError(NotConnectedErrorMessage); } } }
public void ScheduledResourceModel_Delete_InValid() { //setup SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object, a => a.WorkflowName); var mockFolder = new Mock <ITaskFolder>(); var resource = new Mock <IScheduledResource>(); //expectations _mockService.Setup(a => a.GetFolder(_folderId)).Returns(_folder.Object); _folder.Setup(a => a.ValidTasks).Returns(new List <IDev2Task>()); _mockService.Setup(a => a.GetFolder("WareWolf")).Returns(mockFolder.Object); mockFolder.Setup(a => a.TaskExists("Dora")).Returns(false); mockFolder.Setup(a => a.DeleteTask("Dora", false)).Verifiable(); resource.Setup(a => a.Name).Returns("Dora"); //test model.DeleteSchedule(resource.Object); }
public void ScheduledResourceModel_SaveInvalidWindowsUserPermissions() { //create objects SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object); var resourceToSave = new Mock <IScheduledResource>(); //setup expectations _wrapper.Setup( a => a.IsWindowsAuthorised(It.IsAny <string>(), It.IsAny <string>())) .Returns(false); //run test string errorMessage; model.Save(resourceToSave.Object, out errorMessage); Assert.AreEqual(@"This task requires that the user account specified has 'Log On As Batch' job rights. Please contact your Windows System Administrator.", errorMessage); }
public void ScheduledResourceModel_SaveInvalidWarewolfUserPermissions() { //create objects SetupSingleTask(); var model = new ScheduledResourceModel(_mockService.Object, _folderId, _agentPath, _convertorFactory.Object, @"c:\", _wrapper.Object); var resourceToSave = new Mock <IScheduledResource>(); //setup expectations _wrapper.Setup( a => a.IsWarewolfAuthorised(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(false); resourceToSave.Setup(a => a.WorkflowName).Returns("bob"); //run test string errorMessage; model.Save(resourceToSave.Object, out errorMessage); Assert.AreEqual(@"This Workflow requires that you have Execute permission on the 'bob' Workflow. Please contact your Warewolf System Administrator.", errorMessage); }
bool SaveTasks() { if (CurrentEnvironment.IsConnected) { var authService = CurrentEnvironment.AuthorizationService; if (authService != null && authService.IsAuthorized(AuthorizationContext.Administrator, null)) { if (SelectedTask != null && SelectedTask.OldName != null && SelectedTask.IsDirty) { if (HasErrors && !Error.StartsWith(SaveErrorPrefix)) { ShowSaveErrorDialog(Error); return(false); } if (SelectedTask.OldName != SelectedTask.Name && !SelectedTask.OldName.Contains(NewTaskName) && !SelectedTask.IsNew) { var showNameChangedConflict = _popupController.ShowNameChangedConflict(SelectedTask.OldName, SelectedTask.Name); if (showNameChangedConflict == MessageBoxResult.Cancel || showNameChangedConflict == MessageBoxResult.None) { return(false); } if (showNameChangedConflict == MessageBoxResult.No) { SelectedTask.Name = SelectedTask.OldName; NotifyOfPropertyChange(() => Name); } } if (SelectedTask.OldName != SelectedTask.Name && SelectedTask.OldName.Contains(NewTaskName)) { SelectedTask.OldName = SelectedTask.Name; } } GetCredentials(SelectedTask); string errorMessage; if (!ScheduledResourceModel.Save(SelectedTask, out errorMessage)) { ShowSaveErrorDialog(errorMessage); ShowError(errorMessage); return(false); } Dev2Logger.Log.Info(String.Format("Save Schedule. Environment: {0} Name:{1} ", CurrentEnvironment.Name, SelectedTask != null ?SelectedTask.Name:"")); if (SelectedTask != null) { SelectedTask.Errors.ClearErrors(); NotifyOfPropertyChange(() => Error); NotifyOfPropertyChange(() => Errors); SelectedTask.OldName = SelectedTask.Name; SelectedTask.IsNew = false; } NotifyOfPropertyChange(() => TaskList); } else { ShowError(@"Error while saving: You don't have permission to schedule on this server. You need Administrator permission."); return(false); } return(true); } ShowError(NotConnectedErrorMessage); return(false); }