feat(task): replace built-in task adaptors with a sandboxed JS plugin system (#7076)

This commit is contained in:
Calcium-Ion
2026-08-29 18:51:57 +08:00
committed by GitHub
parent 7037ac15bd
commit eb48396d5f
336 changed files with 52333 additions and 6369 deletions
+36
View File
@@ -1,6 +1,7 @@
package model
import (
"context"
"encoding/json"
"os"
"sync"
@@ -8,6 +9,7 @@ import (
"time"
"github.com/QuantumNous/new-api/common"
"github.com/QuantumNous/new-api/constant"
"github.com/glebarez/sqlite"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -99,6 +101,40 @@ func insertTask(t *testing.T, task *Task) {
require.NoError(t, DB.Create(task).Error)
}
func TestGetTaskForProtocolObservationScopesOwnerAndPlatform(t *testing.T) {
truncateTables(t)
task := &Task{
TaskID: "task_protocol_scope",
UserId: 7,
Platform: "plugin-a",
Status: TaskStatusInProgress,
}
insertTask(t, task)
got, exists, err := GetTaskForProtocolObservation(context.Background(), 7, "plugin-a", task.TaskID)
require.NoError(t, err)
require.True(t, exists)
assert.Equal(t, task.ID, got.ID)
for _, query := range []struct {
userID int
platform string
}{
{userID: 8, platform: "plugin-a"},
{userID: 7, platform: "plugin-b"},
} {
got, exists, err = GetTaskForProtocolObservation(context.Background(), query.userID, constant.TaskPlatform(query.platform), task.TaskID)
require.NoError(t, err)
assert.False(t, exists)
assert.Nil(t, got)
}
cancelled, cancel := context.WithCancel(context.Background())
cancel()
_, _, err = GetTaskForProtocolObservation(cancelled, 7, "plugin-a", task.TaskID)
require.ErrorIs(t, err, context.Canceled)
}
// ---------------------------------------------------------------------------
// Snapshot / Equal — pure logic tests (no DB)
// ---------------------------------------------------------------------------