feat: 方案100%匹配 — RBAC动态权限+Grafana监控+目录库独立微服务+全国目录中心+标识同步
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
package nationalcatalog
|
||||
|
||||
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"
|
||||
syncpkg "github.com/tcs-iptv/tcs/internal/sync"
|
||||
)
|
||||
|
||||
func TestNationalCatalog_RegisterAndListProvinces(t *testing.T) {
|
||||
nc := New()
|
||||
err := nc.RegisterProvince(ProvinceInfo{
|
||||
ProvinceCode: "6101", ProvinceName: "陕西", OrgNode: "6101",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
provinces := nc.ListProvinces()
|
||||
assert.Len(t, provinces, 1)
|
||||
assert.Equal(t, "陕西", provinces[0].ProvinceName)
|
||||
}
|
||||
|
||||
func TestNationalCatalog_SyncFromProvince(t *testing.T) {
|
||||
nc := New()
|
||||
nc.RegisterProvince(ProvinceInfo{ProvinceCode: "6101", ProvinceName: "陕西"})
|
||||
|
||||
// 源端发码
|
||||
srcClient := chain.NewMemoryChain()
|
||||
_, err := srcClient.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-nat-001",
|
||||
FileHash: "fh-nat-001", MerkleRoot: "mr-nat-001",
|
||||
Episodes: []model.EpisodeHash{
|
||||
{Episode: 1, FileSHA256: "fh-nat-001-E1"},
|
||||
},
|
||||
Content: model.Content{Title: "全国同步测试剧", MAType: "WD", Issuer: "陕西局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = srcClient.RegisterMapping(chain.RoleCP, model.Mapping{
|
||||
ContentTwinID: "ctid-nat-001", Party: model.PartyCP, PartyID: "PROV-NAT-001", PartyName: "陕西CP",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 同步至全国中心
|
||||
src := &syncpkg.ChainSource{Client: srcClient}
|
||||
result, err := nc.SyncFromProvince(src, syncpkg.ConflictOverwrite)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, result.TotalContents)
|
||||
assert.Equal(t, 1, result.TotalBindings)
|
||||
assert.Equal(t, 1, result.TotalMappings)
|
||||
|
||||
// 全国中心查询验证
|
||||
res, err := nc.QueryByMA("MA.156.8531.6101/WD/20260000001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Found)
|
||||
assert.Equal(t, "全国同步测试剧", res.Content.Title)
|
||||
|
||||
// 按 Hash 查询
|
||||
res2, err := nc.QueryByHash("fh-nat-001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res2.Found)
|
||||
|
||||
// 按省级编码查询
|
||||
res3, err := nc.QueryByProvincialCode("PROV-NAT-001")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res3.Found)
|
||||
}
|
||||
|
||||
func TestNationalCatalog_Stats(t *testing.T) {
|
||||
nc := New()
|
||||
nc.RegisterProvince(ProvinceInfo{ProvinceCode: "6101", ProvinceName: "陕西"})
|
||||
|
||||
srcClient := chain.NewMemoryChain()
|
||||
_, err := srcClient.IssueMA(chain.RoleRegulator, chain.IssueRequest{
|
||||
MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-nat-002",
|
||||
FileHash: "fh-nat-002", MerkleRoot: "mr-nat-002",
|
||||
Content: model.Content{Title: "统计测试剧", MAType: "WD", Issuer: "陕西局"},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = srcClient.RegisterMapping(chain.RoleCP, model.Mapping{
|
||||
ContentTwinID: "ctid-nat-002", Party: model.PartyCP, PartyID: "PROV-NAT-002", PartyName: "陕西CP",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
src := &syncpkg.ChainSource{Client: srcClient}
|
||||
_, err = nc.SyncFromProvince(src, syncpkg.ConflictOverwrite)
|
||||
require.NoError(t, err)
|
||||
|
||||
stats := nc.Stats()
|
||||
assert.Equal(t, 1, stats.TotalContents)
|
||||
assert.Equal(t, 1, stats.TotalProvinces)
|
||||
assert.Equal(t, 1, stats.ByCategory["WD"])
|
||||
}
|
||||
|
||||
func TestNationalCatalog_ShareAuditRecord(t *testing.T) {
|
||||
nc := New()
|
||||
nc.ShareAuditRecord("MA.156.8531.6101/WD/20260000003", model.ProvenanceEvent{
|
||||
MACode: "MA.156.8531.6101/WD/20260000003",
|
||||
Node: model.NodeIssue,
|
||||
Operator: "陕西局",
|
||||
Detail: "跨省审核记录",
|
||||
})
|
||||
|
||||
records := nc.QuerySharedAudit("MA.156.8531.6101/WD/20260000003")
|
||||
assert.Len(t, records, 1)
|
||||
assert.Equal(t, "跨省审核记录", records[0].Detail)
|
||||
}
|
||||
Reference in New Issue
Block a user