AdGuardHome/internal/home/httpclient_internal_test.go
Stanislav Chzhen aab19465b3 Pull request 2462: 7979-custom-user-agent
Squashed commit of the following:

commit 056fd6f64b2eb883154e9806e9c71bdf28cd9883
Merge: bd505ab68 cd79a4ac7
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Sep 2 19:45:17 2025 +0300

    Merge branch 'master' into 7979-custom-user-agent

commit bd505ab68591a771d33205a45460f58b38110c9e
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Sep 2 19:23:55 2025 +0300

    all: imp code

commit ee53f1d625eac3c2cd7310adf97e35ec81d73a3a
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Sep 2 13:08:53 2025 +0300

    all: custom user agent
2025-09-02 20:21:33 +03:00

80 lines
1.7 KiB
Go

package home
import (
"io"
"net/http"
"net/http/httptest"
"testing"
"github.com/AdguardTeam/golibs/httphdr"
"github.com/AdguardTeam/golibs/testutil"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCustomUserAgentTransport_RoundTrip(t *testing.T) {
t.Parallel()
const (
customUA = "Custom-user-agent/1.1"
presentUA = "Present-user-agent/1.1"
)
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ua := r.Header.Get(httphdr.UserAgent)
_, err := io.WriteString(w, ua)
require.NoError(testutil.PanicT{}, err)
}))
t.Cleanup(srv.Close)
testCases := []struct {
client *http.Client
wantUA []byte
reqUA string
name string
}{{
client: &http.Client{Transport: http.DefaultTransport},
wantUA: []byte("Go-http-client/1.1"),
reqUA: "",
name: "default",
}, {
client: &http.Client{
Transport: newCustomUserAgentTransport(http.DefaultTransport, customUA),
},
reqUA: "",
wantUA: []byte(customUA),
name: "custom",
}, {
client: &http.Client{
Transport: newCustomUserAgentTransport(http.DefaultTransport, customUA),
},
reqUA: presentUA,
wantUA: []byte(presentUA),
name: "present",
}}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
ctx := testutil.ContextWithTimeout(t, testTimeout)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, srv.URL, nil)
require.NoError(t, err)
if tc.reqUA != "" {
req.Header.Set(httphdr.UserAgent, tc.reqUA)
}
resp, err := tc.client.Do(req)
require.NoError(t, err)
testutil.CleanupAndRequireSuccess(t, resp.Body.Close)
got, err := io.ReadAll(resp.Body)
require.NoError(t, err)
assert.Equal(t, tc.wantUA, got)
})
}
}