feat: sync deployed v1.0.0-rc.38-custom.42
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
This commit is contained in:
1 parent
aa6c3f50f4
commit
ceddfd3d6b
828 files changed
+122253
-13702
No files matched your search
@@ -0,0 +1,73 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/QuantumNous/new-api/common"
|
||||
"github.com/QuantumNous/new-api/model"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestSystemTaskListFiltersAndPaginationResponse(t *testing.T) {
|
||||
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
||||
require.NoError(t, err)
|
||||
sqlDB, err := db.DB()
|
||||
require.NoError(t, err)
|
||||
previousDB := model.DB
|
||||
model.DB = db
|
||||
t.Cleanup(func() {
|
||||
model.DB = previousDB
|
||||
require.NoError(t, sqlDB.Close())
|
||||
})
|
||||
require.NoError(t, db.AutoMigrate(&model.SystemTask{}))
|
||||
require.NoError(t, db.Create(&[]model.SystemTask{
|
||||
{TaskID: "older", Type: model.SystemTaskTypeModelUpdate, Status: model.SystemTaskStatusFailed},
|
||||
{TaskID: "newer", Type: model.SystemTaskTypeModelUpdate, Status: model.SystemTaskStatusFailed},
|
||||
{TaskID: "other-status", Type: model.SystemTaskTypeModelUpdate, Status: model.SystemTaskStatusSucceeded},
|
||||
{TaskID: "other-type", Type: model.SystemTaskTypeChannelTest, Status: model.SystemTaskStatusFailed},
|
||||
}).Error)
|
||||
recorder := httptest.NewRecorder()
|
||||
c, _ := gin.CreateTestContext(recorder)
|
||||
c.Request = httptest.NewRequest(http.MethodGet, "/api/system-task/list?scope=history&type=model_update&status=failed&offset=1&limit=1", nil)
|
||||
ListSystemTasks(c)
|
||||
require.Equal(t, http.StatusOK, recorder.Code)
|
||||
var response struct {
|
||||
Success bool `json:"success"`
|
||||
Total int64 `json:"total"`
|
||||
Data []model.SystemTaskResponse `json:"data"`
|
||||
}
|
||||
require.NoError(t, common.Unmarshal(recorder.Body.Bytes(), &response))
|
||||
assert.True(t, response.Success)
|
||||
assert.EqualValues(t, 2, response.Total)
|
||||
require.Len(t, response.Data, 1)
|
||||
assert.Equal(t, "older", response.Data[0].TaskID)
|
||||
}
|
||||
|
||||
func TestSystemTaskInvalidFiltersAreRejected(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
query string
|
||||
handler gin.HandlerFunc
|
||||
}{
|
||||
{"?scope=invalid", ListSystemTasks},
|
||||
{"?status=unknown", ListSystemTasks},
|
||||
{"?offset=-1", ListSystemTasks},
|
||||
{"?limit=invalid", ListSystemTasks},
|
||||
{"?status=unknown", DeleteSystemTaskHistory},
|
||||
{"?scope=invalid", DeleteSystemTaskHistory},
|
||||
} {
|
||||
t.Run(tc.query, func(t *testing.T) {
|
||||
recorder := httptest.NewRecorder()
|
||||
c, _ := gin.CreateTestContext(recorder)
|
||||
c.Request = httptest.NewRequest(http.MethodGet, "/"+tc.query, nil)
|
||||
tc.handler(c)
|
||||
assert.Equal(t, http.StatusBadRequest, recorder.Code)
|
||||
assert.JSONEq(t, `{"success":false,"message":"invalid system task filters"}`, recorder.Body.String())
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user