From d85b30019c945e228da41a506b9792c11948119e Mon Sep 17 00:00:00 2001 From: leleOFA Date: Fri, 12 Apr 2024 11:25:58 +0200 Subject: [PATCH] create new test and insert logic for him, download legal fact not work --- .../it/pn/frontend/e2e/model/Disservice.java | 11 ++ .../pages/mittente/DisserviziAppPAPage.java | 114 ++++++++++++++++-- .../pn/frontend/e2e/utility/DownloadFile.java | 23 +++- .../stepDefinitions/common/HelpdeskTest.java | 2 +- .../mittente/DisserviziAppPATest.java | 12 ++ .../DownloadFileMittentePagoPATest.java | 32 +++-- ...nloadAttestazioniDisserviziRisolti.feature | 4 +- 7 files changed, 174 insertions(+), 24 deletions(-) create mode 100644 src/main/java/it/pn/frontend/e2e/model/Disservice.java diff --git a/src/main/java/it/pn/frontend/e2e/model/Disservice.java b/src/main/java/it/pn/frontend/e2e/model/Disservice.java new file mode 100644 index 000000000..7259eeea5 --- /dev/null +++ b/src/main/java/it/pn/frontend/e2e/model/Disservice.java @@ -0,0 +1,11 @@ +package it.pn.frontend.e2e.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class Disservice { + private String dataDa; + private String dataA; +} diff --git a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java index 71819ee78..88575c852 100644 --- a/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java +++ b/src/main/java/it/pn/frontend/e2e/pages/mittente/DisserviziAppPAPage.java @@ -1,21 +1,23 @@ package it.pn.frontend.e2e.pages.mittente; import it.pn.frontend.e2e.common.BasePage; +import it.pn.frontend.e2e.model.Disservice; +import it.pn.frontend.e2e.utility.DownloadFile; +import it.pn.frontend.e2e.utility.WebTool; +import org.apache.pdfbox.pdmodel.PDDocument; import org.junit.Assert; -import org.openqa.selenium.By; -import org.openqa.selenium.TimeoutException; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; +import org.openqa.selenium.*; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.ui.ExpectedConditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.*; import java.util.List; -public class DisserviziAppPAPage extends BasePage { +public class DisserviziAppPAPage extends BasePage { private final Logger logger = LoggerFactory.getLogger("Disservizi PA Page"); - + private DownloadFile downloadFile; public DisserviziAppPAPage(WebDriver driver) { super(driver); } @@ -26,7 +28,6 @@ public DisserviziAppPAPage(WebDriver driver) { @FindBy(xpath = "//tr[@id='tableDowntimeLog.row']//td//div[@data-testid='downtime-status']") List statusList; - public void waitLoadStatoDellaPiattaformaPage() { try { By disserviziPageTitle = By.id("Stato della piattaforma-page"); @@ -64,6 +65,24 @@ public void waitLoadStatoDellaPiattaformaPage() { } } + public Disservice getDateDisservice(){ + + List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); + if (!disserviziTableRows.isEmpty()) { + WebElement primaRiga = disserviziTableRows.get(0); + String dataInizioPrimaRiga = primaRiga.findElements(By.xpath("//td[@data-testid='tableDowntimeLog.row.cell']//div//div//p[contains(text(), 'ore')]")).get(0).getText(); + String dataFinePrimaRiga = primaRiga.findElements(By.xpath("//td[@data-testid='tableDowntimeLog.row.cell']//div//div//p[contains(text(), 'ore')]")).get(1).getText(); + return Disservice.builder() + .dataDa(dataInizioPrimaRiga) + .dataA(dataFinePrimaRiga) + .build(); + }else { + logger.error("non é stato possibile recuperare i dati dalla tabella dei disservizi"); + Assert.fail("non é stato possibile recuperare i dati dalla tabella dei disservizi"); + return null; + } + } + public void waitLoadDisserviziTable() { try { getWebDriverWait(10).withMessage("Non si visualizza correttamente la tabella dei disservizi") @@ -177,7 +196,7 @@ public void checkDisserviziDisponibili() { Assert.fail("Non si visualizza un record in elenco relativo ad un disservizio disponibile"); } } -} + public void clickVisualizzaAttestazione() { List disserviziTableRows = disserviziTable.findElements(By.id("tableDowntimeLog.row")); @@ -186,6 +205,14 @@ public void clickVisualizzaAttestazione() { WebElement linkDownloadAttestazione =primaRiga.findElements(By.xpath("//button[@data-testid='download-legal-fact']")).get(0); linkDownloadAttestazione.click(); } + + getWebDriverWait(30).until(d->{ + try { + return d.getCurrentUrl().contains("pn-safestorage"); + }catch (TimeoutException e){ + return false; + } + }); } @@ -197,4 +224,75 @@ public void checkVisualizzazioneFileDisservizioRisolto() { Assert.fail("Non si visualizza il file del disservizio risolto"); } } + + public void downloadAttestazioneDisservizio(String nomeFile){ + boolean headless = System.getProperty("headless").equalsIgnoreCase("true"); + + downloadFile = new DownloadFile(this.driver); + + WebTool.waitTime(3); + + final String url = driver.getCurrentUrl(); + System.out.println("getCurrentUrl"+url); + + if (!headless && url.isEmpty()) { + logger.error("Non è stato recuperato url per il download per il link: " + nomeFile); + Assert.fail("Non è stato recuperato url per il download per il link: " + nomeFile); + } + nomeFile = nomeFile.replace(" ", "_").replace(":", ""); + File file = new File("src/test/resources/dataPopulation/downloadFileDisservizio/mittente/" + nomeFile + ".pdf"); + logger.info("Il file verrà scaricato in: " + file.getAbsolutePath()); + downloadFile.download(url, file, headless); + if (!headless) { + goBack(); + } + } + + public void confrontoFileConDisservizio(String nomefile) { + try{ + driver.findElement(By.xpath("//html")).sendKeys(Keys.CONTROL+ "a"); + driver.findElement(By.xpath("//html")).sendKeys(Keys.CONTROL+ "C"); + //System.out.println("url ->"+text); + + PDDocument doc=null; + BufferedInputStream file=null; + + /*URL urlOfPdf = new URL(getURL); + System.out.println(urlOfPdf); + + BufferedInputStream fileToParse = new BufferedInputStream(urlOfPdf.openStream()); + PDDocument document = PDDocument.load(fileToParse); + System.out.println("document ->"+document); + + PDFTextStripper output = new PDFTextStripper(); + + System.out.println("output->"+output); + + output.setEndPage(1); + String text = output.getText(document); + System.out.println(text);*/ + + } catch (Exception e) { + throw new RuntimeException(e); + } + /*Disservice disservice = getDateDisservice(); + String basePathFile = "src/test/resources/dataPopulation/downloadFileDisservizio/mittente/" + nomefile + ".pdf"; + File file = new File(basePathFile); + logger.info("percorso file: " + file.getAbsolutePath()); + try { + PDDocument pdfFile = PDDocument.load(file); + PDFTextStripper pdfStripper = new PDFTextStripper(); + String testoFile = pdfStripper.getText(pdfFile).replaceAll("\r\n|\r|\n", ""); + logger.info("check corrispondenza testo con pdf"); + if (testoFile.contains(disservice.getDataA()) && testoFile.contains(disservice.getDataDa())) { + pdfFile.close(); + return true; + } + pdfFile.close(); + } catch (IOException e) { + logger.error("File non trovato con errore: " + e.getMessage()); + Assert.fail("File non trovato con errore: " + e.getMessage()); + } + return false;*/ + } } \ No newline at end of file diff --git a/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java b/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java index 3cad71e88..ce887a86e 100644 --- a/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java +++ b/src/main/java/it/pn/frontend/e2e/utility/DownloadFile.java @@ -23,6 +23,9 @@ public DownloadFile(WebDriver driver) { super(driver); } + BufferedInputStream input = null; + BufferedOutputStream bufferOut = null; + public void download(String urlLink, File fileLoc, boolean healdess) { if (healdess){ try { @@ -30,14 +33,16 @@ public void download(String urlLink, File fileLoc, boolean healdess) { double TotalDownload = 0.00; int readbyte = 0; //Stores the number of bytes written in each iteration. double percentOfDownload = 0.00; - URL url = new URL(urlLink); HttpURLConnection http = (HttpURLConnection)url.openConnection(); double filesize = (double)http.getContentLengthLong(); - BufferedInputStream input = new BufferedInputStream(http.getInputStream()); - FileOutputStream ouputfile = new FileOutputStream(fileLoc); - BufferedOutputStream bufferOut = new BufferedOutputStream(ouputfile, 1024); + input = new BufferedInputStream(http.getInputStream()); + + FileOutputStream outputFile = new FileOutputStream(fileLoc); + bufferOut= new BufferedOutputStream(outputFile, 1024); + + while((readbyte = input.read(buffer, 0, 1024)) >= 0) { //Writing the content onto the file. bufferOut.write(buffer,0,readbyte); @@ -50,11 +55,17 @@ public void download(String urlLink, File fileLoc, boolean healdess) { System.out.println("Downloaded "+ percent + "%"); } System.out.println("Your download is now complete."); - bufferOut.close(); - input.close(); + bufferOut.flush(); } catch(IOException e){ e.printStackTrace(); + }finally { + try { + bufferOut.close(); + input.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } } }else { try { diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java index 74dad6684..8754e2f1f 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/common/HelpdeskTest.java @@ -89,7 +89,7 @@ public void siCreaIlDisservizio() { public void siRisolveIlDisservizio() { WebTool.waitTime(5); if (helpdeskPage.checkIsCreatedDisservizio()) { - helpdeskPage.handleDisservizio("OK"); + helpdeskPage.handleDisservizio(Disservice.CREAZIONE_NOTIFICHE,Status.OK); WebTool.waitTime(5); } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java index e0b8d6d32..08eda0abc 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DisserviziAppPATest.java @@ -51,4 +51,16 @@ public void siVisualizzanoTuttiIRecordInElencoRelativiADisserviziRisolti() { logger.info("Si visualizzano tutti i record in elenco relativi a disservizi risolti"); disserviziAppPAPage.checkDisserviziDisponibili(); } + + @And("Controllo corrispondenza dati con pdf, {string}") + public void controlloCorrispondenzaDatiConPdf(String nomefile) { + logger.info("check dati con pdf e disservizio"); + + disserviziAppPAPage.confrontoFileConDisservizio(nomefile); + /*if (!isCorrect){ + logger.error("i dati del pdf non corrispondono a quelli della tabella"); + Assert.fail("i dati del pdf non corrispondono a quelli della tabella"); + }*/ + + } } diff --git a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java index 8151a3f19..c01e4a238 100644 --- a/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java +++ b/src/test/java/it/pn/frontend/e2e/stepDefinitions/mittente/DownloadFileMittentePagoPATest.java @@ -5,6 +5,7 @@ import io.cucumber.java.en.When; import it.pn.frontend.e2e.common.DettaglioNotificaSection; import it.pn.frontend.e2e.listeners.Hooks; +import it.pn.frontend.e2e.model.Disservice; import it.pn.frontend.e2e.pages.mittente.DisserviziAppPAPage; import it.pn.frontend.e2e.pages.mittente.PiattaformaNotifichePage; import it.pn.frontend.e2e.section.mittente.DettaglioNotificaMittenteSection; @@ -12,16 +13,22 @@ import it.pn.frontend.e2e.utility.DataPopulation; import it.pn.frontend.e2e.utility.DownloadFile; import it.pn.frontend.e2e.utility.WebTool; +import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.junit.Assert; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.Wait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.awt.*; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import org.apache.pdfbox.pdmodel.PDDocument; + public class DownloadFileMittentePagoPATest { @@ -184,8 +191,8 @@ public void siSelezionanoIlFileDaScaricare(String nomeFile) { } downloadFile = new DownloadFile(this.driver); - String varabileAmbiente = System.getProperty("environment"); - final String url = downloadFile.getUrl("https://webapi." + varabileAmbiente + ".notifichedigitali.it/delivery-push/"); + String variabileAmbiente = System.getProperty("environment"); + final String url = downloadFile.getUrl("https://webapi." + variabileAmbiente + ".notifichedigitali.it/delivery-push/"); if (headless && url.isEmpty()) { logger.error("Non è stato recuperato url per il download per il link: " + nomeFile); Assert.fail("Non è stato recuperato url per il download per il link: " + nomeFile); @@ -280,17 +287,26 @@ public void nellaPaginaPiattaformaNotificheSiVerificaLEsistenzaDellaNotificaConI } } - @And("Visualizza file di un disservizio risolto, {string}") - public void visualizzaFileDiUnDisservizioRisoltoDaScaricare(String nomeFile) { - logger.info("Si cerca di scaricare il file " + nomeFile); + @And("Visualizza file di un disservizio risolto") + public void visualizzaFileDiUnDisservizioRisoltoDaScaricare() { + logger.info("controllo esistenza file disservizio "); DisserviziAppPAPage disserviziAppPAPage = new DisserviziAppPAPage(driver); disserviziAppPAPage.clickVisualizzaAttestazione(); - WebTool.waitTime(3); + logger.info("URL"+ driver.getCurrentUrl()); + + WebTool.waitTime(4); + //disserviziAppPAPage.checkVisualizzazioneFileDisservizioRisolto(); + } + + @And("Download file attestazione disservizio, {string}") + public void downloadFileAttestazioneDisservizio(String nomeFile) { + logger.info("si effettua download del disservizio"); + + DisserviziAppPAPage disserviziAppPAPage = new DisserviziAppPAPage(driver); - disserviziAppPAPage.checkVisualizzazioneFileDisservizioRisolto(); - disserviziAppPAPage.goBack(); + disserviziAppPAPage.downloadAttestazioneDisservizio(nomeFile); } } diff --git a/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature b/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature index 992305c8d..3d7e6b815 100644 --- a/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature +++ b/src/test/resources/feature/2-mittente/6_disserviziAppPA/025_A25_downloadAttestazioniDisserviziRisolti.feature @@ -18,7 +18,9 @@ Feature: Mittente effettua il download delle attestazioni dei disservizi risolti Then Si visualizza correttamente la pagina dello 'stato della piattaforma' di mittente And Si visualizza correttamente la tabella dei disservizi And Si visualizza un record in elenco relativo ad un disservizio risolto - And Visualizza file di un disservizio risolto, "Attestazione opponibile a terzi" + And Visualizza file di un disservizio risolto + # And Download file attestazione disservizio, "Attestazione_opponibile_a_terzi" + #And Controllo corrispondenza dati con pdf, "Attestazione_opponibile_a_terzi" And Logout da portale mittente