|
- package service
-
- import (
- "testing"
-
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/constant"
- "github.com/QuantumNous/new-api/model"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
-
- func TestResolveKlingAssetChannel_PrefersBoundChannel(t *testing.T) {
- db := setupDoubaoAssetChannelDB(t)
- createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "bound-key", common.ChannelStatusEnabled)
- createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
- require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
-
- channel, err := ResolveKlingAssetChannel(10, "default")
-
- require.NoError(t, err)
- require.NotNil(t, channel)
- assert.Equal(t, 1, channel.Id)
- assert.Equal(t, "bound-key", channel.Key)
- }
-
- func TestResolveKlingAssetChannel_AutoMatchesAndPersistsWhenUnbound(t *testing.T) {
- db := setupDoubaoAssetChannelDB(t)
- createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
-
- channel, err := ResolveKlingAssetChannel(10, "default")
-
- require.NoError(t, err)
- require.NotNil(t, channel)
- assert.Equal(t, 1, channel.Id)
-
- binding, err := model.GetUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default")
- require.NoError(t, err)
- require.NotNil(t, binding)
- assert.Equal(t, 1, binding.ChannelId)
- }
-
- func TestResolveKlingAssetChannel_IgnoresDisabledChannel(t *testing.T) {
- db := setupDoubaoAssetChannelDB(t)
- createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "disabled-key", common.ChannelStatusAutoDisabled)
- createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "enabled-key", common.ChannelStatusEnabled)
- require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
-
- channel, err := ResolveKlingAssetChannel(10, "default")
-
- require.NoError(t, err)
- require.NotNil(t, channel)
- assert.Equal(t, 2, channel.Id)
- }
-
- func TestGetBoundKlingAssetChannelForModelRequiresAbility(t *testing.T) {
- db := setupDoubaoAssetChannelDB(t)
- createDoubaoAssetChannelForTest(t, db, 59, constant.ChannelTypeKlingAiping, "default", "key", common.ChannelStatusEnabled)
- require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 59))
-
- channel, err := GetBoundKlingAssetChannelForModel(10, "default", "kling-v2-6")
-
- require.NoError(t, err)
- assert.Nil(t, channel)
- }
-
- func TestGetBoundKlingAssetChannelForModelFindsBoundChannel(t *testing.T) {
- db := setupDoubaoAssetChannelDB(t)
- createDoubaoAssetChannelForTest(t, db, 59, constant.ChannelTypeKlingAiping, "default", "key", common.ChannelStatusEnabled)
- createDoubaoAssetAbilityForTest(t, db, "default", "kling-v2-6", 59, true)
- require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 59))
-
- channel, err := GetBoundKlingAssetChannelForModel(10, "default", "kling-v2-6")
-
- require.NoError(t, err)
- require.NotNil(t, channel)
- assert.Equal(t, 59, channel.Id)
- }
-
- func TestIsUsableKlingAssetChannel_RejectsOtherChannelType(t *testing.T) {
- ch := &model.Channel{Type: constant.ChannelTypeDoubaoVideoCompatibleAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "default"}
- assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
- }
-
- func TestIsUsableKlingAssetChannel_RejectsGroupMismatch(t *testing.T) {
- ch := &model.Channel{Type: constant.ChannelTypeKlingAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "vip"}
- assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
- }
|