public async Task <List <Guid> > DeleteHearingsByPartialCaseText(DeleteTestHearingDataRequest request)
        {
            request.Limit ??= DEFAULT_LIMIT;

            try
            {
                var caseTypes = new List <int> {
                    HearingData.CACD_CASE_TYPE_ID_FROM_BOOKINGS_API, HearingData.GENERIC_CASE_TYPE_ID_FROM_BOOKINGS_API
                };
                var response = await _bookingsApiClient.GetHearingsByTypesAsync(caseTypes, CURSOR, DEFAULT_LIMIT);

                var hearings = new List <BookingsHearingResponse>();

                foreach (var bookedHearing in response.Hearings)
                {
                    hearings.AddRange(bookedHearing.Hearings);
                }

                return(await DeleteHearings(hearings, request.PartialHearingCaseName));
            }
            catch (BookingsApiException e)
            {
                _logger.LogError(e, "Encountered error '{message}'", e.Message);
                throw;
            }
        }
Example #2
0
        public async Task Should_delete_hearings()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = "Test"
            };

            var idsResponse = new List <Guid>()
            {
                Guid.NewGuid()
            };

            BookingsApiService
            .Setup(x => x.DeleteHearingsByPartialCaseText(It.IsAny <DeleteTestHearingDataRequest>()))
            .ReturnsAsync(idsResponse);

            VideoApiClient
            .Setup(x => x.DeleteAudioApplicationAsync(It.IsAny <Guid>()))
            .Returns(Task.CompletedTask);

            var response = await Controller.DeleteTestDataByPartialCaseText(request);

            var result = (ObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var deletionDetails = (DeletedResponse)result.Value;

            deletionDetails.NumberOfDeletedHearings.Should().Be(1);
        }
 public DeleteHearingBuilder()
 {
     _request = new DeleteTestHearingDataRequest()
     {
         Limit = DeleteData.LIMIT,
         PartialHearingCaseName = DeleteData.PARTIAL_HEARING_CASE_NAME
     };
 }
        public async Task Should_pass_validation()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = VALID_TEXT
            };

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeTrue();
        }
        public async Task Should_fail_validation_if_hearing_case_name_does_not_contain_test()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = INVALID_TEXT
            };

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
            result.Errors.Any(x => x.ErrorMessage == DeleteTestHearingDataRequestValidator.HEARING_CASE_NAME_MUST_CONTAIN_TEST_ERROR_MESSAGE)
            .Should().BeTrue();
        }
        public async Task Should_fail_validation_if_case_name_empty()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = string.Empty
            };

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
            result.Errors.Any(x => x.ErrorMessage == DeleteTestHearingDataRequestValidator.EMPTY_REQUEST_ERROR_MESSAGE)
            .Should().BeTrue();
        }
        public async Task Should_throw_error_without_specifying_test_in_request()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = NAME_THAT_WONT_BE_FOUND,
                Limit = 1
            };

            var uri = ApiUriFactory.UtilityEndpoints.DeleteHearings;

            await SendPostRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.BadRequest, false);
        }
Example #8
0
        public async Task <IActionResult> DeleteTestDataByPartialCaseText(DeleteTestHearingDataRequest request)
        {
            _logger.LogDebug("DeleteTestDataByPartialCaseText");

            try
            {
                var response = await _testApiClient.DeleteTestDataByPartialCaseTextAsync(request);

                _logger.LogDebug($"{response} hearings deleted");
                return(Ok(response));
            }
            catch (TestApiException e)
            {
                _logger.LogError(e, "Unable to delete hearing and/or conference with error '{message}'", e.Message);
                return(StatusCode(e.StatusCode, e.Response));
            }
        }
        public async Task Should_remove_hearings()
        {
            var request = new DeleteTestHearingDataRequest()
            {
                PartialHearingCaseName = $"Test {NAME_THAT_WONT_BE_FOUND}",
                Limit = 1
            };

            var uri = ApiUriFactory.UtilityEndpoints.DeleteHearings;

            await SendPostRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <DeletedResponse>(Json);

            response.NumberOfDeletedHearings.Should().Be(0);
        }
        public async Task <IActionResult> DeleteTestDataByPartialCaseText(DeleteTestHearingDataRequest request)
        {
            _logger.LogDebug($"DeleteHearingsByPartialCaseText");

            List <Guid> hearingIds;

            try
            {
                hearingIds = await _bookingsApiService.DeleteHearingsByPartialCaseText(request);
            }
            catch (BookingsApiException e)
            {
                return(StatusCode(e.StatusCode, e.Response));
            }

            try
            {
                foreach (var hearingId in hearingIds)
                {
                    await _videoApiClient.DeleteAudioApplicationAsync(hearingId);

                    _logger.LogInformation("Successfully deleted audio application with hearing id {hearingId}", hearingId);
                }
            }
            catch (VideoApiException e)
            {
                if (e.StatusCode != (int)HttpStatusCode.NotFound)
                {
                    _logger.LogError(e, "Failed to delete audio application with error {message}", e.Message);
                    return(StatusCode(e.StatusCode, e.Response));
                }
            }

            var response = new DeletedResponse()
            {
                NumberOfDeletedHearings = hearingIds.Count
            };

            return(Ok(response));
        }
        public void RemoveData(TestContext context)
        {
            if (context?.Test?.CaseNames == null)
            {
                return;
            }
            if (context.Test.CaseNames.Count == 0)
            {
                return;
            }
            const int LIMIT = 1000;

            foreach (var caseName in context.Test.CaseNames)
            {
                var request = new DeleteTestHearingDataRequest()
                {
                    Limit = LIMIT,
                    PartialHearingCaseName = caseName
                };

                var response = context.TestApi.DeleteTestData(request);
                response.StatusCode.Should().Be(HttpStatusCode.OK, $"Failed to delete hearing with case name '{request.PartialHearingCaseName}'");
            }
        }
 public RemoveHearingsControllerTests()
 {
     _loggerMock = new Mock <ILogger <HearingsController> >();
     _request    = new DeleteHearingBuilder().Build();
 }