mirror of
https://github.com/moby/moby.git
synced 2026-06-24 08:48:23 +00:00
Add a WithUpstreamUserAgent utility instead of exporting the context-key used. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package dockerversion
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/moby/moby/v2/pkg/useragent"
|
|
"gotest.tools/v3/assert"
|
|
is "gotest.tools/v3/assert/cmp"
|
|
)
|
|
|
|
func TestDockerUserAgent(t *testing.T) {
|
|
tests := []struct {
|
|
doc string
|
|
ctx context.Context
|
|
metadata []useragent.VersionInfo
|
|
expected string
|
|
}{
|
|
{
|
|
doc: "daemon user-agent",
|
|
ctx: t.Context(),
|
|
expected: getDaemonUserAgent(),
|
|
},
|
|
{
|
|
doc: "daemon user-agent custom metadata",
|
|
ctx: t.Context(),
|
|
metadata: []useragent.VersionInfo{
|
|
{Name: "hello", Version: "world"},
|
|
{Name: "foo", Version: "bar"},
|
|
},
|
|
expected: getDaemonUserAgent() + ` hello/world foo/bar`,
|
|
},
|
|
{
|
|
doc: "daemon user-agent with upstream",
|
|
ctx: WithUpstreamUserAgent(t.Context(), "Magic-Client/1.2.3 (linux)"),
|
|
expected: getDaemonUserAgent() + ` UpstreamClient(Magic-Client/1.2.3 \(linux\))`,
|
|
},
|
|
{
|
|
doc: "daemon user-agent with upstream and custom metadata",
|
|
ctx: WithUpstreamUserAgent(t.Context(), "Magic-Client/1.2.3 (linux)"),
|
|
metadata: []useragent.VersionInfo{
|
|
{Name: "hello", Version: "world"},
|
|
{Name: "foo", Version: "bar"},
|
|
},
|
|
expected: getDaemonUserAgent() + ` hello/world foo/bar UpstreamClient(Magic-Client/1.2.3 \(linux\))`,
|
|
},
|
|
{
|
|
doc: "daemon user-agent with upstream special chars",
|
|
ctx: WithUpstreamUserAgent(t.Context(), `Magic-Client/1.2.3 (linux); \ test`),
|
|
expected: getDaemonUserAgent() + ` UpstreamClient(Magic-Client/1.2.3 \(linux\)\; \\ test)`,
|
|
},
|
|
{
|
|
doc: "daemon user-agent with upstream control chars",
|
|
ctx: WithUpstreamUserAgent(t.Context(), "Magic-Client/1.2.3\r\nInjected: evil"),
|
|
expected: getDaemonUserAgent() + ` UpstreamClient(Magic-Client/1.2.3Injected: evil)`,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.doc, func(t *testing.T) {
|
|
assert.Check(t, is.Equal(DockerUserAgent(tc.ctx, tc.metadata...), tc.expected))
|
|
})
|
|
}
|
|
}
|