mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 17:41:57 +08:00
Feat: CORS / Test: site/config route
This commit is contained in:
40
routers/main_test.go
Normal file
40
routers/main_test.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package routers
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
model "github.com/HFO4/cloudreve/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/gorm"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var mock sqlmock.Sqlmock
|
||||
var memDB *gorm.DB
|
||||
|
||||
// TestMain 初始化数据库Mock
|
||||
func TestMain(m *testing.M) {
|
||||
// 设置gin为测试模式
|
||||
gin.SetMode(gin.TestMode)
|
||||
|
||||
// 初始化sqlmock
|
||||
var db *sql.DB
|
||||
var err error
|
||||
db, mock, err = sqlmock.New()
|
||||
if err != nil {
|
||||
panic("An error was not expected when opening a stub database connection")
|
||||
}
|
||||
|
||||
// 初始话内存数据库
|
||||
model.Init()
|
||||
memDB = model.DB
|
||||
|
||||
model.DB, _ = gorm.Open("mysql", db)
|
||||
defer db.Close()
|
||||
|
||||
m.Run()
|
||||
}
|
||||
|
||||
func switchToMemDB() {
|
||||
model.DB = memDB
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"github.com/HFO4/cloudreve/middleware"
|
||||
"github.com/HFO4/cloudreve/pkg/conf"
|
||||
"github.com/HFO4/cloudreve/routers/controllers"
|
||||
"github.com/gin-contrib/cors"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -16,6 +17,14 @@ func InitRouter() *gin.Engine {
|
||||
*/
|
||||
r.Use(middleware.Session(conf.SystemConfig.SessionSecret))
|
||||
|
||||
// CORS TODO: 根据配置文件来
|
||||
r.Use(cors.New(cors.Config{
|
||||
AllowOrigins: []string{"http://localhost:3000"},
|
||||
AllowMethods: []string{"PUT", "POST", "GET", "OPTIONS"},
|
||||
AllowHeaders: []string{"X-PINGOTHER", "Content-Type"},
|
||||
AllowCredentials: true,
|
||||
}))
|
||||
|
||||
// 测试模式加入Mock助手中间件
|
||||
if gin.Mode() == gin.TestMode {
|
||||
r.Use(middleware.MockHelper())
|
||||
|
||||
@@ -2,14 +2,12 @@ package routers
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/HFO4/cloudreve/middleware"
|
||||
"github.com/HFO4/cloudreve/models"
|
||||
"github.com/HFO4/cloudreve/pkg/serializer"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/mojocn/base64Captcha"
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -18,25 +16,6 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var mock sqlmock.Sqlmock
|
||||
|
||||
// TestMain 初始化数据库Mock
|
||||
func TestMain(m *testing.M) {
|
||||
// 设置gin为测试模式
|
||||
gin.SetMode(gin.TestMode)
|
||||
|
||||
var db *sql.DB
|
||||
var err error
|
||||
db, mock, err = sqlmock.New()
|
||||
if err != nil {
|
||||
panic("An error was not expected when opening a stub database connection")
|
||||
}
|
||||
model.DB, _ = gorm.Open("mysql", db)
|
||||
defer db.Close()
|
||||
|
||||
m.Run()
|
||||
}
|
||||
|
||||
func TestPing(t *testing.T) {
|
||||
asserts := assert.New(t)
|
||||
router := InitRouter()
|
||||
@@ -239,3 +218,43 @@ func TestSessionAuthCheck(t *testing.T) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestSiteConfigRoute(t *testing.T) {
|
||||
switchToMemDB()
|
||||
asserts := assert.New(t)
|
||||
router := InitRouter()
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
req, _ := http.NewRequest(
|
||||
"GET",
|
||||
"/Api/V3/Site/Config",
|
||||
nil,
|
||||
)
|
||||
router.ServeHTTP(w, req)
|
||||
asserts.Equal(200, w.Code)
|
||||
asserts.Contains(w.Body.String(), "Cloudreve")
|
||||
|
||||
w.Body.Reset()
|
||||
|
||||
// 消除无效值
|
||||
model.DB.Model(&model.Setting{
|
||||
Model: gorm.Model{
|
||||
ID: 2,
|
||||
},
|
||||
}).UpdateColumn("name", "siteName_b")
|
||||
|
||||
req, _ = http.NewRequest(
|
||||
"GET",
|
||||
"/Api/V3/Site/Config",
|
||||
nil,
|
||||
)
|
||||
router.ServeHTTP(w, req)
|
||||
asserts.Equal(200, w.Code)
|
||||
asserts.Contains(w.Body.String(), "\"title\":\"\"")
|
||||
|
||||
model.DB.Model(&model.Setting{
|
||||
Model: gorm.Model{
|
||||
ID: 2,
|
||||
},
|
||||
}).UpdateColumn("name", "siteName")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user