public async Task Can_Delete_Objects_Which_Are_Referred_By_Report() { //Arrange - a broken link in both a system and an interface PurgeBrokenExternalReferencesReportTable(); var system = await ItSystemHelper.CreateItSystemInOrganizationAsync(A <Guid>().ToString("N"), TestEnvironment.DefaultOrganizationId, AccessModifier.Public); await ReferencesHelper.CreateReferenceAsync(A <string>(), null, SystemReferenceUrl, Display.Url, r => r.ItSystem_Id = system.Id); var referenceToBeExplicitlyDeleted = await ReferencesHelper.CreateReferenceAsync(A <string>(), null, SystemReferenceUrl, Display.Url, r => r.ItSystem_Id = system.Id); var interfaceDto = await InterfaceHelper.CreateInterface(InterfaceHelper.CreateInterfaceDto(A <string>(), A <string>(), TestEnvironment.DefaultOrganizationId, AccessModifier.Public)); interfaceDto = await InterfaceHelper.SetUrlAsync(interfaceDto.Id, InterfaceUrl); await BrokenExternalReferencesReportHelper.TriggerRequestAsync(); var dto = await WaitForReportGenerationCompletedAsync(); Assert.True(dto.Available); //Act using (var deleteReferenceResponse = await ReferencesHelper.DeleteReferenceAsync(referenceToBeExplicitlyDeleted.Id)) using (var deleteItSystemResponse = await ItSystemHelper.DeleteItSystemAsync(system.Id, TestEnvironment.DefaultOrganizationId)) using (var deleteInterfaceResponse = await InterfaceHelper.SendDeleteInterfaceRequestAsync(interfaceDto.Id)) { Assert.Equal(HttpStatusCode.OK, deleteReferenceResponse.StatusCode); Assert.Equal(HttpStatusCode.OK, deleteItSystemResponse.StatusCode); Assert.Equal(HttpStatusCode.OK, deleteInterfaceResponse.StatusCode); } }
public async Task Get_CurrentCsv_Returns_Unicode_Encoded_Csv() { //Arrange - a broken link in both a system and an interface PurgeBrokenExternalReferencesReportTable(); var system = await ItSystemHelper.CreateItSystemInOrganizationAsync(A <Guid>().ToString("N"), TestEnvironment.DefaultOrganizationId, AccessModifier.Public); var systemReferenceName = A <string>(); await ReferencesHelper.CreateReferenceAsync(systemReferenceName, null, SystemReferenceUrl, Display.Url, r => r.ItSystem_Id = system.Id); var interfaceDto = await InterfaceHelper.CreateInterface(InterfaceHelper.CreateInterfaceDto(A <string>(), A <string>(), TestEnvironment.DefaultOrganizationId, AccessModifier.Public)); interfaceDto = await InterfaceHelper.SetUrlAsync(interfaceDto.Id, InterfaceUrl); //Act await BrokenExternalReferencesReportHelper.TriggerRequestAsync(); var dto = await WaitForReportGenerationCompletedAsync(); //Assert that the two controlled errors are present Assert.True(dto.Available); var report = await GetBrokenLinksReportAsync(); var brokenSystemLink = Assert.Single(report[system.Name]); AssertBrokenLinkRow(brokenSystemLink, "IT System", system.Name, systemReferenceName, "Se fejlkode", "404", SystemReferenceUrl); var brokenInterfaceLink = Assert.Single(report[interfaceDto.Name]); AssertBrokenLinkRow(brokenInterfaceLink, "Snitflade", interfaceDto.Name, string.Empty, "Se fejlkode", "404", InterfaceUrl); }
public async Task Get_CurrentCsv_Returns_NotFound() { //Arrange PurgeBrokenExternalReferencesReportTable(); //Act using (var response = await BrokenExternalReferencesReportHelper.SendGetCurrentCsvAsync()) { //Assert Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } }
public async Task Get_Status_Returns_ReportNotAvailable() { //Arrange PurgeBrokenExternalReferencesReportTable(); //Act var dto = await BrokenExternalReferencesReportHelper.GetStatusAsync(); //Assert Assert.NotNull(dto); Assert.False(dto.Available); Assert.Null(dto.BrokenLinksCount); Assert.Null(dto.CreatedDate); }
public async Task After_Job_Completes_Status_Returns_AvailableReport() { //Arrange PurgeBrokenExternalReferencesReportTable(); //Act await BrokenExternalReferencesReportHelper.TriggerRequestAsync(); var dto = await WaitForReportGenerationCompletedAsync(); //Assert Assert.True(dto.Available); Assert.NotNull(dto.BrokenLinksCount); Assert.NotNull(dto.CreatedDate); }
private static async Task <BrokenExternalReferencesReportStatusDTO> WaitForReportGenerationCompletedAsync() { var beginning = DateTime.Now; var waitedFor = DateTime.Now.Subtract(beginning); BrokenExternalReferencesReportStatusDTO dto; do { dto = await BrokenExternalReferencesReportHelper.GetStatusAsync(); if (!dto.Available) { await Task.Delay(TimeSpan.FromSeconds(1)); } waitedFor = DateTime.Now.Subtract(beginning); } while (dto.Available == false && waitedFor < TimeSpan.FromMinutes(1)); return(dto); }
private static async Task <Dictionary <string, List <LinkReportCsvFormat> > > GetBrokenLinksReportAsync() { using (var response = await BrokenExternalReferencesReportHelper.SendGetCurrentCsvAsync()) { Assert.Equal(HttpStatusCode.OK, response.StatusCode); using (var csvReader = new CsvReader(new StringReader(await response.Content.ReadAsStringAsync()), new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";", HasHeaderRecord = true })) { var result = new Dictionary <string, List <LinkReportCsvFormat> >(); foreach (var parentGroup in csvReader.GetRecords <LinkReportCsvFormat>().GroupBy(record => record.Navn)) { result[parentGroup.Key] = new List <LinkReportCsvFormat>(parentGroup); } return(result); } } }