gogs/internal/repoutil/repoutil_test.go

164 lines
3.2 KiB
Go

// Copyright 2022 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package repoutil
import (
"runtime"
"testing"
"github.com/stretchr/testify/assert"
"gogs.io/gogs/internal/conf"
)
func TestNewCloneLink(t *testing.T) {
conf.SetMockApp(t,
conf.AppOpts{
RunUser: "git",
},
)
conf.SetMockServer(t,
conf.ServerOpts{
ExternalURL: "https://example.com/",
},
)
t.Run("regular SSH port", func(t *testing.T) {
conf.SetMockSSH(t,
conf.SSHOpts{
Domain: "example.com",
Port: 22,
},
)
got := NewCloneLink("alice", "example", false)
want := &CloneLink{
SSH: "git@example.com:alice/example.git",
HTTPS: "https://example.com/alice/example.git",
}
assert.Equal(t, want, got)
})
t.Run("irregular SSH port", func(t *testing.T) {
conf.SetMockSSH(t,
conf.SSHOpts{
Domain: "example.com",
Port: 2222,
},
)
got := NewCloneLink("alice", "example", false)
want := &CloneLink{
SSH: "ssh://git@example.com:2222/alice/example.git",
HTTPS: "https://example.com/alice/example.git",
}
assert.Equal(t, want, got)
})
t.Run("wiki", func(t *testing.T) {
conf.SetMockSSH(t,
conf.SSHOpts{
Domain: "example.com",
Port: 22,
},
)
got := NewCloneLink("alice", "example", true)
want := &CloneLink{
SSH: "git@example.com:alice/example.wiki.git",
HTTPS: "https://example.com/alice/example.wiki.git",
}
assert.Equal(t, want, got)
})
}
func TestHTMLURL(t *testing.T) {
conf.SetMockServer(t,
conf.ServerOpts{
ExternalURL: "https://example.com/",
},
)
got := HTMLURL("alice", "example")
want := "https://example.com/alice/example"
assert.Equal(t, want, got)
}
func TestCompareCommitsPath(t *testing.T) {
got := CompareCommitsPath("alice", "example", "old", "new")
want := "alice/example/compare/old...new"
assert.Equal(t, want, got)
}
func TestUserPath(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping testing on Windows")
return
}
conf.SetMockRepository(t,
conf.RepositoryOpts{
Root: "/home/git/gogs-repositories",
},
)
got := UserPath("alice")
want := "/home/git/gogs-repositories/alice"
assert.Equal(t, want, got)
}
func TestRepositoryPath(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping testing on Windows")
return
}
conf.SetMockRepository(t,
conf.RepositoryOpts{
Root: "/home/git/gogs-repositories",
},
)
got := RepositoryPath("alice", "example")
want := "/home/git/gogs-repositories/alice/example.git"
assert.Equal(t, want, got)
}
func TestRepositoryLocalPath(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping testing on Windows")
return
}
conf.SetMockServer(
t,
conf.ServerOpts{
AppDataPath: "data",
},
)
got := RepositoryLocalPath(1)
want := "data/tmp/local-repo/1"
assert.Equal(t, want, got)
}
func TestRepositoryLocalWikiPath(t *testing.T) {
if runtime.GOOS == "windows" {
t.Skip("Skipping testing on Windows")
return
}
conf.SetMockServer(
t,
conf.ServerOpts{
AppDataPath: "data",
},
)
got := RepositoryLocalWikiPath(1)
want := "data/tmp/local-wiki/1"
assert.Equal(t, want, got)
}