public async void testAddProjectLog() { var client = _factory.CreateClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _projectsEnv._stringDict.GetValueOrDefault("token")); var actualResponseProjects = await client.testSuccessGetAsync <List <GetProjectDto> >("/api/projects"); var project = actualResponseProjects.data.FirstOrDefault(o => o.projectType == PROJECT_TYPE.STAT); var projectLog = new CreateProjectLogDto { log = "test", projectId = project.id, timeSpend = 90, type = PROJECT_TYPE.STAT }; var expectedProjectLog = new GetProjectLogDto { log = projectLog.log, project = project, timeSpend = projectLog.timeSpend, }; var oldStats = await client.testSuccessGetAsync <GetStatsDto>("api/statistics/stats"); // Act var actualResponseProjectLog = await client.testSuccessPostAsync <GetProjectLogDto, CreateProjectLogDto>("api/projectlogs", projectLog); // Assert actualResponseProjectLog.data.WithDeepEqual(expectedProjectLog).IgnoreSourceProperty(x => x.id); var projectLogGet = await client.testSuccessGetAsync <GetProjectLogDto>($"api/projectlogs/{actualResponseProjectLog.data.id}"); expectedProjectLog.id = actualResponseProjectLog.data.id; actualResponseProjectLog.data.ShouldDeepEqual(expectedProjectLog); }
public async Task <ActionResult <ControllerResponse <ProjectLog> > > create(CreateProjectLogDto createProjectLog) { string userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier).ToString(); ProjectLog projectLog = _mapper.Map <ProjectLog>(createProjectLog); projectLog.userId = userId; projectLog.project = await _projectService.getByIdAsync(createProjectLog.projectId); if (projectLog.project == null) { throw new ArgumentException("There is no project with corresponding id"); } if (projectLog.project.userId != userId) { throw new UnauthorizedAccessException("Project don't belong to you"); } if (createProjectLog.projectTaskId != null) { projectLog.projectTask = await _projectTaskService.getByIdAsync(createProjectLog.projectTaskId); if (projectLog.projectTask.userId != userId) { throw new UnauthorizedAccessException("ProjectTask don't belong to you"); } } if (createProjectLog.type != PROJECT_TYPE.BREAK) { createProjectLog.type = projectLog.project.projectType; } projectLog = await _projectLogService.processCreateProjectLog(projectLog); return(Created(new Uri($"{Request.Path}/{projectLog.id}", UriKind.Relative), new ControllerResponse <ProjectLog> { data = projectLog })); }