feat: 更新CC码监管方案业务版文档,新增摘要、UGC专项、直播专项、存量处置、误判申诉、水印嵌入、CC码生命周期、组织保障等章节;同步macode到cccode重命名及其他代码变更
This commit is contained in:
@@ -14,38 +14,38 @@ import (
|
||||
|
||||
func TestAuthorization_PlatformGate(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, ctid, cert := issueOne(t, s)
|
||||
require.NoError(t, s.IngestToLibrary(chain.RoleReviewer, maCode, ctid, "M", "媒资库"))
|
||||
require.NoError(t, s.PublishToOperator(PublishRequest{MACode: maCode, Certificate: cert}))
|
||||
ccCode, ctid, cert := issueOne(t, s)
|
||||
require.NoError(t, s.IngestToLibrary(chain.RoleReviewer, ccCode, ctid, "M", "媒资库"))
|
||||
require.NoError(t, s.PublishToOperator(PublishRequest{CCCode: ccCode, Certificate: cert}))
|
||||
|
||||
// 仅授权 CT-SX
|
||||
require.NoError(t, s.RecordAuthorization(maCode, nil, []string{"CT-SX"}, time.Time{}))
|
||||
require.NoError(t, s.RecordAuthorization(ccCode, nil, []string{"CT-SX"}, time.Time{}))
|
||||
|
||||
// 授权平台注入通过
|
||||
_, err := s.InjectToCDN(chain.RoleOperator, ctid, maCode, "filehash-abc", "CT-SX", "cdn://ct")
|
||||
_, err := s.InjectToCDN(chain.RoleOperator, ctid, ccCode, "filehash-abc", "CT-SX", "cdn://ct")
|
||||
require.NoError(t, err)
|
||||
|
||||
// 非授权平台注入被拒
|
||||
_, err = s.InjectToCDN(chain.RoleOperator, ctid, maCode, "filehash-abc", "CM-SX", "cdn://cm")
|
||||
_, err = s.InjectToCDN(chain.RoleOperator, ctid, ccCode, "filehash-abc", "CM-SX", "cdn://cm")
|
||||
assert.ErrorIs(t, err, ErrNotApproved)
|
||||
}
|
||||
|
||||
func TestAuthorization_Expiry(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, _, _ := issueOne(t, s)
|
||||
ccCode, _, _ := issueOne(t, s)
|
||||
// 已过期授权
|
||||
require.NoError(t, s.RecordAuthorization(maCode, nil, nil, time.Now().Add(-time.Hour)))
|
||||
res := s.CheckAuthorization(maCode, "", "")
|
||||
require.NoError(t, s.RecordAuthorization(ccCode, nil, nil, time.Now().Add(-time.Hour)))
|
||||
res := s.CheckAuthorization(ccCode, "", "")
|
||||
assert.False(t, res.Allowed)
|
||||
assert.Contains(t, res.Reason, "过期")
|
||||
}
|
||||
|
||||
func TestAuthorization_RegionGate(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, _, _ := issueOne(t, s)
|
||||
require.NoError(t, s.RecordAuthorization(maCode, []string{"610000"}, nil, time.Time{}))
|
||||
assert.True(t, s.CheckAuthorization(maCode, "610000", "").Allowed) // 陕西
|
||||
assert.False(t, s.CheckAuthorization(maCode, "440000", "").Allowed) // 广东,超域
|
||||
ccCode, _, _ := issueOne(t, s)
|
||||
require.NoError(t, s.RecordAuthorization(ccCode, []string{"610000"}, nil, time.Time{}))
|
||||
assert.True(t, s.CheckAuthorization(ccCode, "610000", "").Allowed) // 陕西
|
||||
assert.False(t, s.CheckAuthorization(ccCode, "440000", "").Allowed) // 广东,超域
|
||||
}
|
||||
|
||||
// ---- F21 追更 ----
|
||||
@@ -61,16 +61,16 @@ func TestAddEpisodes_NoReissue(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// 追更第 3、4 集(不重新发码)
|
||||
require.NoError(t, s.AddEpisodes(chain.RoleReviewer, issued.MACode, []model.EpisodeHash{
|
||||
require.NoError(t, s.AddEpisodes(chain.RoleReviewer, issued.CCCode, []model.EpisodeHash{
|
||||
{Episode: 3, FileSHA256: "e3"}, {Episode: 4, FileSHA256: "e4"},
|
||||
}))
|
||||
|
||||
list, err := s.ListEpisodes(issued.MACode)
|
||||
list, err := s.ListEpisodes(issued.CCCode)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, list, 4, "应有 4 集")
|
||||
|
||||
// 新集可独立验真
|
||||
res, err := s.VerifyEpisode(issued.MACode, 3, "e3")
|
||||
res, err := s.VerifyEpisode(issued.CCCode, 3, "e3")
|
||||
require.NoError(t, err)
|
||||
assert.True(t, res.Match)
|
||||
}
|
||||
@@ -79,28 +79,28 @@ func TestAddEpisodes_NoReissue(t *testing.T) {
|
||||
|
||||
func TestCrossProvince_Admit(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, _, _ := issueOne(t, s) // sampleSub FileHash=filehash-abc
|
||||
ccCode, _, _ := issueOne(t, s) // sampleSub FileHash=filehash-abc
|
||||
|
||||
res := s.CrossProvinceAdmit(maCode, "filehash-abc", "610000")
|
||||
res := s.CrossProvinceAdmit(ccCode, "filehash-abc", "610000")
|
||||
assert.True(t, res.Admitted)
|
||||
assert.True(t, res.MACodeValid && res.HashConsistent && res.NotBlacklisted)
|
||||
assert.True(t, res.CCCodeValid && res.HashConsistent && res.NotBlacklisted)
|
||||
assert.NotEmpty(t, res.ProvinceFlowNo)
|
||||
}
|
||||
|
||||
func TestCrossProvince_HashMismatch(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, _, _ := issueOne(t, s)
|
||||
res := s.CrossProvinceAdmit(maCode, "tampered", "610000")
|
||||
ccCode, _, _ := issueOne(t, s)
|
||||
res := s.CrossProvinceAdmit(ccCode, "tampered", "610000")
|
||||
assert.False(t, res.Admitted)
|
||||
assert.True(t, res.MACodeValid)
|
||||
assert.True(t, res.CCCodeValid)
|
||||
assert.False(t, res.HashConsistent)
|
||||
}
|
||||
|
||||
func TestCrossProvince_Blacklisted(t *testing.T) {
|
||||
s := newService(t)
|
||||
maCode, _, _ := issueOne(t, s)
|
||||
s.Blacklist(maCode)
|
||||
res := s.CrossProvinceAdmit(maCode, "filehash-abc", "610000")
|
||||
ccCode, _, _ := issueOne(t, s)
|
||||
s.Blacklist(ccCode)
|
||||
res := s.CrossProvinceAdmit(ccCode, "filehash-abc", "610000")
|
||||
assert.False(t, res.Admitted)
|
||||
assert.False(t, res.NotBlacklisted)
|
||||
assert.Contains(t, res.Reason, "黑名单")
|
||||
@@ -110,7 +110,7 @@ func TestCrossProvince_UnknownMA(t *testing.T) {
|
||||
s := newService(t)
|
||||
res := s.CrossProvinceAdmit("MA.156.8531.6101/WD/不存在", "h", "610000")
|
||||
assert.False(t, res.Admitted)
|
||||
assert.False(t, res.MACodeValid)
|
||||
assert.False(t, res.CCCodeValid)
|
||||
}
|
||||
|
||||
// ---- F08 终端抽检 ----
|
||||
@@ -124,10 +124,10 @@ func TestTerminalVerifySegment(t *testing.T) {
|
||||
issued, err := s.ApproveAndIssue(chain.RoleRegulator, r.ReviewID, "陕西IPTV")
|
||||
require.NoError(t, err)
|
||||
|
||||
ok, _ := s.TerminalVerifySegment(issued.MACode, 1, "seg1")
|
||||
ok, _ := s.TerminalVerifySegment(issued.CCCode, 1, "seg1")
|
||||
assert.True(t, ok)
|
||||
|
||||
ok, msg := s.TerminalVerifySegment(issued.MACode, 1, "tampered")
|
||||
ok, msg := s.TerminalVerifySegment(issued.CCCode, 1, "tampered")
|
||||
assert.False(t, ok)
|
||||
assert.Contains(t, msg, "断流")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user