mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 10:00:40 +08:00
feat(bat): 补全工作流校验与调度过滤
新增 parse clear-cache 和 i18n validate,补齐 schedule 的作用域过滤与单轮执行上限,并将列表过滤参数暴露给 bat-api dashboard。同步 RPC、OpenAPI、用户文档和回归测试。 Refs #43
This commit is contained in:
@@ -590,12 +590,14 @@ func (b *controlBackend) CatalogRefresh(ctx context.Context, force bool) (*backe
|
||||
|
||||
type scheduleBackend struct {
|
||||
*controlBackend
|
||||
scheduleCalls []string
|
||||
scheduleRaw json.RawMessage
|
||||
scheduleCalls []string
|
||||
scheduleListParams []backendrpc.ScheduleListParams
|
||||
scheduleRaw json.RawMessage
|
||||
}
|
||||
|
||||
func (b *scheduleBackend) ScheduleList(ctx context.Context) (json.RawMessage, error) {
|
||||
func (b *scheduleBackend) ScheduleList(ctx context.Context, params backendrpc.ScheduleListParams) (json.RawMessage, error) {
|
||||
b.scheduleCalls = append(b.scheduleCalls, "schedule.list")
|
||||
b.scheduleListParams = append(b.scheduleListParams, params)
|
||||
return b.scheduleRaw, nil
|
||||
}
|
||||
|
||||
@@ -631,7 +633,7 @@ func TestAdminScheduleEndpointsProxyAuthenticatedRequests(t *testing.T) {
|
||||
}
|
||||
s := NewServer(cfg, backend, nil)
|
||||
|
||||
request := httptest.NewRequest(http.MethodGet, "/admin/schedules", nil)
|
||||
request := httptest.NewRequest(http.MethodGet, "/admin/schedules?id=nightly-pull&group=res&enabled=true", nil)
|
||||
request.Header.Set("Authorization", "Bearer schedule-token")
|
||||
recorder := httptest.NewRecorder()
|
||||
s.Handler().ServeHTTP(recorder, request)
|
||||
@@ -641,6 +643,13 @@ func TestAdminScheduleEndpointsProxyAuthenticatedRequests(t *testing.T) {
|
||||
if !json.Valid(recorder.Body.Bytes()) {
|
||||
t.Fatalf("list body is not JSON: %s", recorder.Body.String())
|
||||
}
|
||||
if len(backend.scheduleListParams) != 1 ||
|
||||
backend.scheduleListParams[0].ID != "nightly-pull" ||
|
||||
backend.scheduleListParams[0].Group != "res" ||
|
||||
backend.scheduleListParams[0].Enabled == nil ||
|
||||
!*backend.scheduleListParams[0].Enabled {
|
||||
t.Fatalf("list params=%#v", backend.scheduleListParams)
|
||||
}
|
||||
|
||||
request = httptest.NewRequest(
|
||||
http.MethodPost,
|
||||
@@ -676,6 +685,14 @@ func TestAdminScheduleEndpointsProxyAuthenticatedRequests(t *testing.T) {
|
||||
if recorder.Code != http.StatusUnauthorized {
|
||||
t.Fatalf("unauthenticated list status=%d body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
|
||||
request = httptest.NewRequest(http.MethodGet, "/admin/schedules?enabled=invalid", nil)
|
||||
request.Header.Set("Authorization", "Bearer schedule-token")
|
||||
recorder = httptest.NewRecorder()
|
||||
s.Handler().ServeHTTP(recorder, request)
|
||||
if recorder.Code != http.StatusBadRequest {
|
||||
t.Fatalf("invalid query status=%d body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiscoverCallsStatusBeforeDoctor(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user