105 lines
1.9 KiB
Go
105 lines
1.9 KiB
Go
package proxyconfig
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type kv struct {
|
|
key string
|
|
value string
|
|
}
|
|
|
|
func TestReadFromEnvNoPrefix(t *testing.T) {
|
|
var (
|
|
url = "example.com"
|
|
username = "user"
|
|
password = "password"
|
|
|
|
noProxy = "test.com,other.com"
|
|
)
|
|
tt := map[string]struct {
|
|
envs []*kv
|
|
want *ProxyConfig
|
|
}{
|
|
"no envs": {},
|
|
"http only": {
|
|
envs: []*kv{
|
|
{"HTTP_URL", url},
|
|
{"HTTP_USERNAME", username},
|
|
{"HTTP_PASSWORD", password},
|
|
},
|
|
want: &ProxyConfig{
|
|
HTTP: &ProxyServerConfig{
|
|
URL: url,
|
|
Username: username,
|
|
Password: password,
|
|
},
|
|
},
|
|
},
|
|
"https only": {
|
|
envs: []*kv{
|
|
{"HTTPS_URL", url},
|
|
{"HTTPS_USERNAME", username},
|
|
{"HTTPS_PASSWORD", password},
|
|
},
|
|
want: &ProxyConfig{
|
|
HTTPS: &ProxyServerConfig{
|
|
URL: url,
|
|
Username: username,
|
|
Password: password,
|
|
},
|
|
},
|
|
},
|
|
"no proxy only": {
|
|
envs: []*kv{
|
|
{"NO_PROXY", noProxy},
|
|
},
|
|
want: &ProxyConfig{
|
|
NoProxy: strings.Split(noProxy, ","),
|
|
},
|
|
},
|
|
"all set": {
|
|
envs: []*kv{
|
|
{"HTTP_URL", url},
|
|
{"HTTP_USERNAME", username},
|
|
{"HTTP_PASSWORD", password},
|
|
{"HTTPS_URL", url},
|
|
{"HTTPS_USERNAME", username},
|
|
{"HTTPS_PASSWORD", password},
|
|
{"NO_PROXY", noProxy},
|
|
},
|
|
want: &ProxyConfig{
|
|
HTTP: &ProxyServerConfig{
|
|
URL: url,
|
|
Username: username,
|
|
Password: password,
|
|
},
|
|
HTTPS: &ProxyServerConfig{
|
|
URL: url,
|
|
Username: username,
|
|
Password: password,
|
|
},
|
|
NoProxy: strings.Split(noProxy, ","),
|
|
},
|
|
},
|
|
}
|
|
|
|
for name, tc := range tt {
|
|
t.Run(name, func(t *testing.T) {
|
|
os.Clearenv()
|
|
for _, kv := range tc.envs {
|
|
os.Setenv(kv.key, kv.value)
|
|
}
|
|
|
|
got, err := ReadFromEnv("")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tc.want, got)
|
|
})
|
|
}
|
|
}
|