Files

111 lines
2.7 KiB
Go

package service
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tcs-iptv/tcs/internal/model"
)
func TestAdminService_OrgCRUD(t *testing.T) {
a := NewAdminService()
// 创建组织
org, err := a.CreateOrg(model.Organization{
Name: "陕西IPTV运营公司", OrgNode: "6101", Province: "陕西", Type: model.OrgTypeRegulator,
})
require.NoError(t, err)
assert.NotEmpty(t, org.ID)
assert.Equal(t, model.OrgStatusActive, org.Status)
// 查询组织
got, err := a.GetOrg(org.ID)
require.NoError(t, err)
assert.Equal(t, "陕西IPTV运营公司", got.Name)
// 更新组织
updated, err := a.UpdateOrg(org.ID, model.Organization{Name: "陕西IPTV"})
require.NoError(t, err)
assert.Equal(t, "陕西IPTV", updated.Name)
// 列出组织
orgs := a.ListOrgs(model.OrgTypeRegulator)
assert.Len(t, orgs, 1)
// 禁用组织
require.NoError(t, a.DisableOrg(org.ID))
got, _ = a.GetOrg(org.ID)
assert.Equal(t, model.OrgStatusDisabled, got.Status)
}
func TestAdminService_UserCRUD(t *testing.T) {
a := NewAdminService()
// 先创建组织
org, err := a.CreateOrg(model.Organization{
Name: "测试CP公司", Type: model.OrgTypeCP,
})
require.NoError(t, err)
// 创建用户
user, err := a.CreateUser(model.User{
Username: "testuser", FullName: "测试用户", OrgID: org.ID, Role: "cp",
})
require.NoError(t, err)
assert.NotEmpty(t, user.ID)
assert.NotEmpty(t, user.APIKey)
assert.NotEmpty(t, user.APISecret)
assert.Equal(t, model.UserStatusActive, user.Status)
// 用户名唯一性校验
_, err = a.CreateUser(model.User{
Username: "testuser", OrgID: org.ID, Role: "cp",
})
assert.Error(t, err)
// 不存在的组织
_, err = a.CreateUser(model.User{
Username: "user2", OrgID: "nonexistent", Role: "cp",
})
assert.Error(t, err)
// 查询用户
got, err := a.GetUser(user.ID)
require.NoError(t, err)
assert.Equal(t, "testuser", got.Username)
// 更新用户
updated, err := a.UpdateUser(user.ID, model.User{FullName: "更新用户名"})
require.NoError(t, err)
assert.Equal(t, "更新用户名", updated.FullName)
// 列出用户
users := a.ListUsers(org.ID, "")
assert.Len(t, users, 1)
// API Key 查找
secret, role, ok := a.LookupByAPIKey(user.APIKey)
require.True(t, ok)
assert.Equal(t, user.APISecret, secret)
assert.Equal(t, "cp", role)
// 重置 API Key
newUser, err := a.ResetAPIKey(user.ID)
require.NoError(t, err)
assert.NotEqual(t, user.APIKey, newUser.APIKey)
// 旧 Key 失效
_, _, ok = a.LookupByAPIKey(user.APIKey)
assert.False(t, ok)
// 新 Key 生效
_, _, ok = a.LookupByAPIKey(newUser.APIKey)
assert.True(t, ok)
// 禁用用户
require.NoError(t, a.DisableUser(user.ID))
_, _, ok = a.LookupByAPIKey(newUser.APIKey)
assert.False(t, ok)
}