Files
new-api/model/option_task_plugin_test.go

93 lines
3.4 KiB
Go

package model
import (
"testing"
"github.com/QuantumNous/new-api/common"
"github.com/QuantumNous/new-api/constant"
"github.com/QuantumNous/new-api/pkg/jsplugin"
"github.com/QuantumNous/new-api/setting"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestTaskPluginEnabledOptionUpdatesRegistry(t *testing.T) {
originalEnabled := constant.TaskPluginEnabled
originalMap := common.OptionMap
common.OptionMap = map[string]string{}
const key = "option-master-off"
source := `
export const meta = {apiVersion: 1, key: "option-master-off", name: "Option Master", version: "1.0.0", author: {name: "Test"}, models: ["option-master-model"], fetchMode: "per_task"};
export function buildSubmitRequest() { return {}; }
export function parseSubmitResponse() { return {}; }
export function buildQueryRequest() { return {}; }
export function parseTaskResult() { return {}; }
`
_, err := jsplugin.DefaultRegistry.RegisterFactory(source, jsplugin.Options{})
require.NoError(t, err)
t.Cleanup(func() {
constant.TaskPluginEnabled = originalEnabled
jsplugin.DefaultRegistry.SetEnabled(originalEnabled)
common.OptionMap = originalMap
})
_, ok := jsplugin.DefaultRegistry.Get(key)
require.True(t, ok)
require.NoError(t, updateOptionMap("TaskPluginEnabled", "false"))
assert.False(t, constant.TaskPluginEnabled)
assert.Equal(t, "false", common.OptionMap["TaskPluginEnabled"])
_, ok = jsplugin.DefaultRegistry.Get(key)
assert.False(t, ok)
require.NoError(t, updateOptionMap("TaskPluginEnabled", "true"))
_, ok = jsplugin.DefaultRegistry.Get(key)
assert.True(t, ok)
}
func TestTaskPluginOverrideEnabledOptionUpdatesRuntimeSwitch(t *testing.T) {
originalEnabled := constant.TaskPluginOverrideEnabled
originalMap := common.OptionMap
common.OptionMap = map[string]string{}
t.Cleanup(func() {
constant.TaskPluginOverrideEnabled = originalEnabled
jsplugin.DefaultRegistry.SetOverrideEnabled(originalEnabled)
common.OptionMap = originalMap
})
require.NoError(t, updateOptionMap("TaskPluginOverrideEnabled", "false"))
assert.False(t, constant.TaskPluginOverrideEnabled)
assert.Equal(t, "false", common.OptionMap["TaskPluginOverrideEnabled"])
}
func TestTaskPluginDisabledFactoryKeysOptionUpdatesRegistry(t *testing.T) {
originalMap := common.OptionMap
common.OptionMap = map[string]string{}
const key = "option-factory-off"
source := `
export const meta = {apiVersion: 1, key: "option-factory-off", name: "Option Factory", version: "1.0.0", author: {name: "Test"}, models: ["option-factory-model"], fetchMode: "per_task"};
export function buildSubmitRequest() { return {}; }
export function parseSubmitResponse() { return {}; }
export function buildQueryRequest() { return {}; }
export function parseTaskResult() { return {}; }
`
_, err := jsplugin.DefaultRegistry.RegisterFactory(source, jsplugin.Options{})
require.NoError(t, err)
t.Cleanup(func() {
jsplugin.DefaultRegistry.SetDisabledFactoryKeys(nil)
common.OptionMap = originalMap
})
_, ok := jsplugin.DefaultRegistry.Get(key)
require.True(t, ok)
require.NoError(t, updateOptionMap(setting.TaskPluginDisabledFactoryKeysKey, `["option-factory-off"]`))
assert.Equal(t, `["option-factory-off"]`, common.OptionMap[setting.TaskPluginDisabledFactoryKeysKey])
_, ok = jsplugin.DefaultRegistry.Get(key)
assert.False(t, ok)
assert.Equal(t, []string{key}, jsplugin.DefaultRegistry.Snapshot().DisabledFactory)
}