Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

89 wiersze
3.6 KiB

  1. package service
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/constant"
  6. "github.com/QuantumNous/new-api/model"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestResolveKlingAssetChannel_PrefersBoundChannel(t *testing.T) {
  11. db := setupDoubaoAssetChannelDB(t)
  12. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "bound-key", common.ChannelStatusEnabled)
  13. createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
  14. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
  15. channel, err := ResolveKlingAssetChannel(10, "default")
  16. require.NoError(t, err)
  17. require.NotNil(t, channel)
  18. assert.Equal(t, 1, channel.Id)
  19. assert.Equal(t, "bound-key", channel.Key)
  20. }
  21. func TestResolveKlingAssetChannel_AutoMatchesAndPersistsWhenUnbound(t *testing.T) {
  22. db := setupDoubaoAssetChannelDB(t)
  23. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "auto-key", common.ChannelStatusEnabled)
  24. channel, err := ResolveKlingAssetChannel(10, "default")
  25. require.NoError(t, err)
  26. require.NotNil(t, channel)
  27. assert.Equal(t, 1, channel.Id)
  28. binding, err := model.GetUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default")
  29. require.NoError(t, err)
  30. require.NotNil(t, binding)
  31. assert.Equal(t, 1, binding.ChannelId)
  32. }
  33. func TestResolveKlingAssetChannel_IgnoresDisabledChannel(t *testing.T) {
  34. db := setupDoubaoAssetChannelDB(t)
  35. createDoubaoAssetChannelForTest(t, db, 1, constant.ChannelTypeKlingAiping, "default", "disabled-key", common.ChannelStatusAutoDisabled)
  36. createDoubaoAssetChannelForTest(t, db, 2, constant.ChannelTypeKlingAiping, "default", "enabled-key", common.ChannelStatusEnabled)
  37. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 1))
  38. channel, err := ResolveKlingAssetChannel(10, "default")
  39. require.NoError(t, err)
  40. require.NotNil(t, channel)
  41. assert.Equal(t, 2, channel.Id)
  42. }
  43. func TestGetBoundKlingAssetChannelForModelRequiresAbility(t *testing.T) {
  44. db := setupDoubaoAssetChannelDB(t)
  45. createDoubaoAssetChannelForTest(t, db, 59, constant.ChannelTypeKlingAiping, "default", "key", common.ChannelStatusEnabled)
  46. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 59))
  47. channel, err := GetBoundKlingAssetChannelForModel(10, "default", "kling-v2-6")
  48. require.NoError(t, err)
  49. assert.Nil(t, channel)
  50. }
  51. func TestGetBoundKlingAssetChannelForModelFindsBoundChannel(t *testing.T) {
  52. db := setupDoubaoAssetChannelDB(t)
  53. createDoubaoAssetChannelForTest(t, db, 59, constant.ChannelTypeKlingAiping, "default", "key", common.ChannelStatusEnabled)
  54. createDoubaoAssetAbilityForTest(t, db, "default", "kling-v2-6", 59, true)
  55. require.NoError(t, model.BindUserAssetChannel(10, constant.ChannelTypeKlingAiping, "default", 59))
  56. channel, err := GetBoundKlingAssetChannelForModel(10, "default", "kling-v2-6")
  57. require.NoError(t, err)
  58. require.NotNil(t, channel)
  59. assert.Equal(t, 59, channel.Id)
  60. }
  61. func TestIsUsableKlingAssetChannel_RejectsOtherChannelType(t *testing.T) {
  62. ch := &model.Channel{Type: constant.ChannelTypeDoubaoVideoCompatibleAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "default"}
  63. assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
  64. }
  65. func TestIsUsableKlingAssetChannel_RejectsGroupMismatch(t *testing.T) {
  66. ch := &model.Channel{Type: constant.ChannelTypeKlingAiping, Key: "k", Status: common.ChannelStatusEnabled, Group: "vip"}
  67. assert.False(t, IsUsableKlingAssetChannel(ch, "default"))
  68. }