+ before(async function () {
+ userAccessToken = await servers[0].users.generateUserAndToken('user_42')
+
+ await commands[0].report({ token: userAccessToken, videoId: servers[0].store.videoCreated.id, reason: 'user reason 1' })
+
+ const videoId = await servers[0].videos.getId({ uuid: servers[1].store.videoCreated.uuid })
+ await commands[0].report({ token: userAccessToken, videoId, reason: 'user reason 2' })
+ })
+
+ it('Should correctly list my abuses', async function () {
+ {
+ const body = await commands[0].getUserList({ token: userAccessToken, start: 0, count: 5, sort: 'createdAt' })
+ expect(body.total).to.equal(2)
+
+ const abuses = 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 body = await commands[0].getUserList({ token: userAccessToken, start: 1, count: 1, sort: 'createdAt' })
+ expect(body.total).to.equal(2)
+
+ const abuses: UserAbuse[] = body.data
+ expect(abuses[0].reason).to.equal('user reason 2')
+ }
+
+ {
+ const body = await commands[0].getUserList({ token: userAccessToken, start: 1, count: 1, sort: '-createdAt' })
+ expect(body.total).to.equal(2)
+
+ const abuses: UserAbuse[] = body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ }
+ })
+
+ it('Should correctly filter my abuses by id', async function () {
+ const body = await commands[0].getUserList({ token: userAccessToken, id: abuseId1 })
+ expect(body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ })
+
+ it('Should correctly filter my abuses by search', async function () {
+ const body = await commands[0].getUserList({ token: userAccessToken, search: 'server 2' })
+ expect(body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = body.data
+ expect(abuses[0].reason).to.equal('user reason 2')
+ })
+
+ it('Should correctly filter my abuses by state', async function () {
+ await commands[0].update({ abuseId: abuseId1, body: { state: AbuseState.REJECTED } })
+
+ const body = await commands[0].getUserList({ token: userAccessToken, state: AbuseState.REJECTED })
+ expect(body.total).to.equal(1)
+
+ const abuses: UserAbuse[] = body.data
+ expect(abuses[0].reason).to.equal('user reason 1')
+ })
+ })
+
+ describe('Abuse messages', async function () {
+ let abuseId: number
+ let userToken: string
+ let abuseMessageUserId: number
+ let abuseMessageModerationId: number
+
+ before(async function () {
+ userToken = await servers[0].users.generateUserAndToken('user_43')
+
+ const body = await commands[0].report({ token: userToken, videoId: servers[0].store.videoCreated.id, reason: 'user 43 reason 1' })
+ abuseId = body.abuse.id
+ })
+
+ it('Should create some messages on the abuse', async function () {
+ await commands[0].addMessage({ token: userToken, abuseId, message: 'message 1' })
+ await commands[0].addMessage({ abuseId, message: 'message 2' })
+ await commands[0].addMessage({ abuseId, message: 'message 3' })
+ await commands[0].addMessage({ token: userToken, abuseId, message: 'message 4' })
+ })
+
+ it('Should have the correct messages count when listing abuses', async function () {
+ const results = await Promise.all([
+ commands[0].getAdminList({ start: 0, count: 50 }),
+ commands[0].getUserList({ token: userToken, start: 0, count: 50 })
+ ])
+
+ for (const body of results) {
+ const abuses = 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([
+ commands[0].listMessages({ abuseId }),
+ commands[0].listMessages({ token: userToken, abuseId })
+ ])
+
+ for (const body of results) {
+ expect(body.total).to.equal(4)
+
+ const abuseMessages: AbuseMessage[] = 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 commands[0].deleteMessage({ abuseId, messageId: abuseMessageModerationId })
+ await commands[0].deleteMessage({ token: userToken, abuseId, messageId: abuseMessageUserId })
+
+ const results = await Promise.all([
+ commands[0].listMessages({ abuseId }),
+ commands[0].listMessages({ token: userToken, abuseId })
+ ])
+
+ for (const body of results) {
+ expect(body.total).to.equal(2)
+
+ const abuseMessages: AbuseMessage[] = body.data
+ expect(abuseMessages[0].message).to.equal('message 2')
+ expect(abuseMessages[1].message).to.equal('message 4')
+ }