@atproto/ozone 0.0.16 → 0.0.17-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/util.d.ts +10 -0
- package/dist/auth-verifier.d.ts +8 -12
- package/dist/communication-service/template.d.ts +2 -2
- package/dist/config/config.d.ts +6 -0
- package/dist/config/env.d.ts +3 -2
- package/dist/config/secrets.d.ts +0 -2
- package/dist/context.d.ts +6 -0
- package/dist/daemon/blob-diverter.d.ts +26 -0
- package/dist/daemon/event-pusher.d.ts +6 -0
- package/dist/daemon/index.d.ts +1 -0
- package/dist/db/index.js +21 -1
- package/dist/db/index.js.map +3 -3
- package/dist/db/migrations/20240228T003647759Z-add-label-sigs.d.ts +3 -0
- package/dist/db/migrations/index.d.ts +1 -0
- package/dist/db/schema/index.d.ts +2 -1
- package/dist/db/schema/label.d.ts +4 -0
- package/dist/db/schema/moderation_event.d.ts +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts +2 -2
- package/dist/db/schema/signing_key.d.ts +9 -0
- package/dist/index.js +10400 -10313
- package/dist/index.js.map +3 -3
- package/dist/lexicon/index.d.ts +55 -27
- package/dist/lexicon/lexicons.d.ts +5046 -4757
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts +23 -1
- package/dist/lexicon/types/app/bsky/embed/record.d.ts +2 -1
- package/dist/lexicon/types/app/bsky/feed/defs.d.ts +1 -0
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts +3 -0
- package/dist/lexicon/types/app/bsky/labeler/defs.d.ts +41 -0
- package/dist/lexicon/types/app/bsky/labeler/getServices.d.ts +36 -0
- package/dist/lexicon/types/app/bsky/labeler/service.d.ts +14 -0
- package/dist/lexicon/types/com/atproto/admin/defs.d.ts +0 -304
- package/dist/lexicon/types/com/atproto/label/defs.d.ts +23 -0
- package/dist/lexicon/types/{com/atproto/admin/createCommunicationTemplate.d.ts → tools/ozone/communication/createTemplate.d.ts} +2 -2
- package/dist/lexicon/types/tools/ozone/communication/defs.d.ts +14 -0
- package/dist/lexicon/types/{com/atproto/admin/listCommunicationTemplates.d.ts → tools/ozone/communication/listTemplates.d.ts} +2 -2
- package/dist/lexicon/types/{com/atproto/admin/updateCommunicationTemplate.d.ts → tools/ozone/communication/updateTemplate.d.ts} +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +269 -0
- package/dist/lexicon/types/{com/atproto/admin/emitModerationEvent.d.ts → tools/ozone/moderation/emitEvent.d.ts} +5 -4
- package/dist/lexicon/types/{com/atproto/admin/getModerationEvent.d.ts → tools/ozone/moderation/getEvent.d.ts} +2 -2
- package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRecord.d.ts +2 -2
- package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRepo.d.ts +2 -2
- package/dist/lexicon/types/{com/atproto/admin/queryModerationEvents.d.ts → tools/ozone/moderation/queryEvents.d.ts} +2 -2
- package/dist/lexicon/types/{com/atproto/admin/queryModerationStatuses.d.ts → tools/ozone/moderation/queryStatuses.d.ts} +2 -2
- package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/searchRepos.d.ts +2 -2
- package/dist/mod-service/index.d.ts +16 -15
- package/dist/mod-service/subject.d.ts +1 -1
- package/dist/mod-service/types.d.ts +2 -2
- package/dist/mod-service/util.d.ts +6 -0
- package/dist/mod-service/views.d.ts +9 -3
- package/dist/sequencer/sequencer.d.ts +6 -4
- package/dist/util.d.ts +2 -0
- package/package.json +9 -8
- package/src/api/{admin/createCommunicationTemplate.ts → communication/createTemplate.ts} +2 -2
- package/src/api/{admin/deleteCommunicationTemplate.ts → communication/deleteTemplate.ts} +2 -2
- package/src/api/{admin/listCommunicationTemplates.ts → communication/listTemplates.ts} +2 -2
- package/src/api/{admin/updateCommunicationTemplate.ts → communication/updateTemplate.ts} +2 -2
- package/src/api/index.ts +21 -21
- package/src/api/{temp → label}/fetchLabels.ts +5 -3
- package/src/api/label/queryLabels.ts +4 -2
- package/src/api/moderation/emitEvent.ts +218 -0
- package/src/api/{admin/getModerationEvent.ts → moderation/getEvent.ts} +2 -2
- package/src/api/{admin → moderation}/getRecord.ts +3 -3
- package/src/api/{admin → moderation}/getRepo.ts +3 -3
- package/src/api/{admin/queryModerationEvents.ts → moderation/queryEvents.ts} +3 -3
- package/src/api/{admin/queryModerationStatuses.ts → moderation/queryStatuses.ts} +3 -3
- package/src/api/{admin → moderation}/searchRepos.ts +2 -2
- package/src/api/proxied.ts +8 -8
- package/src/api/{moderation → report}/createReport.ts +2 -3
- package/src/api/util.ts +119 -0
- package/src/auth-verifier.ts +20 -30
- package/src/communication-service/template.ts +2 -2
- package/src/config/config.ts +24 -7
- package/src/config/env.ts +6 -4
- package/src/config/secrets.ts +0 -6
- package/src/context.ts +36 -12
- package/src/daemon/blob-diverter.ts +150 -0
- package/src/daemon/context.ts +11 -7
- package/src/daemon/event-pusher.ts +58 -15
- package/src/daemon/index.ts +1 -0
- package/src/db/migrations/20240228T003647759Z-add-label-sigs.ts +25 -0
- package/src/db/migrations/index.ts +1 -0
- package/src/db/schema/index.ts +2 -0
- package/src/db/schema/label.ts +3 -0
- package/src/db/schema/moderation_event.ts +11 -11
- package/src/db/schema/moderation_subject_status.ts +7 -2
- package/src/db/schema/signing_key.ts +10 -0
- package/src/lexicon/index.ts +200 -137
- package/src/lexicon/lexicons.ts +6310 -6012
- package/src/lexicon/types/app/bsky/actor/defs.ts +57 -1
- package/src/lexicon/types/app/bsky/embed/record.ts +2 -0
- package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
- package/src/lexicon/types/app/bsky/graph/defs.ts +3 -0
- package/src/lexicon/types/app/bsky/labeler/defs.ts +93 -0
- package/src/lexicon/types/app/bsky/labeler/getServices.ts +51 -0
- package/src/lexicon/types/app/bsky/labeler/service.ts +31 -0
- package/src/lexicon/types/com/atproto/admin/defs.ts +0 -694
- package/src/lexicon/types/com/atproto/label/defs.ts +78 -0
- package/src/lexicon/types/{com/atproto/admin/createCommunicationTemplate.ts → tools/ozone/communication/createTemplate.ts} +2 -2
- package/src/lexicon/types/tools/ozone/communication/defs.ts +35 -0
- package/src/lexicon/types/{com/atproto/admin/listCommunicationTemplates.ts → tools/ozone/communication/listTemplates.ts} +2 -2
- package/src/lexicon/types/{com/atproto/admin/updateCommunicationTemplate.ts → tools/ozone/communication/updateTemplate.ts} +2 -2
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +641 -0
- package/src/lexicon/types/{com/atproto/admin/emitModerationEvent.ts → tools/ozone/moderation/emitEvent.ts} +15 -14
- package/src/lexicon/types/{com/atproto/admin/getModerationEvent.ts → tools/ozone/moderation/getEvent.ts} +2 -2
- package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRecord.ts +2 -2
- package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRepo.ts +2 -2
- package/src/lexicon/types/{com/atproto/admin/queryModerationEvents.ts → tools/ozone/moderation/queryEvents.ts} +3 -3
- package/src/lexicon/types/{com/atproto/admin/queryModerationStatuses.ts → tools/ozone/moderation/queryStatuses.ts} +2 -2
- package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/searchRepos.ts +2 -2
- package/src/mod-service/index.ts +46 -50
- package/src/mod-service/lang.ts +1 -1
- package/src/mod-service/status.ts +60 -41
- package/src/mod-service/subject.ts +1 -1
- package/src/mod-service/types.ts +10 -10
- package/src/mod-service/util.ts +49 -5
- package/src/mod-service/views.ts +45 -18
- package/src/sequencer/sequencer.ts +12 -11
- package/src/util.ts +21 -0
- package/tests/__snapshots__/blob-divert.test.ts.snap +22 -0
- package/tests/__snapshots__/get-record.test.ts.snap +14 -6
- package/tests/__snapshots__/get-repo.test.ts.snap +7 -3
- package/tests/__snapshots__/moderation-events.test.ts.snap +8 -8
- package/tests/__snapshots__/moderation-statuses.test.ts.snap +6 -6
- package/tests/_util.ts +5 -0
- package/tests/blob-divert.test.ts +87 -0
- package/tests/communication-templates.test.ts +33 -37
- package/tests/db.test.ts +6 -6
- package/tests/get-record.test.ts +22 -12
- package/tests/get-repo.test.ts +33 -21
- package/tests/moderation-appeals.test.ts +39 -67
- package/tests/moderation-events.test.ts +99 -142
- package/tests/moderation-status-tags.test.ts +20 -37
- package/tests/moderation-statuses.test.ts +132 -65
- package/tests/moderation.test.ts +147 -301
- package/tests/query-labels.test.ts +86 -10
- package/tests/repo-search.test.ts +18 -11
- package/tests/sequencer.test.ts +6 -3
- package/dist/api/admin/util.d.ts +0 -5
- package/dist/api/moderation/util.d.ts +0 -4
- package/src/api/admin/emitModerationEvent.ts +0 -170
- package/src/api/admin/util.ts +0 -54
- package/src/api/moderation/util.ts +0 -67
- /package/dist/api/{admin/createCommunicationTemplate.d.ts → communication/createTemplate.d.ts} +0 -0
- /package/dist/api/{admin/deleteCommunicationTemplate.d.ts → communication/deleteTemplate.d.ts} +0 -0
- /package/dist/api/{admin/emitModerationEvent.d.ts → communication/listTemplates.d.ts} +0 -0
- /package/dist/api/{admin/getModerationEvent.d.ts → communication/updateTemplate.d.ts} +0 -0
- /package/dist/api/{temp → label}/fetchLabels.d.ts +0 -0
- /package/dist/api/{admin/getRecord.d.ts → moderation/emitEvent.d.ts} +0 -0
- /package/dist/api/{admin/getRepo.d.ts → moderation/getEvent.d.ts} +0 -0
- /package/dist/api/{admin/listCommunicationTemplates.d.ts → moderation/getRecord.d.ts} +0 -0
- /package/dist/api/{admin/queryModerationEvents.d.ts → moderation/getRepo.d.ts} +0 -0
- /package/dist/api/{admin/queryModerationStatuses.d.ts → moderation/queryEvents.d.ts} +0 -0
- /package/dist/api/{admin/searchRepos.d.ts → moderation/queryStatuses.d.ts} +0 -0
- /package/dist/api/{admin/updateCommunicationTemplate.d.ts → moderation/searchRepos.d.ts} +0 -0
- /package/dist/api/{moderation → report}/createReport.d.ts +0 -0
- /package/dist/lexicon/types/{com/atproto/admin/deleteCommunicationTemplate.d.ts → tools/ozone/communication/deleteTemplate.d.ts} +0 -0
- /package/src/lexicon/types/{com/atproto/admin/deleteCommunicationTemplate.ts → tools/ozone/communication/deleteTemplate.ts} +0 -0
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import assert from 'node:assert'
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import {
|
|
3
|
+
TestNetwork,
|
|
4
|
+
SeedClient,
|
|
5
|
+
basicSeed,
|
|
6
|
+
ModeratorClient,
|
|
7
|
+
} from '@atproto/dev-env'
|
|
8
|
+
import {
|
|
9
|
+
ToolsOzoneModerationDefs,
|
|
10
|
+
ToolsOzoneModerationQueryStatuses,
|
|
6
11
|
} from '@atproto/api'
|
|
7
12
|
import { forSnapshot } from './_util'
|
|
8
13
|
import {
|
|
9
14
|
REASONMISLEADING,
|
|
10
15
|
REASONSPAM,
|
|
11
16
|
} from '../src/lexicon/types/com/atproto/moderation/defs'
|
|
17
|
+
import {
|
|
18
|
+
REVIEWOPEN,
|
|
19
|
+
REVIEWNONE,
|
|
20
|
+
} from '../src/lexicon/types/tools/ozone/moderation/defs'
|
|
12
21
|
|
|
13
22
|
describe('moderation-statuses', () => {
|
|
14
23
|
let network: TestNetwork
|
|
15
|
-
let agent: AtpAgent
|
|
16
|
-
let pdsAgent: AtpAgent
|
|
17
24
|
let sc: SeedClient
|
|
18
|
-
|
|
19
|
-
const emitModerationEvent = async (eventData) => {
|
|
20
|
-
return pdsAgent.api.com.atproto.admin.emitModerationEvent(eventData, {
|
|
21
|
-
encoding: 'application/json',
|
|
22
|
-
headers: network.ozone.adminAuthHeaders('moderator'),
|
|
23
|
-
})
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const queryModerationStatuses = (statusQuery) =>
|
|
27
|
-
agent.api.com.atproto.admin.queryModerationStatuses(statusQuery, {
|
|
28
|
-
headers: network.ozone.adminAuthHeaders('moderator'),
|
|
29
|
-
})
|
|
25
|
+
let modClient: ModeratorClient
|
|
30
26
|
|
|
31
27
|
const seedEvents = async () => {
|
|
32
28
|
const bobsAccount = {
|
|
@@ -49,25 +45,19 @@ describe('moderation-statuses', () => {
|
|
|
49
45
|
}
|
|
50
46
|
|
|
51
47
|
for (let i = 0; i < 4; i++) {
|
|
52
|
-
await
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
reportType: i % 2 ? REASONSPAM : REASONMISLEADING,
|
|
56
|
-
comment: 'X',
|
|
57
|
-
},
|
|
48
|
+
await sc.createReport({
|
|
49
|
+
reasonType: i % 2 ? REASONSPAM : REASONMISLEADING,
|
|
50
|
+
reason: 'X',
|
|
58
51
|
// Report bob's account by alice and vice versa
|
|
59
52
|
subject: i % 2 ? bobsAccount : carlasAccount,
|
|
60
|
-
|
|
53
|
+
reportedBy: i % 2 ? sc.dids.alice : sc.dids.bob,
|
|
61
54
|
})
|
|
62
|
-
await
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
reportType: REASONSPAM,
|
|
66
|
-
comment: 'X',
|
|
67
|
-
},
|
|
55
|
+
await sc.createReport({
|
|
56
|
+
reasonType: REASONSPAM,
|
|
57
|
+
reason: 'X',
|
|
68
58
|
// Report bob's post by alice and vice versa
|
|
69
59
|
subject: i % 2 ? bobsPost : alicesPost,
|
|
70
|
-
|
|
60
|
+
reportedBy: i % 2 ? sc.dids.alice : sc.dids.bob,
|
|
71
61
|
})
|
|
72
62
|
}
|
|
73
63
|
}
|
|
@@ -76,9 +66,8 @@ describe('moderation-statuses', () => {
|
|
|
76
66
|
network = await TestNetwork.create({
|
|
77
67
|
dbPostgresSchema: 'ozone_moderation_statuses',
|
|
78
68
|
})
|
|
79
|
-
agent = network.ozone.getClient()
|
|
80
|
-
pdsAgent = network.pds.getClient()
|
|
81
69
|
sc = network.getSeedClient()
|
|
70
|
+
modClient = network.ozone.getModClient()
|
|
82
71
|
await basicSeed(sc)
|
|
83
72
|
await network.processAll()
|
|
84
73
|
await seedEvents()
|
|
@@ -90,44 +79,44 @@ describe('moderation-statuses', () => {
|
|
|
90
79
|
|
|
91
80
|
describe('query statuses', () => {
|
|
92
81
|
it('returns statuses for subjects that received moderation events', async () => {
|
|
93
|
-
const response = await
|
|
82
|
+
const response = await modClient.queryStatuses({})
|
|
94
83
|
|
|
95
|
-
expect(forSnapshot(response.
|
|
84
|
+
expect(forSnapshot(response.subjectStatuses)).toMatchSnapshot()
|
|
96
85
|
})
|
|
97
86
|
|
|
98
87
|
it('returns statuses filtered by subject language', async () => {
|
|
99
|
-
const klingonQueue = await
|
|
88
|
+
const klingonQueue = await modClient.queryStatuses({
|
|
100
89
|
tags: ['lang:i'],
|
|
101
90
|
})
|
|
102
91
|
|
|
103
|
-
expect(forSnapshot(klingonQueue.
|
|
92
|
+
expect(forSnapshot(klingonQueue.subjectStatuses)).toMatchSnapshot()
|
|
104
93
|
|
|
105
|
-
const nonKlingonQueue = await
|
|
94
|
+
const nonKlingonQueue = await modClient.queryStatuses({
|
|
106
95
|
excludeTags: ['lang:i'],
|
|
107
96
|
})
|
|
108
97
|
|
|
109
98
|
// Verify that the klingon tagged subject is not returned when excluding klingon
|
|
110
|
-
expect(
|
|
111
|
-
|
|
112
|
-
)
|
|
99
|
+
expect(nonKlingonQueue.subjectStatuses.map((s) => s.id)).not.toContain(
|
|
100
|
+
klingonQueue.subjectStatuses[0].id,
|
|
101
|
+
)
|
|
113
102
|
})
|
|
114
103
|
|
|
115
104
|
it('returns paginated statuses', async () => {
|
|
116
105
|
// We know there will be exactly 4 statuses in db
|
|
117
106
|
const getPaginatedStatuses = async (
|
|
118
|
-
params:
|
|
107
|
+
params: ToolsOzoneModerationQueryStatuses.QueryParams,
|
|
119
108
|
) => {
|
|
120
109
|
let cursor: string | undefined = ''
|
|
121
|
-
const statuses:
|
|
110
|
+
const statuses: ToolsOzoneModerationDefs.SubjectStatusView[] = []
|
|
122
111
|
let count = 0
|
|
123
112
|
do {
|
|
124
|
-
const results = await
|
|
113
|
+
const results = await modClient.queryStatuses({
|
|
125
114
|
limit: 1,
|
|
126
115
|
cursor,
|
|
127
116
|
...params,
|
|
128
117
|
})
|
|
129
|
-
cursor = results.
|
|
130
|
-
statuses.push(...results.
|
|
118
|
+
cursor = results.cursor
|
|
119
|
+
statuses.push(...results.subjectStatuses)
|
|
131
120
|
count++
|
|
132
121
|
// The count is just a brake-check to prevent infinite loop
|
|
133
122
|
} while (cursor && count < 10)
|
|
@@ -139,13 +128,12 @@ describe('moderation-statuses', () => {
|
|
|
139
128
|
expect(list[0].id).toEqual(7)
|
|
140
129
|
expect(list[list.length - 1].id).toEqual(1)
|
|
141
130
|
|
|
142
|
-
await
|
|
131
|
+
await modClient.emitEvent({
|
|
143
132
|
subject: list[1].subject,
|
|
144
133
|
event: {
|
|
145
|
-
$type: '
|
|
134
|
+
$type: 'tools.ozone.moderation.defs#modEventAcknowledge',
|
|
146
135
|
comment: 'X',
|
|
147
136
|
},
|
|
148
|
-
createdBy: sc.dids.bob,
|
|
149
137
|
})
|
|
150
138
|
|
|
151
139
|
const listReviewedFirst = await getPaginatedStatuses({
|
|
@@ -160,13 +148,97 @@ describe('moderation-statuses', () => {
|
|
|
160
148
|
})
|
|
161
149
|
})
|
|
162
150
|
|
|
151
|
+
describe('reviewState changes', () => {
|
|
152
|
+
it('only sets state to #reviewNone on first non-impactful event', async () => {
|
|
153
|
+
const bobsAccount = {
|
|
154
|
+
$type: 'com.atproto.admin.defs#repoRef',
|
|
155
|
+
did: sc.dids.bob,
|
|
156
|
+
}
|
|
157
|
+
const alicesPost = {
|
|
158
|
+
$type: 'com.atproto.repo.strongRef',
|
|
159
|
+
uri: sc.posts[sc.dids.alice][0].ref.uriStr,
|
|
160
|
+
cid: sc.posts[sc.dids.alice][0].ref.cidStr,
|
|
161
|
+
}
|
|
162
|
+
const getBobsAccountStatus = async () => {
|
|
163
|
+
const data = await modClient.queryStatuses({
|
|
164
|
+
subject: bobsAccount.did,
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
return data.subjectStatuses[0]
|
|
168
|
+
}
|
|
169
|
+
// Since bob's account already had a reviewState, it won't be changed by non-impactful events
|
|
170
|
+
const bobsAccountStatusBeforeTag = await getBobsAccountStatus()
|
|
171
|
+
|
|
172
|
+
await Promise.all([
|
|
173
|
+
modClient.emitEvent({
|
|
174
|
+
subject: bobsAccount,
|
|
175
|
+
event: {
|
|
176
|
+
$type: 'tools.ozone.moderation.defs#modEventTag',
|
|
177
|
+
add: ['newTag'],
|
|
178
|
+
remove: [],
|
|
179
|
+
comment: 'X',
|
|
180
|
+
},
|
|
181
|
+
createdBy: sc.dids.alice,
|
|
182
|
+
}),
|
|
183
|
+
modClient.emitEvent({
|
|
184
|
+
subject: bobsAccount,
|
|
185
|
+
event: {
|
|
186
|
+
$type: 'tools.ozone.moderation.defs#modEventComment',
|
|
187
|
+
comment: 'X',
|
|
188
|
+
},
|
|
189
|
+
createdBy: sc.dids.alice,
|
|
190
|
+
}),
|
|
191
|
+
])
|
|
192
|
+
const bobsAccountStatusAfterTag = await getBobsAccountStatus()
|
|
193
|
+
|
|
194
|
+
expect(bobsAccountStatusBeforeTag.reviewState).toEqual(
|
|
195
|
+
bobsAccountStatusAfterTag.reviewState,
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
// Since alice's post didn't have a reviewState it is set to reviewNone on first non-impactful event
|
|
199
|
+
const getAlicesPostStatus = async () => {
|
|
200
|
+
const data = await modClient.queryStatuses({
|
|
201
|
+
subject: alicesPost.uri,
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
return data.subjectStatuses[0]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const alicesPostStatusBeforeTag = await getAlicesPostStatus()
|
|
208
|
+
expect(alicesPostStatusBeforeTag).toBeUndefined()
|
|
209
|
+
|
|
210
|
+
await modClient.emitEvent({
|
|
211
|
+
subject: alicesPost,
|
|
212
|
+
event: {
|
|
213
|
+
$type: 'tools.ozone.moderation.defs#modEventComment',
|
|
214
|
+
comment: 'X',
|
|
215
|
+
},
|
|
216
|
+
createdBy: sc.dids.alice,
|
|
217
|
+
})
|
|
218
|
+
const alicesPostStatusAfterTag = await getAlicesPostStatus()
|
|
219
|
+
expect(alicesPostStatusAfterTag.reviewState).toEqual(REVIEWNONE)
|
|
220
|
+
|
|
221
|
+
await modClient.emitEvent({
|
|
222
|
+
subject: alicesPost,
|
|
223
|
+
event: {
|
|
224
|
+
$type: 'tools.ozone.moderation.defs#modEventReport',
|
|
225
|
+
reportType: REASONMISLEADING,
|
|
226
|
+
comment: 'X',
|
|
227
|
+
},
|
|
228
|
+
createdBy: sc.dids.alice,
|
|
229
|
+
})
|
|
230
|
+
const alicesPostStatusAfterReport = await getAlicesPostStatus()
|
|
231
|
+
expect(alicesPostStatusAfterReport.reviewState).toEqual(REVIEWOPEN)
|
|
232
|
+
})
|
|
233
|
+
})
|
|
234
|
+
|
|
163
235
|
describe('blobs', () => {
|
|
164
236
|
it('are tracked on takendown subject', async () => {
|
|
165
237
|
const post = sc.posts[sc.dids.carol][0]
|
|
166
238
|
assert(post.images.length > 1)
|
|
167
|
-
await
|
|
239
|
+
await modClient.emitEvent({
|
|
168
240
|
event: {
|
|
169
|
-
$type: '
|
|
241
|
+
$type: 'tools.ozone.moderation.defs#modEventTakedown',
|
|
170
242
|
},
|
|
171
243
|
subject: {
|
|
172
244
|
$type: 'com.atproto.repo.strongRef',
|
|
@@ -176,11 +248,9 @@ describe('moderation-statuses', () => {
|
|
|
176
248
|
subjectBlobCids: [post.images[0].image.ref.toString()],
|
|
177
249
|
createdBy: sc.dids.alice,
|
|
178
250
|
})
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
{ headers: network.ozone.adminAuthHeaders('moderator') },
|
|
183
|
-
)
|
|
251
|
+
const result = await modClient.queryStatuses({
|
|
252
|
+
subject: post.ref.uriStr,
|
|
253
|
+
})
|
|
184
254
|
expect(result.subjectStatuses.length).toBe(1)
|
|
185
255
|
expect(result.subjectStatuses[0]).toMatchObject({
|
|
186
256
|
takendown: true,
|
|
@@ -190,22 +260,19 @@ describe('moderation-statuses', () => {
|
|
|
190
260
|
|
|
191
261
|
it('are tracked on reverse-takendown subject based on previous status', async () => {
|
|
192
262
|
const post = sc.posts[sc.dids.carol][0]
|
|
193
|
-
await
|
|
263
|
+
await modClient.emitEvent({
|
|
194
264
|
event: {
|
|
195
|
-
$type: '
|
|
265
|
+
$type: 'tools.ozone.moderation.defs#modEventReverseTakedown',
|
|
196
266
|
},
|
|
197
267
|
subject: {
|
|
198
268
|
$type: 'com.atproto.repo.strongRef',
|
|
199
269
|
uri: post.ref.uriStr,
|
|
200
270
|
cid: post.ref.cidStr,
|
|
201
271
|
},
|
|
202
|
-
createdBy: sc.dids.alice,
|
|
203
272
|
})
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
{ headers: network.ozone.adminAuthHeaders('moderator') },
|
|
208
|
-
)
|
|
273
|
+
const result = await modClient.queryStatuses({
|
|
274
|
+
subject: post.ref.uriStr,
|
|
275
|
+
})
|
|
209
276
|
expect(result.subjectStatuses.length).toBe(1)
|
|
210
277
|
expect(result.subjectStatuses[0]).toMatchObject({
|
|
211
278
|
takendown: false,
|