2016-12-19 18:45:22 +00:00
|
|
|
package lfsapi
|
2016-12-14 04:08:05 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestEndpointDefaultsToOrigin(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.lfsurl": "abc",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "abc", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointOverridesOrigin(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"lfs.url": "abc",
|
|
|
|
"remote.origin.lfsurl": "def",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "abc", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointNoOverrideDefaultRemote(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.lfsurl": "abc",
|
|
|
|
"remote.other.lfsurl": "def",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "abc", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointUseAlternateRemote(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.lfsurl": "abc",
|
|
|
|
"remote.other.lfsurl": "def",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "other")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "def", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "https://example.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBareEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "https://example.com/foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointSeparateClonePushUrl(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "https://example.com/foo/bar.git",
|
|
|
|
"remote.origin.pushurl": "https://readwrite.com/foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e = finder.Endpoint("upload", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://readwrite.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointOverriddenSeparateClonePushLfsUrl(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "https://example.com/foo/bar.git",
|
|
|
|
"remote.origin.pushurl": "https://readwrite.com/foo/bar.git",
|
|
|
|
"remote.origin.lfsurl": "https://examplelfs.com/foo/bar",
|
|
|
|
"remote.origin.lfspushurl": "https://readwritelfs.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://examplelfs.com/foo/bar", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e = finder.Endpoint("upload", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://readwritelfs.com/foo/bar", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEndpointGlobalSeparateLfsPush(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"lfs.url": "https://readonly.com/foo/bar",
|
|
|
|
"lfs.pushurl": "https://write.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://readonly.com/foo/bar", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e = finder.Endpoint("upload", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://write.com/foo/bar", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSSHEndpointOverridden(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "git@example.com:foo/bar",
|
|
|
|
"remote.origin.lfsurl": "lfs",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSSHEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "ssh://git@example.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "git@example.com", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "foo/bar", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSSHCustomPortEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "ssh://git@example.com:9000/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "git@example.com", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "foo/bar", e.SshPath)
|
|
|
|
assert.Equal(t, "9000", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBareSSHEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "git@example.com:foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "git@example.com", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "foo/bar.git", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSSHEndpointFromGlobalLfsUrl(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"lfs.url": "git@example.com:foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git", e.Url)
|
|
|
|
assert.Equal(t, "git@example.com", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "foo/bar.git", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHTTPEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "http://example.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "http://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBareHTTPEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "http://example.com/foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "http://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGitEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "git://example.com/foo/bar",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGitEndpointAddsLfsSuffixWithCustomProtocol(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "git://example.com/foo/bar",
|
|
|
|
"lfs.gitprotocol": "http",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "http://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBareGitEndpointAddsLfsSuffix(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-14 04:08:05 +00:00
|
|
|
"remote.origin.url": "git://example.com/foo/bar.git",
|
|
|
|
}))
|
|
|
|
|
2016-12-19 18:45:22 +00:00
|
|
|
e := finder.Endpoint("download", "")
|
2016-12-14 04:08:05 +00:00
|
|
|
assert.Equal(t, "https://example.com/foo/bar.git/info/lfs", e.Url)
|
|
|
|
assert.Equal(t, "", e.SshUserAndHost)
|
|
|
|
assert.Equal(t, "", e.SshPath)
|
|
|
|
assert.Equal(t, "", e.SshPort)
|
|
|
|
}
|
|
|
|
|
2016-12-19 18:55:47 +00:00
|
|
|
func TestAccessConfig(t *testing.T) {
|
|
|
|
type accessTest struct {
|
|
|
|
Access string
|
|
|
|
PrivateAccess bool
|
|
|
|
}
|
|
|
|
|
|
|
|
tests := map[string]accessTest{
|
|
|
|
"": {"none", false},
|
|
|
|
"basic": {"basic", true},
|
|
|
|
"BASIC": {"basic", true},
|
|
|
|
"private": {"basic", true},
|
|
|
|
"PRIVATE": {"basic", true},
|
|
|
|
"invalidauth": {"invalidauth", true},
|
|
|
|
}
|
|
|
|
|
|
|
|
for value, expected := range tests {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-19 18:55:47 +00:00
|
|
|
"lfs.url": "http://example.com",
|
|
|
|
"lfs.http://example.com.access": value,
|
|
|
|
"lfs.https://example.com.access": "bad",
|
|
|
|
}))
|
|
|
|
|
|
|
|
dl := finder.Endpoint("upload", "")
|
|
|
|
ul := finder.Endpoint("download", "")
|
|
|
|
|
|
|
|
if access := finder.AccessFor(dl.Url); access != Access(expected.Access) {
|
|
|
|
t.Errorf("Expected Access() with value %q to be %v, got %v", value, expected.Access, access)
|
|
|
|
}
|
|
|
|
if access := finder.AccessFor(ul.Url); access != Access(expected.Access) {
|
|
|
|
t.Errorf("Expected Access() with value %q to be %v, got %v", value, expected.Access, access)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test again but with separate push url
|
|
|
|
for value, expected := range tests {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-19 18:55:47 +00:00
|
|
|
"lfs.url": "http://example.com",
|
|
|
|
"lfs.pushurl": "http://examplepush.com",
|
|
|
|
"lfs.http://example.com.access": value,
|
|
|
|
"lfs.http://examplepush.com.access": value,
|
|
|
|
"lfs.https://example.com.access": "bad",
|
|
|
|
}))
|
|
|
|
|
|
|
|
dl := finder.Endpoint("upload", "")
|
|
|
|
ul := finder.Endpoint("download", "")
|
|
|
|
|
|
|
|
if access := finder.AccessFor(dl.Url); access != Access(expected.Access) {
|
|
|
|
t.Errorf("Expected Access() with value %q to be %v, got %v", value, expected.Access, access)
|
|
|
|
}
|
|
|
|
if access := finder.AccessFor(ul.Url); access != Access(expected.Access) {
|
|
|
|
t.Errorf("Expected Access() with value %q to be %v, got %v", value, expected.Access, access)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestAccessAbsentConfig(t *testing.T) {
|
|
|
|
finder := NewEndpointFinder(nil)
|
|
|
|
assert.Equal(t, NoneAccess, finder.AccessFor(finder.Endpoint("download", "").Url))
|
|
|
|
assert.Equal(t, NoneAccess, finder.AccessFor(finder.Endpoint("upload", "").Url))
|
|
|
|
}
|
|
|
|
|
2016-12-19 19:24:22 +00:00
|
|
|
func TestSetAccess(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{}))
|
2016-12-19 19:24:22 +00:00
|
|
|
|
|
|
|
assert.Equal(t, NoneAccess, finder.AccessFor("http://example.com"))
|
|
|
|
finder.SetAccess("http://example.com", NTLMAccess)
|
|
|
|
assert.Equal(t, NTLMAccess, finder.AccessFor("http://example.com"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestChangeAccess(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-19 19:24:22 +00:00
|
|
|
"lfs.http://example.com.access": "basic",
|
|
|
|
}))
|
|
|
|
|
|
|
|
assert.Equal(t, BasicAccess, finder.AccessFor("http://example.com"))
|
|
|
|
finder.SetAccess("http://example.com", NTLMAccess)
|
|
|
|
assert.Equal(t, NTLMAccess, finder.AccessFor("http://example.com"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDeleteAccessWithNone(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-19 19:24:22 +00:00
|
|
|
"lfs.http://example.com.access": "basic",
|
|
|
|
}))
|
|
|
|
|
|
|
|
assert.Equal(t, BasicAccess, finder.AccessFor("http://example.com"))
|
|
|
|
finder.SetAccess("http://example.com", NoneAccess)
|
|
|
|
assert.Equal(t, NoneAccess, finder.AccessFor("http://example.com"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDeleteAccessWithEmptyString(t *testing.T) {
|
2017-01-06 18:34:43 +00:00
|
|
|
finder := NewEndpointFinder(TestEnv(map[string]string{
|
2016-12-19 19:24:22 +00:00
|
|
|
"lfs.http://example.com.access": "basic",
|
|
|
|
}))
|
|
|
|
|
|
|
|
assert.Equal(t, BasicAccess, finder.AccessFor("http://example.com"))
|
|
|
|
finder.SetAccess("http://example.com", Access(""))
|
|
|
|
assert.Equal(t, NoneAccess, finder.AccessFor("http://example.com"))
|
|
|
|
}
|