public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] [RequestBodyType(typeof(GetGroupMemberRequest), "Get Group Member")] GetGroupMemberRequest req, CancellationToken cancellationToken) { try { GetGroupMemberResponse response = await _mediator.Send(req, cancellationToken); return(new OkObjectResult(ResponseWrapper <GetGroupMemberResponse, GroupServiceErrorCode> .CreateSuccessfulResponse(response))); } catch (UnauthorisedException ex) { return(new ObjectResult(ResponseWrapper <GetGroupMembersResponse, GroupServiceErrorCode> .CreateUnsuccessfulResponse(GroupServiceErrorCode.UnauthorisedError, "Unauthorised Error")) { StatusCode = StatusCodes.Status401Unauthorized }); } catch (Exception ex) { _logger.LogErrorAndNotifyNewRelic($"Unhandled error in GetGroupMember", ex); return(new ObjectResult(ResponseWrapper <GetGroupMemberResponse, GroupServiceErrorCode> .CreateUnsuccessfulResponse(GroupServiceErrorCode.InternalServerError, "Internal Error")) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task WhenCreatedByUserIsSameAsVolunteerUserID_ReturnsSuccess(GroupRoles role) { _updateJobStatusOutcome = UpdateJobStatusOutcome.Success; _request = new PutUpdateJobStatusToInProgressRequest { CreatedByUserID = 1, JobID = 1, VolunteerUserID = 1 }; _getUserGroupsReponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _getGroupsForJobResponse = new List <int>() { 1 }; _referringGroupId = 1; Dictionary <int, List <int> > roles = new Dictionary <int, List <int> >(); roles.Add(1, new List <int>() { (int)role }); _getJobDetailsResponse = new GetJobDetailsResponse() { JobSummary = new JobSummary() { JobID = 1, SupportActivity = SupportActivities.Shopping } }; _getGroupMemberResponse = new GetGroupMemberResponse() { UserInGroup = new UserInGroup() { GroupId = 1, UserId = 1, GroupRoles = new List <GroupRoles>() { GroupRoles.Member }, ValidCredentials = new List <int>() { -1 } } }; _getGroupActivityCredentialsResponse = new GetGroupActivityCredentialsResponse() { CredentialSets = new List <List <int> > { new List <int>() { -1 } } }; _hasPermission = true; var response = await _classUnderTest.Handle(_request, CancellationToken.None); _repository.Verify(x => x.JobIsInProgressWithSameVolunteerUserId(It.IsAny <int>(), It.IsAny <int?>()), Times.Once); _groupService.Verify(x => x.GetUserGroups(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once); _groupService.Verify(x => x.GetGroupMember(It.IsAny <GetGroupMemberRequest>()), Times.Once); _groupService.Verify(x => x.GetGroupActivityCredentials(It.IsAny <GetGroupActivityCredentialsRequest>()), Times.Once); _repository.Verify(x => x.GetGroupsForJobAsync(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once); _repository.Verify(x => x.GetReferringGroupIDForJobAsync(It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once); _groupService.Verify(x => x.GetGroupMember(It.IsAny <GetGroupMemberRequest>()), Times.Once); _groupService.Verify(x => x.GetGroupActivityCredentials(It.IsAny <GetGroupActivityCredentialsRequest>()), Times.Once); _repository.Verify(x => x.UpdateJobStatusInProgressAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <CancellationToken>()), Times.Once); _communicationService.Verify(x => x.RequestCommunication(It.IsAny <RequestCommunicationRequest>(), It.IsAny <CancellationToken>()), Times.Once); Assert.AreEqual(UpdateJobStatusOutcome.Success, response.Outcome); }
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); }