重构路由

This commit is contained in:
ExplodingDragon
2025-11-13 00:21:45 +08:00
parent 351e1c2ad1
commit c7c6180272
18 changed files with 381 additions and 201 deletions

View File

@@ -30,7 +30,7 @@ func NewDummy() (*ProviderDummy, error) {
}, nil
}
func (p *ProviderDummy) Repos(ctx context.Context, owner string) (map[string]string, error) {
func (p *ProviderDummy) Repos(_ context.Context, owner string) (map[string]string, error) {
dir, err := os.ReadDir(filepath.Join(p.BaseDir, owner))
if err != nil {
return nil, err
@@ -44,7 +44,7 @@ func (p *ProviderDummy) Repos(ctx context.Context, owner string) (map[string]str
return repos, nil
}
func (p *ProviderDummy) Branches(ctx context.Context, owner, repo string) (map[string]*core.BranchInfo, error) {
func (p *ProviderDummy) Branches(_ context.Context, owner, repo string) (map[string]*core.BranchInfo, error) {
dir, err := os.ReadDir(filepath.Join(p.BaseDir, owner, repo))
if err != nil {
return nil, err

View File

@@ -99,47 +99,3 @@ func Test_fail_back(t *testing.T) {
assert.Equal(t, "hello world 2", string(data))
})
}
func Test_get_v_route(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
v-route: true
`)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/404")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
}
func Test_get_v_ignore(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/bad.html", "hello world")
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
ignore: .pages.yaml
`)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/bad.html")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
ignore: bad.*
`)
data, _, err = server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
_, resp, _ := server.OpenFile("https://org1.example.com/repo1/bad.html")
assert.Equal(t, 404, resp.StatusCode)
// 默认排除的内容
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/.pages.yaml")
assert.Equal(t, 404, resp.StatusCode)
}

View File

@@ -0,0 +1,36 @@
package tests
import (
"testing"
"github.com/stretchr/testify/assert"
"gopkg.d7z.net/gitea-pages/tests/core"
)
func Test_filter_block(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/bad.html", "hello world")
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/bad.html")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: "bad.html"
block:
code:
`)
data, _, err = server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
_, resp, _ := server.OpenFile("https://org1.example.com/repo1/bad.html")
assert.Equal(t, 403, resp.StatusCode)
// 默认排除的内容
_, resp, _ = server.OpenFile("https://org1.example.com/repo1/.pages.yaml")
assert.Equal(t, 403, resp.StatusCode)
}

View File

@@ -0,0 +1,35 @@
package tests
import (
"testing"
"github.com/stretchr/testify/assert"
"gopkg.d7z.net/gitea-pages/tests/core"
)
func Test_filter_failback(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/404.html", "404 page")
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: "**"
failback:
path: index.html
`)
//data, _, err := server.OpenFile("https://org1.example.com/repo1/")
//assert.NoError(t, err)
//assert.Equal(t, "hello world", string(data))
//
//// 测试默认回退
//data, _, err = server.OpenFile("https://org1.example.com/repo1/404")
//assert.NoError(t, err)
//assert.Equal(t, "hello world", string(data))
// 测试存在的页面
data, _, err := server.OpenFile("https://org1.example.com/repo1/404.html")
assert.NoError(t, err)
assert.Equal(t, "404 page", string(data))
}

View File

@@ -7,7 +7,7 @@ import (
"gopkg.d7z.net/gitea-pages/tests/core"
)
func Test_proxy(t *testing.T) {
func test_proxy(t *testing.T) {
server := core.NewDefaultTestServer()
hs := core.NewServer()
defer server.Close()
@@ -17,8 +17,12 @@ func Test_proxy(t *testing.T) {
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: /api/**
reverse_proxy:
prefix: /api
target: %s
proxy:
/api: %s/test
/abi: %s/
`, hs.URL, hs.URL)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
@@ -36,7 +40,7 @@ proxy:
assert.Equal(t, 404, resp.StatusCode)
}
func Test_cname_proxy(t *testing.T) {
func test_cname_proxy(t *testing.T) {
server := core.NewDefaultTestServer()
hs := core.NewServer()
defer server.Close()

View File

@@ -9,14 +9,16 @@ import (
_ "gopkg.d7z.net/gitea-pages/pkg/renders"
)
func Test_get_render(t *testing.T) {
func Test_Filter_Template(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/tmpl/index.html", "hello world,{{ .Request.Host }}")
server.AddFile("org1/repo1/gh-pages/tmpl/ignore.html", "hello world, No Template")
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
templates:
gotemplate: tmpl/*.html
routes:
- path: tmpl/index.html
template:
`)
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
assert.NoError(t, err)
@@ -25,4 +27,8 @@ templates:
data, _, err = server.OpenFile("https://org1.example.com/repo1/tmpl/index.html")
assert.NoError(t, err)
assert.Equal(t, "hello world,org1.example.com", string(data))
data, _, err = server.OpenFile("https://org1.example.com/repo1/tmpl/ignore.html")
assert.NoError(t, err)
assert.Equal(t, "hello world, No Template", string(data))
}