mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-07-02 08:27:41 +08:00
test(webhook): add integration testing for the webhook feature - testing the custom Content-Disposition header from #1165
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# TODO:
|
||||
# 1. Other HTTP Methods
|
||||
# 2. Errors
|
||||
|
||||
Feature: Webhook
|
||||
|
||||
Scenario: Default
|
||||
Given I have a default Gotenberg container
|
||||
Given I have a webhook server
|
||||
When I make a "POST" request to Gotenberg at the "/forms/pdfengines/flatten" endpoint with the following form data and header(s):
|
||||
| files | testdata/page_1.pdf | file |
|
||||
| Gotenberg-Webhook-Url | http://host.docker.internal:%d/webhook | header |
|
||||
| Gotenberg-Webhook-Error-Url | http://host.docker.internal:%d/webhook/error | header |
|
||||
Then the response status code should be 204
|
||||
When I wait for the asynchronous request to the webhook
|
||||
Then the webhook request header "Content-Type" should be "application/pdf"
|
||||
Then there should be 1 PDF(s) in the webhook request
|
||||
|
||||
Scenario: Extra HTTP Headers
|
||||
Given I have a default Gotenberg container
|
||||
Given I have a webhook server
|
||||
When I make a "POST" request to Gotenberg at the "/forms/pdfengines/flatten" endpoint with the following form data and header(s):
|
||||
| files | testdata/page_1.pdf | file |
|
||||
| Gotenberg-Webhook-Url | http://host.docker.internal:%d/webhook | header |
|
||||
| Gotenberg-Webhook-Error-Url | http://host.docker.internal:%d/webhook/error | header |
|
||||
| Gotenberg-Webhook-Extra-Http-Headers | {"X-Foo":"bar","Content-Disposition":"inline"} | header |
|
||||
Then the response status code should be 204
|
||||
When I wait for the asynchronous request to the webhook
|
||||
Then the webhook request header "Content-Type" should be "application/pdf"
|
||||
Then the webhook request header "X-Foo" should be "bar"
|
||||
# https://github.com/gotenberg/gotenberg/issues/1165
|
||||
Then the webhook request header "Content-Disposition" should be "inline"
|
||||
Then there should be 1 PDF(s) in the webhook request
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/cucumber/godog"
|
||||
"github.com/google/uuid"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/mholt/archives"
|
||||
)
|
||||
@@ -62,7 +63,16 @@ func newServer(ctx context.Context, workdir string) (*server, error) {
|
||||
|
||||
filename, ok := params["filename"]
|
||||
if !ok {
|
||||
return webhookErr(errors.New("no filename in Content-Disposition header"))
|
||||
filename = uuid.NewString()
|
||||
contentType := s.req.Header.Get("Content-Type")
|
||||
switch contentType {
|
||||
case "application/zip":
|
||||
filename = fmt.Sprintf("%s.zip", filename)
|
||||
case "application/pdf":
|
||||
filename = fmt.Sprintf("%s.pdf", filename)
|
||||
default:
|
||||
return webhookErr(errors.New("no filename in Content-Disposition header"))
|
||||
}
|
||||
}
|
||||
|
||||
dirPath := fmt.Sprintf("%s/%s", workdir, s.req.Header.Get("Gotenberg-Trace"))
|
||||
|
||||
Reference in New Issue
Block a user