重构项目
This commit is contained in:
@@ -11,6 +11,8 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
"go.uber.org/zap"
|
||||
"gopkg.d7z.net/gitea-pages/pkg"
|
||||
"gopkg.d7z.net/middleware/kv"
|
||||
"gopkg.d7z.net/middleware/tools"
|
||||
)
|
||||
|
||||
type TestServer struct {
|
||||
@@ -18,31 +20,39 @@ type TestServer struct {
|
||||
dummy *ProviderDummy
|
||||
}
|
||||
|
||||
type SvcOpts func(options *pkg.ServerOptions)
|
||||
|
||||
func NewDefaultTestServer() *TestServer {
|
||||
return NewTestServer("example.com", func(options *pkg.ServerOptions) {
|
||||
options.CacheMetaTTL = 0
|
||||
})
|
||||
return NewTestServer("example.com")
|
||||
}
|
||||
|
||||
func NewTestServer(domain string, opts ...SvcOpts) *TestServer {
|
||||
func NewTestServer(domain string) *TestServer {
|
||||
atom := zap.NewAtomicLevel()
|
||||
atom.SetLevel(zap.DebugLevel)
|
||||
cfg := zap.NewProductionConfig()
|
||||
cfg.Level = atom
|
||||
logger, _ := cfg.Build()
|
||||
zap.ReplaceGlobals(logger)
|
||||
options := pkg.DefaultOptions(domain)
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
dummy, err := NewDummy()
|
||||
if err != nil {
|
||||
zap.S().Fatal(err)
|
||||
}
|
||||
|
||||
server := pkg.NewPageServer(dummy, options)
|
||||
memoryKV, _ := kv.NewMemory("")
|
||||
server := pkg.NewPageServer(
|
||||
http.DefaultClient,
|
||||
dummy,
|
||||
domain,
|
||||
"gh-pages",
|
||||
memoryKV,
|
||||
tools.NewPrefixKV(memoryKV, "cache"),
|
||||
0,
|
||||
func(w http.ResponseWriter, r *http.Request, err error) {
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
http.Error(w, "page not found.", http.StatusNotFound)
|
||||
} else if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
return &TestServer{
|
||||
dummy: dummy,
|
||||
@@ -77,5 +87,5 @@ func (t *TestServer) OpenFile(url string) ([]byte, *http.Response, error) {
|
||||
}
|
||||
|
||||
func (t *TestServer) Close() error {
|
||||
return t.server.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
34
tests/filter_qjs_test.go
Normal file
34
tests/filter_qjs_test.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gopkg.d7z.net/gitea-pages/tests/core"
|
||||
)
|
||||
|
||||
func Test_JS(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/index.js", `
|
||||
function get(a,b) {
|
||||
return a + b;
|
||||
}
|
||||
request.Write()
|
||||
`)
|
||||
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
|
||||
routes:
|
||||
- path: "api/v1/**"
|
||||
qjs:
|
||||
exec: "index.js"
|
||||
`)
|
||||
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/api/v1/get")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "512 + 512 = 1024", string(data))
|
||||
|
||||
}
|
||||
@@ -5,8 +5,6 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gopkg.d7z.net/gitea-pages/tests/core"
|
||||
|
||||
_ "gopkg.d7z.net/gitea-pages/pkg/renders"
|
||||
)
|
||||
|
||||
func Test_Filter_Template(t *testing.T) {
|
||||
@@ -15,9 +13,12 @@ func Test_Filter_Template(t *testing.T) {
|
||||
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/tmpl/include.txt", "master")
|
||||
server.AddFile("org1/repo1/gh-pages/tmpl/include.html", `hello world, {{ load "tmpl/include.txt" }}`)
|
||||
|
||||
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
|
||||
routes:
|
||||
- path: tmpl/index.html
|
||||
- path: tmpl/index.html,tmpl/include.html
|
||||
template:
|
||||
`)
|
||||
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
|
||||
@@ -31,4 +32,7 @@ routes:
|
||||
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))
|
||||
data, _, err = server.OpenFile("https://org1.example.com/repo1/tmpl/include.html")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "hello world, master", string(data))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user