Test that a source query in an image URL reaches the signature check

Round trips through a chi router for source queries holding /, ;, ,,
=, &, ? and a percent-escape, both as GenerateSignedURL writes them and
with characters other than ? and % percent-encoded, plus the README's
example of a source URL with a query. These fail until the fix.

Model: opus-5-5
This commit is contained in:
2026-10-15 21:12:25 +00:00
parent f743930f71
commit 4634d2dc2f
2 changed files with 130 additions and 0 deletions
+37
View File
@@ -475,6 +475,43 @@ func TestGenerateSignedURL_WithoutQueryString(t *testing.T) {
}
}
// TestGenerateSignedURL_ReadmeQueryExample checks the README's example of a
// source URL with a query, https://cdn.example.com/img?url=https://origin.example.com/my%20cat.jpg:
// its signature with the README's key, and the path GenerateSignedURL writes
// for it, with the "?" written as %3F and the "%" as %25.
func TestGenerateSignedURL_ReadmeQueryExample(t *testing.T) {
t.Parallel()
signer := signature.New("example-signing-key-for-documentation")
req := signature.Request{
SourceHost: testHost,
SourcePath: "/img",
SourceQuery: "url=https://origin.example.com/my%20cat.jpg",
Width: 800,
Height: 600,
Format: testFormatWebP,
Quality: 85,
FitMode: testFitCover,
Expires: time.Unix(1704067200, 0),
}
const wantSig = "37aFa9GSVCZM1kRY9SzMOk2fOg_M7Wt5gKNR4xM-FYA="
gotSig := signer.Sign(&req)
if gotSig != wantSig {
t.Errorf("Sign() = %q, want %q", gotSig, wantSig)
}
const wantPath = "/v1/image/cdn.example.com" +
"/img%3Furl=https://origin.example.com/my%2520cat.jpg/800x600.webp"
gotPath, _, _ := signer.GenerateSignedURL(&req, time.Hour)
if gotPath != wantPath {
t.Errorf("GenerateSignedURL() path = %q, want %q", gotPath, wantPath)
}
}
func TestParseParams(t *testing.T) {
t.Parallel()