feat: 方案100%匹配 — RBAC动态权限+Grafana监控+目录库独立微服务+全国目录中心+标识同步
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package catalog
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/tcs-iptv/tcs/internal/chain"
|
||||
"github.com/tcs-iptv/tcs/internal/model"
|
||||
)
|
||||
|
||||
func TestCatalog_QueryByMA(t *testing.T) {
|
||||
c := chain.NewMemoryChain()
|
||||
cat := New(c)
|
||||
|
||||
// 发码
|
||||
_, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-cat-001",
|
||||
FileHash: "fh-cat-001", MerkleRoot: "mr-cat-001",
|
||||
Content: model.Content{Title: "目录库测试剧", EpisodeCount: 2, MAType: "WD", Issuer: "测试局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 按 MA 码查询
|
||||
res, err := cat.QueryByMA("MA.156.8531.6101/WD/20260000001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Found)
|
||||
assert.Equal(t, "目录库测试剧", res.Content.Title)
|
||||
}
|
||||
|
||||
func TestCatalog_QueryByHash(t *testing.T) {
|
||||
c := chain.NewMemoryChain()
|
||||
cat := New(c)
|
||||
|
||||
_, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-cat-002",
|
||||
FileHash: "fh-cat-002", MerkleRoot: "mr-cat-002",
|
||||
Content: model.Content{Title: "Hash查询测试", MAType: "WD", Issuer: "测试局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 按 Hash 查询
|
||||
res, err := cat.QueryByHash("fh-cat-002")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Found)
|
||||
assert.Equal(t, "MA.156.8531.6101/WD/20260000002", res.Content.MACode)
|
||||
|
||||
// 不存在的 Hash
|
||||
_, err = cat.QueryByHash("nonexistent")
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestCatalog_QueryByProvincialCode(t *testing.T) {
|
||||
c := chain.NewMemoryChain()
|
||||
cat := New(c)
|
||||
|
||||
_, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000003", ContentTwinID: "ctid-cat-003",
|
||||
FileHash: "fh-cat-003", MerkleRoot: "mr-cat-003",
|
||||
Content: model.Content{Title: "省级编码查询测试", MAType: "WD", Issuer: "测试局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 注册 CP 映射
|
||||
_, err = c.RegisterMapping(chain.RoleCP, model.Mapping{
|
||||
ContentTwinID: "ctid-cat-003", Party: model.PartyCP, PartyID: "PROV-CAT-001", PartyName: "测试CP",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 按省级编码查询
|
||||
res, err := cat.QueryByProvincialCode("PROV-CAT-001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Found)
|
||||
assert.Equal(t, "MA.156.8531.6101/WD/20260000003", res.Content.MACode)
|
||||
}
|
||||
|
||||
func TestCatalog_QueryByLibraryFileID(t *testing.T) {
|
||||
c := chain.NewMemoryChain()
|
||||
cat := New(c)
|
||||
|
||||
_, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000004", ContentTwinID: "ctid-cat-004",
|
||||
FileHash: "fh-cat-004", MerkleRoot: "mr-cat-004",
|
||||
Content: model.Content{Title: "片库ID查询测试", MAType: "WD", Issuer: "测试局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 注册媒资库映射
|
||||
_, err = c.RegisterMapping(chain.RoleReviewer, model.Mapping{
|
||||
ContentTwinID: "ctid-cat-004", Party: model.PartyReviewer, PartyID: "LIB-CAT-001", PartyName: "测试媒资库",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 按片库文件 ID 查询
|
||||
res, err := cat.QueryByLibraryFileID("LIB-CAT-001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Found)
|
||||
assert.Equal(t, "MA.156.8531.6101/WD/20260000004", res.Content.MACode)
|
||||
}
|
||||
Reference in New Issue
Block a user