public async Task should_return_not_found_if_endpoint_is_not_found()
        {
            var request = new PrivateVideoEndpointConsultationRequest
            {
                ConferenceId = _testConference.Id,
                EndpointId   = Guid.NewGuid()
            };
            var result = await _controller.CallVideoEndpointAsync(request);

            var actionResult = result.As <NotFoundObjectResult>();

            actionResult.Should().NotBeNull();
        }
        public async Task should_return_accepted_request_is_successful()
        {
            var request = new PrivateVideoEndpointConsultationRequest
            {
                ConferenceId = _testConference.Id,
                EndpointId   = _testConference.Endpoints.First(x => !string.IsNullOrWhiteSpace(x.DefenceAdvocateUsername))
                               .Id
            };
            var result = await _controller.CallVideoEndpointAsync(request);

            var actionResult = result.As <AcceptedResult>();

            actionResult.Should().NotBeNull();
        }
        public async Task should_return_not_found_if_defence_advocate_is_not_found()
        {
            var cp = new ClaimsPrincipalBuilder().WithRole(AppRoles.RepresentativeRole)
                     .WithUsername("*****@*****.**").Build();

            _controller = SetupControllerWithClaims(cp);

            var request = new PrivateVideoEndpointConsultationRequest
            {
                ConferenceId = _testConference.Id,
                EndpointId   = _testConference.Endpoints.First(x => !string.IsNullOrWhiteSpace(x.DefenceAdvocateUsername))
                               .Id
            };
            var result = await _controller.CallVideoEndpointAsync(request);

            var actionResult = result.As <NotFoundObjectResult>();

            actionResult.Should().NotBeNull();
        }
Example #4
0
        public async Task <IActionResult> CallVideoEndpointAsync(PrivateVideoEndpointConsultationRequest request)
        {
            _logger.LogDebug("CallVideoEndpoint");
            var username   = User.Identity.Name?.ToLower().Trim();
            var conference = await GetConference(request.ConferenceId);

            var defenceAdvocate = conference.Participants.SingleOrDefault(x =>
                                                                          x.Username.Trim().Equals(username, StringComparison.CurrentCultureIgnoreCase));

            if (defenceAdvocate == null)
            {
                return(NotFound($"Defence advocate does not exist in conference {request.ConferenceId}"));
            }

            var endpoint = conference.Endpoints.SingleOrDefault(x => x.Id == request.EndpointId);

            if (endpoint == null)
            {
                return(NotFound($"No endpoint id {request.EndpointId} exists"));
            }

            try
            {
                await _videoApiClient.StartPrivateConsultationWithEndpointAsync(new EndpointConsultationRequest
                {
                    Conference_id       = request.ConferenceId,
                    Endpoint_id         = endpoint.Id,
                    Defence_advocate_id = defenceAdvocate.Id
                });
            }
            catch (VideoApiException ex)
            {
                _logger.LogError(ex, $"Unable to start endpoint private consultation");
                return(StatusCode(ex.StatusCode, ex.Response));
            }

            return(Accepted());
        }