mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-19 05:02:34 +00:00

This makes sure that the log target override is respected even if a custom HTTP client is passed to logpolicy. Updates tailscale/maple#29 Signed-off-by: Anton Tolchanov <anton@tailscale.com>
87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package logpolicy
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"tailscale.com/logtail"
|
|
)
|
|
|
|
func resetLogTarget() {
|
|
os.Unsetenv("TS_LOG_TARGET")
|
|
v := reflect.ValueOf(&getLogTargetOnce).Elem()
|
|
v.Set(reflect.Zero(v.Type()))
|
|
}
|
|
|
|
func TestLogHost(t *testing.T) {
|
|
defer resetLogTarget()
|
|
|
|
tests := []struct {
|
|
env string
|
|
want string
|
|
}{
|
|
{"", logtail.DefaultHost},
|
|
{"http://foo.com", "foo.com"},
|
|
{"https://foo.com", "foo.com"},
|
|
{"https://foo.com/", "foo.com"},
|
|
{"https://foo.com:123/", "foo.com"},
|
|
}
|
|
for _, tt := range tests {
|
|
resetLogTarget()
|
|
os.Setenv("TS_LOG_TARGET", tt.env)
|
|
if got := LogHost(); got != tt.want {
|
|
t.Errorf("for env %q, got %q, want %q", tt.env, got, tt.want)
|
|
}
|
|
}
|
|
}
|
|
func TestOptions(t *testing.T) {
|
|
defer resetLogTarget()
|
|
|
|
tests := []struct {
|
|
name string
|
|
opts func() Options
|
|
wantBaseURL string
|
|
}{
|
|
{
|
|
name: "default",
|
|
opts: func() Options { return Options{} },
|
|
wantBaseURL: "",
|
|
},
|
|
{
|
|
name: "custom_baseurl",
|
|
opts: func() Options {
|
|
os.Setenv("TS_LOG_TARGET", "http://localhost:1234")
|
|
return Options{}
|
|
},
|
|
wantBaseURL: "http://localhost:1234",
|
|
},
|
|
{
|
|
name: "custom_httpc_and_baseurl",
|
|
opts: func() Options {
|
|
os.Setenv("TS_LOG_TARGET", "http://localhost:12345")
|
|
return Options{HTTPC: &http.Client{Transport: noopPretendSuccessTransport{}}}
|
|
},
|
|
wantBaseURL: "http://localhost:12345",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
resetLogTarget()
|
|
config, policy := tt.opts().init(false)
|
|
if policy == nil {
|
|
t.Fatal("unexpected nil policy")
|
|
}
|
|
if config.BaseURL != tt.wantBaseURL {
|
|
t.Errorf("got %q, want %q", config.BaseURL, tt.wantBaseURL)
|
|
}
|
|
policy.Close()
|
|
})
|
|
}
|
|
}
|