+ describe('My abuses', async function () {
+ let abuseId1: number
+ let userAccessToken: string
+
+ before(async function () {
+ userAccessToken = await generateUserAccessToken(servers[0], 'user_42')
+
+ await reportAbuse({ url: servers[0].url, token: userAccessToken, videoId: servers[0].video.id, reason: 'user reason 1' })
+
+ const videoId = await getVideoIdFromUUID(servers[0].url, servers[1].video.uuid)
+ await reportAbuse({ url: servers[0].url, token: userAccessToken, videoId, reason: 'user reason 2' })
+ })
+
+ it('Should correctly list my abuses', async function () {
+ {
+ const res = await getUserAbusesList({ url: servers[0].url, token: userAccessToken, start: 0, count: 5, sort: 'createdAt' })
+ expect(res.body.total).to.equal(2)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ expect(abuses[1].reason).to.equal('user reason 2')
+
+ abuseId1 = abuses[0].id
+ }
+
+ {
+ const res = await getUserAbusesList({ url: servers[0].url, token: userAccessToken, start: 1, count: 1, sort: 'createdAt' })
+ expect(res.body.total).to.equal(2)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 2')
+ }
+
+ {
+ const res = await getUserAbusesList({ url: servers[0].url, token: userAccessToken, start: 1, count: 1, sort: '-createdAt' })
+ expect(res.body.total).to.equal(2)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ }
+ })
+
+ it('Should correctly filter my abuses by id', async function () {
+ const res = await getUserAbusesList({ url: servers[0].url, token: userAccessToken, id: abuseId1 })
+
+ expect(res.body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ })
+
+ it('Should correctly filter my abuses by search', async function () {
+ const res = await getUserAbusesList({
+ url: servers[0].url,
+ token: userAccessToken,
+ search: 'server 2'
+ })
+
+ expect(res.body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 2')
+ })
+
+ it('Should correctly filter my abuses by state', async function () {
+ const body = { state: AbuseState.REJECTED }
+ await updateAbuse(servers[0].url, servers[0].accessToken, abuseId1, body)
+
+ const res = await getUserAbusesList({
+ url: servers[0].url,
+ token: userAccessToken,
+ state: AbuseState.REJECTED
+ })
+
+ expect(res.body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = res.body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ })
+ })
+
+ describe('Abuse messages', async function () {
+ let abuseId: number
+ let userAccessToken: string
+ let abuseMessageUserId: number
+ let abuseMessageModerationId: number
+
+ before(async function () {
+ userAccessToken = await generateUserAccessToken(servers[0], 'user_43')
+
+ const res = await reportAbuse({
+ url: servers[0].url,
+ token: userAccessToken,
+ videoId: servers[0].video.id,
+ reason: 'user 43 reason 1'
+ })
+
+ abuseId = res.body.abuse.id
+ })
+
+ it('Should create some messages on the abuse', async function () {
+ await addAbuseMessage(servers[0].url, userAccessToken, abuseId, 'message 1')
+ await addAbuseMessage(servers[0].url, servers[0].accessToken, abuseId, 'message 2')
+ await addAbuseMessage(servers[0].url, servers[0].accessToken, abuseId, 'message 3')
+ await addAbuseMessage(servers[0].url, userAccessToken, abuseId, 'message 4')
+ })
+
+ it('Should have the correct messages count when listing abuses', async function () {
+ const results = await Promise.all([
+ getAdminAbusesList({ url: servers[0].url, token: servers[0].accessToken, start: 0, count: 50 }),
+ getUserAbusesList({ url: servers[0].url, token: userAccessToken, start: 0, count: 50 })
+ ])
+
+ for (const res of results) {
+ const abuses: AdminAbuse[] = res.body.data
+ const abuse = abuses.find(a => a.id === abuseId)
+ expect(abuse.countMessages).to.equal(4)
+ }
+ })
+
+ it('Should correctly list messages of this abuse', async function () {
+ const results = await Promise.all([
+ listAbuseMessages(servers[0].url, servers[0].accessToken, abuseId),
+ listAbuseMessages(servers[0].url, userAccessToken, abuseId)
+ ])
+
+ for (const res of results) {
+ expect(res.body.total).to.equal(4)
+
+ const abuseMessages: AbuseMessage[] = res.body.data
+
+ expect(abuseMessages[0].message).to.equal('message 1')
+ expect(abuseMessages[0].byModerator).to.be.false
+ expect(abuseMessages[0].account.name).to.equal('user_43')
+
+ abuseMessageUserId = abuseMessages[0].id
+
+ expect(abuseMessages[1].message).to.equal('message 2')
+ expect(abuseMessages[1].byModerator).to.be.true
+ expect(abuseMessages[1].account.name).to.equal('root')
+
+ expect(abuseMessages[2].message).to.equal('message 3')
+ expect(abuseMessages[2].byModerator).to.be.true
+ expect(abuseMessages[2].account.name).to.equal('root')
+ abuseMessageModerationId = abuseMessages[2].id
+
+ expect(abuseMessages[3].message).to.equal('message 4')
+ expect(abuseMessages[3].byModerator).to.be.false
+ expect(abuseMessages[3].account.name).to.equal('user_43')
+ }
+ })
+
+ it('Should delete messages', async function () {
+ await deleteAbuseMessage(servers[0].url, servers[0].accessToken, abuseId, abuseMessageModerationId)
+ await deleteAbuseMessage(servers[0].url, userAccessToken, abuseId, abuseMessageUserId)
+
+ const results = await Promise.all([
+ listAbuseMessages(servers[0].url, servers[0].accessToken, abuseId),
+ listAbuseMessages(servers[0].url, userAccessToken, abuseId)
+ ])
+
+ for (const res of results) {
+ expect(res.body.total).to.equal(2)
+
+ const abuseMessages: AbuseMessage[] = res.body.data
+
+ expect(abuseMessages[0].message).to.equal('message 2')
+ expect(abuseMessages[1].message).to.equal('message 4')
+ }
+ })
+ })
+