diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-08-18 13:40:20 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-08-18 13:40:20 +0200 |
| commit | a3ccdd9f491c20771cfda343ebebd4b5d0ea6602 (patch) | |
| tree | f0ad530dd072c55c6f46dfea23af993fb31333d4 /internal | |
| parent | 5d17264c8ab8042042162f3b968557aabc4976b3 (diff) | |
| download | go-gg-a3ccdd9f491c20771cfda343ebebd4b5d0ea6602.tar.gz | |
test coverage for microprom
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/accept/accept.go | 7 | ||||
| -rw-r--r-- | internal/accept/accept_test.go | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/internal/accept/accept.go b/internal/accept/accept.go index 5ed6e66..c23905a 100644 --- a/internal/accept/accept.go +++ b/internal/accept/accept.go @@ -103,6 +103,11 @@ func (h Header) Negotiate(mediaTypes ...string) Option[string] { return None[string]() } + // if nothing was offered, we default to our own preferred option + if len(h.options) == 0 { + return Some(offers[0].OriginalValue) + } + // NOTE: ParseHeader() sorts options by descending weight, so the first match wins. for _, opt := range h.options { MEDIATYPE: @@ -128,5 +133,5 @@ func (h Header) Negotiate(mediaTypes ...string) Option[string] { } } - return Some(offers[0].OriginalValue) + return None[string]() } diff --git a/internal/accept/accept_test.go b/internal/accept/accept_test.go index 90b6934..edfef42 100644 --- a/internal/accept/accept_test.go +++ b/internal/accept/accept_test.go @@ -12,6 +12,7 @@ import ( ) func TestAcceptWithHeader(t *testing.T) { + // asking for a wide range of formats, including wildcard matches h := accept.ParseHeader([]string{"text/*;q=0.3, text/plain;format=flowed, text/plain;format=fixed;q=0.4, */*;q=0.5"}) assert.Equal(t, h.Negotiate( @@ -38,6 +39,18 @@ func TestAcceptWithHeader(t *testing.T) { "text/markdown", // matches with q=0.3 "text/plain", // matches with q=0.3 (but first wins) ), Some("text/markdown")) + + // asking for specific formats only + h = accept.ParseHeader([]string{"image/png, image/jpeg"}) + + assert.Equal(t, h.Negotiate( + "text/plain", + "image/png", + ), Some("image/png")) + + assert.Equal(t, h.Negotiate( + "text/plain", + ), None[string]()) } func TestAcceptWithoutHeader(t *testing.T) { |
