Feature: API Validation @libre @positive Scenario: Repair PDF Given I generate a PDF file as "fileInput" When I send the API request to the endpoint "/api/v1/misc/repair" Then the response content type should be "application/pdf" And the response file should have size greater than 0 And the response status code should be 200 @ocr @positive Scenario: Process PDF with OCR Given I generate a PDF file as "fileInput" And the request data includes | parameter | value | | languages | eng | | sidecar | false | | deskew | true | | clean | true | | cleanFinal | true | | ocrType | Normal | | ocrRenderType | hocr | | removeImagesAfter| false | When I send the API request to the endpoint "/api/v1/misc/ocr-pdf" Then the response content type should be "application/pdf" And the response file should have size greater than 0 And the response status code should be 200 @ocr @positive Scenario: Extract Image Scans Given I generate a PDF file as "fileInput" And the pdf contains 3 images of size 300x300 on 2 pages And the request data includes | parameter | value | | angleThreshold | 5 | | tolerance | 20 | | minArea | 8000 | | minContourArea | 500 | | borderSize | 1 | When I send the API request to the endpoint "/api/v1/misc/extract-image-scans" Then the response content type should be "application/octet-stream" And the response file should have extension ".zip" And the response ZIP should contain 2 files And the response file should have size greater than 0 And the response status code should be 200 @ocr @positive Scenario: Process PDF with OCR Given I generate a PDF file as "fileInput" And the request data includes | parameter | value | | languages | eng | | sidecar | false | | deskew | true | | clean | true | | cleanFinal | true | | ocrType | Force | | ocrRenderType | hocr | | removeImagesAfter| false | When I send the API request to the endpoint "/api/v1/misc/ocr-pdf" Then the response content type should be "application/pdf" And the response file should have size greater than 0 And the response status code should be 200 @libre @positive Scenario Outline: Convert PDF to various word formats Given I generate a PDF file as "fileInput" And the pdf contains 3 pages with random text And the request data includes | parameter | value | | outputFormat | | When I send the API request to the endpoint "/api/v1/convert/pdf/word" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension "" Examples: | format | extension | | docx | .docx | | odt | .odt | | doc | .doc | @ocr @pdfa1 Scenario: PDFA Given I use an example file at "exampleFiles/pdfa2.pdf" as parameter "fileInput" And the request data includes | parameter | value | | outputFormat | pdfa | When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa" Then the response status code should be 200 And the response file should have extension ".pdf" And the response file should have size greater than 100 @ocr @pdfa2 Scenario: PDFA1 Given I use an example file at "exampleFiles/pdfa1.pdf" as parameter "fileInput" And the request data includes | parameter | value | | outputFormat | pdfa-1 | When I send the API request to the endpoint "/api/v1/convert/pdf/pdfa" Then the response status code should be 200 And the response file should have extension ".pdf" And the response file should have size greater than 100 @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost3.pdf" as parameter "fileInput" And the request data includes | parameter | value | | optimizeLevel | 4 | When I send the API request to the endpoint "/api/v1/misc/compress-pdf" Then the response status code should be 200 And the response file should have extension ".pdf" And the response file should have size greater than 100 @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost2.pdf" as parameter "fileInput" And the request data includes | parameter | value | | optimizeLevel | 1 | | expectedOutputSize | 5KB | When I send the API request to the endpoint "/api/v1/misc/compress-pdf" Then the response status code should be 200 And the response file should have extension ".pdf" And the response file should have size greater than 100 @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost1.pdf" as parameter "fileInput" And the request data includes | parameter | value | | optimizeLevel | 1 | | expectedOutputSize | 5KB | When I send the API request to the endpoint "/api/v1/misc/compress-pdf" Then the response status code should be 200 And the response file should have extension ".pdf" And the response file should have size greater than 100 @libre @positive Scenario Outline: Convert PDF to various types Given I generate a PDF file as "fileInput" And the pdf contains 3 pages with random text And the request data includes | parameter | value | | outputFormat | | When I send the API request to the endpoint "/api/v1/convert/pdf/" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension "" Examples: | type | format | extension | | text | rtf | .rtf | | text | txt | .txt | | presentation | ppt | .ppt | | presentation | pptx | .pptx | | presentation | odp | .odp | | html | html | .zip | @libre @positive @topdf Scenario Outline: Convert PDF to various types Given I use an example file at "exampleFiles/example" as parameter "fileInput" When I send the API request to the endpoint "/api/v1/convert/file/pdf" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension ".pdf" Examples: | extension | | .docx | | .odp | | .odt | | .pptx | | .rtf | @calibre @positive @htmltopdf Scenario: Convert HTML to PDF Given I use an example file at "exampleFiles/example.html" as parameter "fileInput" When I send the API request to the endpoint "/api/v1/convert/html/pdf" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension ".pdf" @calibre @positive @zippedhtmltopdf Scenario: Convert zipped HTML to PDF Given I use an example file at "exampleFiles/example_html.zip" as parameter "fileInput" When I send the API request to the endpoint "/api/v1/convert/html/pdf" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension ".pdf" @calibre @positive @markdowntopdf Scenario: Convert Markdown to PDF Given I use an example file at "exampleFiles/example.md" as parameter "fileInput" When I send the API request to the endpoint "/api/v1/convert/markdown/pdf" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension ".pdf" @markdown @positive Scenario: Convert PDF to Markdown format Given I generate a PDF file as "fileInput" And the pdf contains 3 pages with random text When I send the API request to the endpoint "/api/v1/convert/pdf/markdown" Then the response status code should be 200 And the response file should have size greater than 100 And the response file should have extension ".md" @positive @pdftocsv Scenario: Convert PDF with tables to CSV format Given I use an example file at "exampleFiles/tables.pdf" as parameter "fileInput" And the request data includes | parameter | value | | outputFormat | csv | | pageNumbers | all | When I send the API request to the endpoint "/api/v1/convert/pdf/csv" Then the response status code should be 200 And the response file should have size greater than 200 And the response file should have extension ".zip" And the response ZIP should contain 3 files