]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/feeds/feeds.ts
Add ability for plugins to specify scale filter
[github/Chocobozzz/PeerTube.git] / server / tests / feeds / feeds.ts
index 92a468192f85ea7a68f771f7a59d1566870e13a3..7bad81751a393331574e0798de3d89cdfe218423 100644 (file)
@@ -2,7 +2,7 @@
 
 import 'mocha'
 import * as chai from 'chai'
-import * as libxmljs from 'libxmljs'
+import * as xmlParser from 'fast-xml-parser'
 import {
   addAccountToAccountBlocklist,
   addAccountToServerBlocklist,
@@ -31,6 +31,7 @@ import {
 import { waitJobs } from '../../../shared/extra-utils/server/jobs'
 import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video-comments'
 import { User } from '../../../shared/models/users'
+import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
 
 chai.use(require('chai-xml'))
 chai.use(require('chai-json-schema'))
@@ -138,12 +139,15 @@ describe('Test syndication feeds', () => {
     it('Should contain a valid enclosure (covers RSS 2.0 endpoint)', async function () {
       for (const server of servers) {
         const rss = await getXMLfeed(server.url, 'videos')
-        const xmlDoc = libxmljs.parseXmlString(rss.text)
-        const xmlEnclosure = xmlDoc.get('/rss/channel/item/enclosure')
-        expect(xmlEnclosure).to.exist
-        expect(xmlEnclosure.attr('type').value()).to.be.equal('application/x-bittorrent')
-        expect(xmlEnclosure.attr('length').value()).to.be.equal('218910')
-        expect(xmlEnclosure.attr('url').value()).to.contain('720.torrent')
+        expect(xmlParser.validate(rss.text)).to.be.true
+
+        const xmlDoc = xmlParser.parse(rss.text, { parseAttributeValue: true, ignoreAttributes: false })
+
+        const enclosure = xmlDoc.rss.channel.item[0].enclosure
+        expect(enclosure).to.exist
+        expect(enclosure['@_type']).to.equal('application/x-bittorrent')
+        expect(enclosure['@_length']).to.equal(218910)
+        expect(enclosure['@_url']).to.contain('720.torrent')
       }
     })
 
@@ -330,11 +334,16 @@ describe('Test syndication feeds', () => {
     })
 
     it('Should fail with an invalid token', async function () {
-      await getJSONfeed(servers[0].url, 'subscriptions', { accountId: feeduserAccountId, token: 'toto' }, 403)
+      await getJSONfeed(servers[0].url, 'subscriptions', { accountId: feeduserAccountId, token: 'toto' }, HttpStatusCode.FORBIDDEN_403)
     })
 
     it('Should fail with a token of another user', async function () {
-      await getJSONfeed(servers[0].url, 'subscriptions', { accountId: feeduserAccountId, token: userFeedToken }, 403)
+      await getJSONfeed(
+        servers[0].url,
+        'subscriptions',
+        { accountId: feeduserAccountId, token: userFeedToken },
+        HttpStatusCode.FORBIDDEN_403
+      )
     })
 
     it('Should list no videos for a user with videos but no subscriptions', async function () {
@@ -382,7 +391,12 @@ describe('Test syndication feeds', () => {
     it('Should renew the token, and so have an invalid old token', async function () {
       await renewUserScopedTokens(servers[0].url, userAccessToken)
 
-      await getJSONfeed(servers[0].url, 'subscriptions', { accountId: userAccountId, token: userFeedToken, version: 3 }, 403)
+      await getJSONfeed(
+        servers[0].url,
+        'subscriptions',
+        { accountId: userAccountId, token: userFeedToken, version: 3 },
+        HttpStatusCode.FORBIDDEN_403
+      )
     })
 
     it('Should succeed with the new token', async function () {