package service import ( "testing" "github.com/QuantumNous/new-api/setting" "github.com/QuantumNous/new-api/setting/ratio_setting" "github.com/QuantumNous/new-api/types" "github.com/stretchr/testify/require" ) func TestGetUserUsableGroupsAppliesSpecialRulesAndKeepsOwnGroup(t *testing.T) { originalGroups := setting.UserUsableGroups2JSONString() originalSpecial := ratio_setting.GetGroupRatioSetting().GroupSpecialUsableGroup.MarshalJSONString() t.Cleanup(func() { require.NoError(t, setting.UpdateUserUsableGroupsByJSONString(originalGroups)) require.NoError(t, types.LoadFromJsonString(ratio_setting.GetGroupRatioSetting().GroupSpecialUsableGroup, originalSpecial)) }) require.NoError(t, setting.UpdateUserUsableGroupsByJSONString(`{"default":"Default","remove":"Remove"}`)) require.NoError(t, types.LoadFromJsonString(ratio_setting.GetGroupRatioSetting().GroupSpecialUsableGroup, `{"staff":{"-:remove":"","+:premium":"Premium"}}`)) groups := GetUserUsableGroups("staff") require.Equal(t, "Default", groups["default"]) require.NotContains(t, groups, "remove") require.Equal(t, "Premium", groups["premium"]) require.Equal(t, "用户分组", groups["staff"]) } func TestGetUserAutoGroupFiltersConfiguredGroupsByAccess(t *testing.T) { originalGroups := setting.UserUsableGroups2JSONString() originalAutoGroups := setting.AutoGroups2JsonString() t.Cleanup(func() { require.NoError(t, setting.UpdateUserUsableGroupsByJSONString(originalGroups)) require.NoError(t, setting.UpdateAutoGroupsByJsonString(originalAutoGroups)) }) require.NoError(t, setting.UpdateUserUsableGroupsByJSONString(`{"default":"Default","vip":"VIP"}`)) require.NoError(t, setting.UpdateAutoGroupsByJsonString(`["vip","missing","default"]`)) require.Equal(t, []string{"vip", "default"}, GetUserAutoGroup("default")) }