test(integration): add more tags, complete embed feature tests suite, fix order with metadata

This commit is contained in:
Julien Neuhart
2025-11-13 22:08:28 +01:00
parent 4429aea8a4
commit f9ad8bd2d5
23 changed files with 449 additions and 182 deletions

View File

@@ -1,6 +1,8 @@
# TODO:
# 1. JavaScript disabled on some feature.
@chromium
@chromium-convert-url
Feature: /forms/chromium/convert/url
Scenario: POST /forms/chromium/convert/url (Default)
@@ -646,6 +648,7 @@ Feature: /forms/chromium/convert/url
Invalid form data: form field 'metadata' is invalid (got 'foo', resulting to unmarshal metadata: invalid character 'o' in literal false (expecting 'a'))
"""
@split
Scenario: POST /forms/chromium/convert/url (Split Intervals)
Given I have a default Gotenberg container
Given I have a static server
@@ -675,6 +678,8 @@ Feature: /forms/chromium/convert/url
"""
# See https://github.com/gotenberg/gotenberg/issues/1130.
@split
@output-filename
Scenario: POST /forms/chromium/convert/url (Split Output Filename)
Given I have a default Gotenberg container
Given I have a static server
@@ -705,6 +710,7 @@ Feature: /forms/chromium/convert/url
Page 3
"""
@split
Scenario: POST /forms/chromium/convert/url (Split Pages)
Given I have a default Gotenberg container
Given I have a static server
@@ -729,6 +735,7 @@ Feature: /forms/chromium/convert/url
Page 3
"""
@split
Scenario: POST /forms/chromium/convert/url (Split Pages & Unify)
Given I have a default Gotenberg container
Given I have a static server
@@ -753,6 +760,7 @@ Feature: /forms/chromium/convert/url
Page 3
"""
@split
Scenario: POST /forms/chromium/convert/url (Split Many PDFs - Lot of Pages)
Given I have a default Gotenberg container
Given I have a static server
@@ -787,6 +795,7 @@ Feature: /forms/chromium/convert/url
Page 12
"""
@convert
Scenario: POST /forms/chromium/convert/url (PDF/A-1b & PDF/UA-1)
Given I have a default Gotenberg container
Given I have a static server
@@ -833,6 +842,9 @@ Feature: /forms/chromium/convert/url
Then the response PDF(s) should be valid "PDF/UA-1" with a tolerance of 3 failed rule(s)
# See https://github.com/gotenberg/gotenberg/issues/1130.
@convert
@split
@output-filename
Scenario: POST /forms/chromium/convert/url (Split & PDF/A-1b & PDF/UA-1 & Output Filename)
Given I have a default Gotenberg container
Given I have a static server
@@ -867,6 +879,7 @@ Feature: /forms/chromium/convert/url
Then the response PDF(s) should be valid "PDF/A-1b" with a tolerance of 1 failed rule(s)
Then the response PDF(s) should be valid "PDF/UA-1" with a tolerance of 3 failed rule(s)
@metadata
Scenario: POST /forms/chromium/convert/url (Metadata)
Given I have a default Gotenberg container
Given I have a static server
@@ -903,6 +916,7 @@ Feature: /forms/chromium/convert/url
}
"""
@flatten
Scenario: POST /forms/chromium/convert/url (Flatten)
Given I have a default Gotenberg container
Given I have a static server
@@ -914,6 +928,7 @@ Feature: /forms/chromium/convert/url
Then there should be 1 PDF(s) in the response
Then the response PDF(s) should be flatten
@encrypt
Scenario: POST /forms/chromium/convert/url (Encrypt - user password only)
Given I have a default Gotenberg container
Given I have a static server
@@ -925,6 +940,7 @@ Feature: /forms/chromium/convert/url
Then there should be 1 PDF(s) in the response
Then the response PDF(s) should be encrypted
@encrypt
Scenario: POST /forms/chromium/convert/url (Encrypt - both user and owner passwords)
Given I have a default Gotenberg container
Given I have a static server
@@ -937,7 +953,28 @@ Feature: /forms/chromium/convert/url
Then there should be 1 PDF(s) in the response
Then the response PDF(s) should be encrypted
@embed
Scenario: POST /foo/forms/chromium/convert/url (Embeds)
Given I have a default Gotenberg container
Given I have a static server
When I make a "POST" request to Gotenberg at the "/forms/chromium/convert/url" endpoint with the following form data and header(s):
| url | http://host.docker.internal:%d/html/testdata/page-1-html/index.html | field |
| embeds | testdata/embed_1.xml | file |
| embeds | testdata/embed_2.xml | file |
| Gotenberg-Output-Filename | foo | header |
Then the response status code should be 200
Then the response header "Content-Type" should be "application/pdf"
Then there should be 1 PDF(s) in the response
Then there should be the following file(s) in the webhook request:
| foo.pdf |
Then the response PDF(s) should have the "embed_1.xml" file embedded
Then the response PDF(s) should have the "embed_2.xml" file embedded
# FIXME: once decrypt is done, add encrypt and check after the content of the PDF.
@convert
@metadata
@flatten
@embed
Scenario: POST /forms/chromium/convert/url (PDF/A-1b & PDF/UA-1 & Metadata & Flatten)
Given I have a default Gotenberg container
Given I have a static server
@@ -947,15 +984,19 @@ Feature: /forms/chromium/convert/url
| pdfua | true | field |
| metadata | {"Author":"Julien Neuhart","Copyright":"Julien Neuhart","CreateDate":"2006-09-18T16:27:50-04:00","Creator":"Gotenberg","Keywords":["first","second"],"Marked":true,"ModDate":"2006-09-18T16:27:50-04:00","PDFVersion":1.7,"Producer":"Gotenberg","Subject":"Sample","Title":"Sample","Trapped":"Unknown"} | field |
| flatten | true | field |
| embeds | testdata/embed_1.xml | file |
| embeds | testdata/embed_2.xml | file |
| Gotenberg-Output-Filename | foo | header |
Then the response status code should be 200
Then the response header "Content-Type" should be "application/pdf"
Then there should be 1 PDF(s) in the response
Then there should be the following file(s) in the response:
| foo.pdf |
Then the response PDF(s) should be valid "PDF/A-1b" with a tolerance of 7 failed rule(s)
Then the response PDF(s) should be valid "PDF/A-1b" with a tolerance of 9 failed rule(s)
Then the response PDF(s) should be valid "PDF/UA-1" with a tolerance of 2 failed rule(s)
Then the response PDF(s) should be flatten
Then the response PDF(s) should have the "embed_1.xml" file embedded
Then the response PDF(s) should have the "embed_2.xml" file embedded
When I make a "POST" request to Gotenberg at the "/forms/pdfengines/metadata/read" endpoint with the following form data and header(s):
| files | teststore/foo.pdf | file |
Then the response status code should be 200
@@ -1000,6 +1041,7 @@ Feature: /forms/chromium/convert/url
Then the Gotenberg container should log the following entries:
| "trace":"forms_chromium_convert_url" |
@webhook
Scenario: POST /forms/chromium/convert/url (Webhook)
Given I have a default Gotenberg container
Given I have a webhook server
@@ -1039,20 +1081,3 @@ Feature: /forms/chromium/convert/url
| url | http://host.docker.internal:%d/html/testdata/page-1-html/index.html | field |
Then the response status code should be 200
Then the response header "Content-Type" should be "application/pdf"
@embed
Scenario: POST /foo/forms/chromium/convert/url (Embeds)
Given I have a default Gotenberg container
And I have a static server
When I make a "POST" request to Gotenberg at the "/forms/chromium/convert/url" endpoint with the following form data and header(s):
| embeds | testdata/embed_1.xml | file |
| embeds | testdata/embed_2.xml | file |
| url | http://host.docker.internal:%d/html/testdata/page-1-html/index.html | field |
| Gotenberg-Output-Filename | foo | header |
Then the response status code should be 200
And the response header "Content-Type" should be "application/pdf"
And there should be 1 PDF(s) in the response
And there should be the following file(s) in the webhook request:
| foo.pdf |
And the "foo.pdf" PDF should have the "embed_1.xml" file embedded in it
And the "foo.pdf" PDF should have the "embed_2.xml" file embedded in it