mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-08-29 04:06:58 +00:00
87 lines
1.9 KiB
Go
87 lines
1.9 KiB
Go
package credhelper
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestUserAgent_Format(t *testing.T) {
|
|
old := cfg
|
|
cfg = Config{
|
|
BinaryName: "docker-credential-test",
|
|
Version: "0.0.0",
|
|
Commit: "abc1234deadbeef",
|
|
}
|
|
t.Cleanup(func() { cfg = old })
|
|
|
|
ua := userAgent()
|
|
if !strings.HasPrefix(ua, "docker-credential-test/") {
|
|
t.Errorf("UA missing product prefix: %q", ua)
|
|
}
|
|
if !strings.Contains(ua, "commit abc1234)") {
|
|
t.Errorf("UA should truncate commit to 7 chars, got %q", ua)
|
|
}
|
|
if strings.Contains(ua, "Go-http-client") {
|
|
t.Errorf("UA leaked default Go client string: %q", ua)
|
|
}
|
|
}
|
|
|
|
func TestHTTPClient_SetsUserAgent(t *testing.T) {
|
|
old := cfg
|
|
cfg = Config{
|
|
BinaryName: "docker-credential-test",
|
|
Version: "0.0.0",
|
|
Commit: "abc1234",
|
|
}
|
|
t.Cleanup(func() { cfg = old })
|
|
|
|
var got string
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
got = r.Header.Get("User-Agent")
|
|
w.WriteHeader(http.StatusNoContent)
|
|
}))
|
|
t.Cleanup(srv.Close)
|
|
|
|
resp, err := httpClient().Get(srv.URL)
|
|
if err != nil {
|
|
t.Fatalf("get: %v", err)
|
|
}
|
|
resp.Body.Close()
|
|
|
|
want := userAgent()
|
|
if got != want {
|
|
t.Errorf("server saw User-Agent %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestHTTPClient_RespectsExplicitUserAgent(t *testing.T) {
|
|
old := cfg
|
|
cfg = Config{BinaryName: "docker-credential-test"}
|
|
t.Cleanup(func() { cfg = old })
|
|
|
|
var got string
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
got = r.Header.Get("User-Agent")
|
|
w.WriteHeader(http.StatusNoContent)
|
|
}))
|
|
t.Cleanup(srv.Close)
|
|
|
|
req, err := http.NewRequest("GET", srv.URL, nil)
|
|
if err != nil {
|
|
t.Fatalf("new request: %v", err)
|
|
}
|
|
req.Header.Set("User-Agent", "explicit-test/1.0")
|
|
|
|
resp, err := httpClient().Do(req)
|
|
if err != nil {
|
|
t.Fatalf("do: %v", err)
|
|
}
|
|
resp.Body.Close()
|
|
|
|
if got != "explicit-test/1.0" {
|
|
t.Errorf("explicit UA was overwritten: got %q", got)
|
|
}
|
|
}
|