111 lines
2.7 KiB
Go
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)
|
|
}
|