2018-09-06 21:42:41 +00:00
|
|
|
package lfshttp
|
2016-12-20 17:29:26 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2017-10-05 14:35:49 +00:00
|
|
|
func TestHttpsProxyFromGitConfig(t *testing.T) {
|
2017-10-25 21:38:13 +00:00
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"HTTPS_PROXY": "https://proxy-from-env:8080",
|
2017-10-25 21:33:20 +00:00
|
|
|
}, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"http.proxy": "https://proxy-from-git-config:8080",
|
|
|
|
}))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-01-06 21:36:34 +00:00
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
2018-07-20 23:10:49 +00:00
|
|
|
assert.Equal(t, "proxy-from-git-config:8080", proxyURL.Host)
|
2016-12-20 17:29:26 +00:00
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
2017-10-05 14:35:49 +00:00
|
|
|
func TestProxyForURL(t *testing.T) {
|
2017-10-25 21:38:13 +00:00
|
|
|
c, err := NewClient(NewContext(nil, nil, map[string]string{
|
2017-10-05 14:35:49 +00:00
|
|
|
"http.proxy": "https://proxy-for-everyone:8080",
|
|
|
|
"http.https://some-host.com:123.proxy": "https://proxy-for-some-host:8080",
|
|
|
|
}))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
|
|
|
assert.Equal(t, "proxy-for-some-host:8080", proxyURL.Host)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
2016-12-20 17:29:26 +00:00
|
|
|
func TestHttpProxyFromGitConfig(t *testing.T) {
|
2017-10-25 21:38:13 +00:00
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"HTTPS_PROXY": "https://proxy-from-env:8080",
|
2017-10-25 21:33:20 +00:00
|
|
|
}, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"http.proxy": "http://proxy-from-git-config:8080",
|
|
|
|
}))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-10-05 14:35:49 +00:00
|
|
|
req, err := http.NewRequest("GET", "http://some-host.com:123/foo/bar", nil)
|
2016-12-20 17:29:26 +00:00
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-01-06 21:36:34 +00:00
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
2017-10-05 14:35:49 +00:00
|
|
|
assert.Equal(t, "proxy-from-git-config:8080", proxyURL.Host)
|
2016-12-20 17:29:26 +00:00
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestProxyFromEnvironment(t *testing.T) {
|
2017-10-25 21:38:13 +00:00
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"HTTPS_PROXY": "https://proxy-from-env:8080",
|
2017-10-25 21:33:20 +00:00
|
|
|
}, nil))
|
2016-12-20 17:29:26 +00:00
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-01-06 21:36:34 +00:00
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
2016-12-20 17:29:26 +00:00
|
|
|
assert.Equal(t, "proxy-from-env:8080", proxyURL.Host)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestProxyIsNil(t *testing.T) {
|
2017-10-25 21:33:20 +00:00
|
|
|
c, _ := NewClient(nil)
|
2016-12-20 17:29:26 +00:00
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "http://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-01-06 21:36:34 +00:00
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
2016-12-20 17:29:26 +00:00
|
|
|
assert.Nil(t, proxyURL)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestProxyNoProxy(t *testing.T) {
|
2017-10-25 21:38:13 +00:00
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"NO_PROXY": "some-host",
|
2017-10-25 21:33:20 +00:00
|
|
|
}, map[string]string{
|
2016-12-20 17:29:26 +00:00
|
|
|
"http.proxy": "https://proxy-from-git-config:8080",
|
|
|
|
}))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host:8080", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
2017-01-06 21:36:34 +00:00
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
2016-12-20 17:29:26 +00:00
|
|
|
assert.Nil(t, proxyURL)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
2019-06-06 13:59:27 +00:00
|
|
|
|
2020-01-07 15:45:31 +00:00
|
|
|
func TestProxyNoProxyWithWildcard(t *testing.T) {
|
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
|
|
|
"NO_PROXY": "*.example.com",
|
|
|
|
}, map[string]string{
|
|
|
|
"http.proxy": "https://proxy-from-git-config:8080",
|
|
|
|
}))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://foo.example.com:8080", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
|
|
|
assert.Nil(t, proxyURL)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
|
|
|
|
2019-06-06 13:59:27 +00:00
|
|
|
func TestSocksProxyFromEnvironment(t *testing.T) {
|
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
|
|
|
"HTTPS_PROXY": "socks5://proxy-from-env:3128",
|
|
|
|
}, nil))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
|
|
|
assert.Equal(t, "socks5", proxyURL.Scheme)
|
|
|
|
assert.Equal(t, "proxy-from-env:3128", proxyURL.Host)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|
2020-09-22 17:01:07 +00:00
|
|
|
|
|
|
|
func TestSocks5hProxyFromEnvironment(t *testing.T) {
|
|
|
|
c, err := NewClient(NewContext(nil, map[string]string{
|
|
|
|
"HTTPS_PROXY": "socks5h://proxy-from-env:3128",
|
|
|
|
}, nil))
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
req, err := http.NewRequest("GET", "https://some-host.com:123/foo/bar", nil)
|
|
|
|
require.Nil(t, err)
|
|
|
|
|
|
|
|
proxyURL, err := proxyFromClient(c)(req)
|
|
|
|
assert.Equal(t, "socks5", proxyURL.Scheme)
|
|
|
|
assert.Equal(t, "proxy-from-env:3128", proxyURL.Host)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
}
|