Exemple #1
0
        public async Task <IActionResult> SetUserProjectRole([FromBody] PutUserRoleRequest request)
        {
            var keyAuthResult = await _authService.AuthByApiKey();

            if (keyAuthResult.User == null)
            {
                return(BadRequest(ErrorResponse.GetErrorList(keyAuthResult.ErrorText)));
            }

            var project = _ticketService.GetProject(request.Project);

            if (project == null)
            {
                return(BadRequest(ErrorResponse.GetErrorList($"Project: {request.Project} does not exist!")));
            }

            if (!await _authService.AuthorizeProjectRole(eProjectRoles.Manager, project.Id, user: keyAuthResult.User))
            {
                return(Unauthorized(ErrorResponse.GetUnauthorizedErrorList(keyAuthResult.User.Identity.Name, project.Name, eProjectRoles.Manager)));
            }

            await _projectRoleService.SetProjectRole(request.Project, request.User, request.Role);

            var baseUrl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationUrl = baseUrl + "/" + ApiRoutes.UserRoles.GetAllByUser.Replace("{userName}", request.User);

            var response = _mapper.Map <UserRoleResponse>(request);

            return(Created(locationUrl, response));
        }
        public async Task UserRoles_Put_UserRoles_AddRole_ExpectsUserRole()
        {
            var client = getClient();

            PutUserRoleRequest request = new PutUserRoleRequest()
            {
                Project = TestDbContextData.Project1.Name,
                User    = TestDbContextData.DummyGuest.UserName,
                Role    = eProjectRoles.Reporter
            };

            Assert.False(await userHasRole(client, request.User, request.Role));

            var response = await client.PutAsJsonAsync(ApiRoutes.UserRoles.Update, request);

            var responseUserRole = await response.Content.ReadAsAsync <UserRoleResponse>();

            Assert.Equal(request.Project, responseUserRole.Project);
            Assert.Equal(request.User, responseUserRole.User);
            Assert.Equal(request.Role, responseUserRole.Role);
            Assert.Equal(response.Headers.Location.LocalPath, "/" + ApiRoutes.UserRoles.GetAllByUser.Replace("{userName}", request.User));

            Assert.True(await userHasRole(client, request.User, request.Role));
        }