예제 #1
0
        public async Task WhenVolunteerIsSameAsCreatedBy_ReturnsTrue()
        {
            int jobId           = 1;
            int createdByUserID = 1;

            _refferingGroupID      = 1;
            _getjobdetailsResponse = new GetJobDetailsResponse()
            {
                JobSummary = new JobSummary()
                {
                    VolunteerUserID = 1
                }
            };

            Dictionary <int, List <int> > roles = new Dictionary <int, List <int> >();

            roles.Add(1, new List <int>()
            {
                (int)GroupRoles.Member
            });

            _getUserRolesResponse = new GetUserRolesResponse()
            {
                UserGroupRoles = roles
            };
            var response = await _classUnderTest.HasPermissionToChangeStatusAsync(jobId, createdByUserID, true, CancellationToken.None);

            _repository.Verify(x => x.GetJobDetails(It.IsAny <int>()), Times.Once);
            _repository.Verify(x => x.GetReferringGroupIDForJobAsync(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Never);
            _groupService.Verify(x => x.GetUserRoles(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Never);

            Assert.AreEqual(true, response);
        }
예제 #2
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
            [RequestBodyType(typeof(GetUserRolesRequest), "get user roles")] GetUserRolesRequest req,
            CancellationToken cancellationToken)
        {
            try
            {
                if (req.IsValid(out var validationResults))
                {
                    GetUserRolesResponse response = await _mediator.Send(req, cancellationToken);

                    return(new OkObjectResult(ResponseWrapper <GetUserRolesResponse, GroupServiceErrorCode> .CreateSuccessfulResponse(response)));
                }
                else
                {
                    return(new ObjectResult(ResponseWrapper <GetUserRolesResponse, GroupServiceErrorCode> .CreateUnsuccessfulResponse(GroupServiceErrorCode.ValidationError, validationResults))
                    {
                        StatusCode = 422
                    });
                }
            }
            catch (Exception ex)
            {
                _logger.LogErrorAndNotifyNewRelic($"Unhandled error in GetUserGroups", ex);
                return(new ObjectResult(ResponseWrapper <GetUserRolesResponse, GroupServiceErrorCode> .CreateUnsuccessfulResponse(GroupServiceErrorCode.InternalServerError, "Internal Error"))
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
        }
예제 #3
0
        public async Task <IActionResult> GetUserRoles(string id, [FromHeader] string authorization)
        {
            if (!ModelState.IsValid)
            {
                BadRequest(id);
            }

            HttpParameters httpParameters = HttpParametersService
                                            .GetHttpParameters(
                null,
                ConfigHelper.AppSetting(Constants.ServerUrls, Constants.GetUserRoles),
                HttpMethod.Get,
                id,
                authorization
                );

            GetUserRolesResponse getUserRolesResult = await _gWService.Get <GetUserRolesResponse>(httpParameters);


            if (getUserRolesResult.StatusCode == 404)
            {
                return(await ResponseService.GetResponse <NotFoundObjectResult, GetUserRolesResponse>(getUserRolesResult, ModelState));
            }
            else if (getUserRolesResult.StatusCode == 401)
            {
                return(await ResponseService.GetResponse <UnauthorizedObjectResult, GetUserRolesResponse>(getUserRolesResult, ModelState));
            }
            else if (getUserRolesResult.StatusCode != 200)
            {
                return(await ResponseService.GetResponse <BadRequestObjectResult, GetUserRolesResponse>(getUserRolesResult, ModelState));
            }


            return(new OkObjectResult(getUserRolesResult));
        }
예제 #4
0
        public async Task WhenVolunteerIsDiffentToCreatedByButUserIsNotTaskAdmin_ReturnsFalse()
        {
            int jobId           = 1;
            int createdByUserID = 1;

            _refferingGroupID      = 1;
            _getjobdetailsResponse = new GetJobDetailsResponse()
            {
                JobSummary = new JobSummary()
                {
                    VolunteerUserID = 2
                }
            };

            Dictionary <int, List <int> > roles = new Dictionary <int, List <int> >();

            roles.Add(1, new List <int>()
            {
                (int)GroupRoles.Member
            });

            _getUserRolesResponse = new GetUserRolesResponse()
            {
                UserGroupRoles = roles
            };


            _getGroupResponse = new GetGroupResponse()
            {
                Group = new Group()
                {
                    GroupId       = 1,
                    GroupKey      = "KEY",
                    GroupName     = "GroupName",
                    ParentGroupId = 2
                }
            };

            var response = await _classUnderTest.HasPermissionToChangeStatusAsync(jobId, createdByUserID, true, CancellationToken.None);

            _repository.Verify(x => x.GetJobDetails(It.IsAny <int>()), Times.Once);
            _repository.Verify(x => x.GetReferringGroupIDForJobAsync(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once);
            _groupService.Verify(x => x.GetUserRoles(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once);
            _groupService.Verify(x => x.GetGroup(It.IsAny <int>()), Times.Once);

            Assert.AreEqual(false, response);
        }
예제 #5
0
        public GetUserRolesResponse Any(GetUserRolesRequest request)
        {
            GetUserRolesResponse resp = new GetUserRolesResponse();

            using (var con = this.TenantDbFactory.ObjectsDB.GetNewConnection())
            {
                con.Open();
                string sql = string.Empty;
                if (request.id > 0)
                {
                    sql = @"SELECT id, role_name, description FROM eb_roles;
                             SELECT id, role_name, description FROM eb_roles WHERE id IN(SELECT role_id FROM eb_role2user WHERE user_id = @id AND eb_del = FALSE)";
                }
                else
                {
                    sql = "SELECT id,role_name, description FROM eb_roles";
                }

                DbParameter[] parameters =
                {
                    this.TenantDbFactory.ObjectsDB.GetNewParameter("id", System.Data.DbType.Int32, request.id)
                };

                var dt = this.TenantDbFactory.ObjectsDB.DoQueries(sql, parameters);

                Dictionary <string, object> returndata = new Dictionary <string, object>();
                List <int> subroles = new List <int>();
                foreach (EbDataRow dr in dt.Tables[0].Rows)
                {
                    List <string> list = new List <string>();
                    list.Add(dr[1].ToString());
                    list.Add(dr[2].ToString());
                    returndata[dr[0].ToString()] = list;
                }

                if (dt.Tables.Count > 1)
                {
                    foreach (EbDataRow dr in dt.Tables[1].Rows)
                    {
                        subroles.Add(Convert.ToInt32(dr[0]));
                    }
                    returndata.Add("roles", subroles);
                }
                resp.Data = returndata;
            }
            return(resp);
        }
        public static GetUserRolesResponse WrapGetUserRoles(
            string userId,
            string email,
            List <string> roles,
            int statusCode)
        {
            GetUserRolesResponse responseMessage =
                new GetUserRolesResponse()
            {
                Roles       = roles,
                Email       = email,
                UserId      = userId,
                Code        = "all_user_roles",
                Description = "All roles for the specified user",
                Error       = "no_error",
                StatusCode  = statusCode
            };

            return(responseMessage);
        }
예제 #7
0
        public async Task WhenAccessRestrictedByRole_ReturnsCorrectResponse(int createdByUserId, GroupRoles role, Fulfillable fulfillable, int timesGroupMemberCalled)
        {
            requestId      = 1;
            _validPostcode = true;
            _emailSent     = true;
            int referringGroupId = -20;

            Guid guid    = Guid.NewGuid();
            var  request = new PostNewRequestForHelpRequest
            {
                HelpRequest = new HelpRequest
                {
                    RequestorType = RequestorType.Myself,
                    Recipient     = new RequestPersonalDetails
                    {
                        Address = new Address
                        {
                            Postcode = "test",
                        }
                    },
                    VolunteerUserId  = 1,
                    CreatedByUserId  = createdByUserId,
                    ReferringGroupId = referringGroupId
                },
                NewJobsRequest = new NewJobsRequest
                {
                    Jobs = new List <Job>
                    {
                        new Job
                        {
                            Guid            = guid,
                            HealthCritical  = true,
                            DueDays         = 5,
                            SupportActivity = SupportActivities.Shopping
                        }
                    }
                }
            };

            _formVariantResponse = new GetRequestHelpFormVariantResponse()
            {
                AccessRestrictedByRole   = true,
                RequestorDefinedByGroup  = true,
                RequestHelpFormVariant   = RequestHelpFormVariant.Default,
                TargetGroups             = TargetGroups.GenericGroup,
                RequestorPersonalDetails = new RequestPersonalDetails()
                {
                    FirstName    = "First",
                    LastName     = "Last",
                    EmailAddress = "Email",
                    MobileNumber = "Mobile",
                    OtherNumber  = "Other"
                },
                SuppressRecipientPersonalDetails = true
            };

            _getGroupMemberResponse = new GetGroupMemberResponse()
            {
                UserInGroup = new UserInGroup()
                {
                    UserId     = 1,
                    GroupId    = 1,
                    GroupRoles = new List <GroupRoles>()
                    {
                        role
                    }
                }
            };

            _getGroupResponse = new GetGroupResponse()
            {
                Group = new Group()
                {
                    GroupId = referringGroupId
                }
            };

            _getUserRolesResponse = new GetUserRolesResponse()
            {
                UserGroupRoles = new Dictionary <int, List <int> >()
            };

            _getNewRequestActionsResponse = new GetNewRequestActionsResponse()
            {
                Actions = new Dictionary <Guid, TaskAction>(), RequestTaskActions = new Dictionary <NewTaskAction, List <int> >()
            };
            _getNewRequestActionsResponse.Actions.Add(guid, new TaskAction()
            {
                TaskActions = new Dictionary <NewTaskAction, List <int> >()
            });
            _getNewRequestActionsResponse.Actions[guid].TaskActions.Add(NewTaskAction.AssignToVolunteer, new List <int>()
            {
                1
            });

            var response = await _classUnderTest.Handle(request, new CancellationToken());

            _groupService.Verify(x => x.GetRequestHelpFormVariant(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <CancellationToken>()), Times.Once);
            _groupService.Verify(x => x.GetGroupMember(It.IsAny <GetGroupMemberRequest>()), Times.Exactly(timesGroupMemberCalled));
            Assert.AreEqual(fulfillable, response.Fulfillable);
        }