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:
cneicy committed 2026-09-26 04:49:11 +08:00
1 parent aa6c3f50f4
commit ceddfd3d6b
828 files changed
+122253 -13702

No files matched your search

+73
View File
@@ -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())
})
}
}