public async Task <int> Create(CatapultEngine entity, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); entity.Created = DateTime.UtcNow; var user = _mapper.Map <ApplicationUser>(entity); user.Email = $"{user.UserName}@opencatapult.net"; // dummy email to avoid error var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { result.ThrowErrorException(); } await _userManager.AddToRoleAsync(user, UserRole.Engine); var profile = _mapper.Map <CatapultEngineProfile>(entity); profile.CatapultEngine = user; profile.IsActive = true; await _profileRepository.Create(profile, cancellationToken); return(user.Id); }
public async Task <CatapultEngine> CreateCatapultEngine(string name, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); var currentEngine = await _catapultEngineRepository.GetByCatapultEngineName(name, cancellationToken); if (currentEngine != null) { throw new DuplicateCatapultEngineException(name); } var catapultEngine = new CatapultEngine { Name = name }; try { var id = await _catapultEngineRepository.Create(catapultEngine, cancellationToken); if (id > 0) { catapultEngine.Id = id; } } catch (Exception ex) { throw new CatapultEngineCreationFailedException(name, ex); } return(catapultEngine); }
public async void CheckApiConnection_ReturnFailed() { _healthService.Setup(s => s.CheckHealthSecure()).ReturnsAsync(false); var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object, _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object); var success = await engine.CheckApiConnection(); Assert.False(success); }
public async void GetJobInQueue_ReturnEmpty() { _jobQueueService.Setup(s => s.CheckJob()).ReturnsAsync((JobDto)null); var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object, _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object); var result = await engine.GetJobInQueue(); Assert.Null(result); }
public async Task Update(CatapultEngine entity, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); var user = await _userManager.Users.Include(u => u.CatapultEngineProfile).FirstOrDefaultAsync(u => u.Id == entity.Id, cancellationToken); if (user != null && user.CatapultEngineProfile != null) { _mapper.Map(entity, user.CatapultEngineProfile); user.CatapultEngineProfile.Updated = DateTime.UtcNow; user.CatapultEngineProfile.ConcurrencyStamp = Guid.NewGuid().ToString(); await _profileRepository.Update(user.CatapultEngineProfile, cancellationToken); } }
public async void ExecuteJob_InvokeTaskRunner() { _jobQueueService.Setup(s => s.GetJobQueue(1, 1)).ReturnsAsync(new JobDto { Id = 1 }); _jobDefinitionService.Setup(s => s.GetJobTaskDefinitions(1, 1)) .ReturnsAsync(new List <JobTaskDefinitionDto>()); var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object, _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object); await engine.ExecuteJob(new JobDto { ProjectId = 1, Code = "20180817.1" }); _taskRunner.Verify(tr => tr.Run(1, It.Is <JobDto>(j => j.Code == "20180817.1"), It.IsAny <List <JobTaskDefinitionDto> >(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public async void ExecuteJob_InvokeDeleteProject() { _jobQueueService.Setup(s => s.GetJobQueue(1, 1)) .ReturnsAsync(new JobDto { Id = 1, IsDeletion = true, ProjectStatus = ProjectStatusFilterType.Deleting }); _jobDefinitionService.Setup(s => s.GetJobTaskDefinitions(1, 1)) .ReturnsAsync(new List <JobTaskDefinitionDto>()); _taskRunner .Setup(t => t.Run(It.IsAny <int>(), It.IsAny <JobDto>(), It.IsAny <List <JobTaskDefinitionDto> >(), It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(new Dictionary <int, TaskRunnerResult> { { 1, new TaskRunnerResult(true, "") } }); var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object, _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object); await engine.ExecuteJob(new JobDto { ProjectId = 1, Code = "20180817.1", IsDeletion = true, ProjectStatus = ProjectStatusFilterType.Deleting }); _projectService.Verify(p => p.DeleteProjectByEngine(1), Times.Once); }