]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/check-params/services.ts
replace numbers with typed http status codes (#3409)
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / services.ts
index 780254df5ccc1f4d41b2f2849ca52da660f990a9..514e3da702381c890e183432dec8b6b2153ffdcd 100644 (file)
-/* tslint:disable:no-unused-expression */
+/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
-import * as request from 'supertest'
 import 'mocha'
 
 import {
-  flushTests,
-  runServer,
+  cleanupTests,
+  flushAndRunServer,
+  makeGetRequest,
+  ServerInfo,
   setAccessTokensToServers,
-  killallServers
-} from '../../utils'
-import { getVideosList, uploadVideo } from '../../utils/videos'
+  uploadVideo,
+  createVideoPlaylist,
+  setDefaultVideoChannel
+} from '../../../../shared/extra-utils'
+import { VideoPlaylistPrivacy } from '@shared/models'
+import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
 
 describe('Test services API validators', function () {
-  let server
+  let server: ServerInfo
+  let playlistUUID: string
 
   // ---------------------------------------------------------------
 
   before(async function () {
     this.timeout(60000)
 
-    await flushTests()
-
-    server = await runServer(1)
+    server = await flushAndRunServer(1)
     await setAccessTokensToServers([ server ])
+    await setDefaultVideoChannel([ server ])
 
-    const videoAttributes = {
-      name: 'my super name'
+    {
+      const res = await uploadVideo(server.url, server.accessToken, { name: 'my super name' })
+      server.video = res.body.video
     }
-    await uploadVideo(server.url, server.accessToken, videoAttributes)
 
-    const res = await getVideosList(server.url)
-    server.video = res.body.data[0]
+    {
+      const res = await createVideoPlaylist({
+        url: server.url,
+        token: server.accessToken,
+        playlistAttrs: {
+          displayName: 'super playlist',
+          privacy: VideoPlaylistPrivacy.PUBLIC,
+          videoChannelId: server.videoChannel.id
+        }
+      })
+
+      playlistUUID = res.body.videoPlaylist.uuid
+    }
   })
 
   describe('Test oEmbed API validators', function () {
-    const path = '/services/oembed'
 
     it('Should fail with an invalid url', async function () {
       const embedUrl = 'hello.com'
-
-      await request(server.url)
-        .get(path)
-        .query({ url: embedUrl })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      await checkParamEmbed(server, embedUrl)
     })
 
     it('Should fail with an invalid host', async function () {
       const embedUrl = 'http://hello.com/videos/watch/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({ url: embedUrl })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      await checkParamEmbed(server, embedUrl)
     })
 
-    it('Should fail with an invalid video id', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/blabla'
-
-      await request(server.url)
-        .get(path)
-        .query({ url: embedUrl })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+    it('Should fail with an invalid element id', async function () {
+      const embedUrl = `http://localhost:${server.port}/videos/watch/blabla`
+      await checkParamEmbed(server, embedUrl)
     })
 
-    it('Should fail with an unknown video', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/88fc0165-d1f0-4a35-a51a-3b47f668689c'
-
-      await request(server.url)
-        .get(path)
-        .query({ url: embedUrl })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(404)
+    it('Should fail with an unknown element', async function () {
+      const embedUrl = `http://localhost:${server.port}/videos/watch/88fc0165-d1f0-4a35-a51a-3b47f668689c`
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.NOT_FOUND_404)
     })
 
     it('Should fail with an invalid path', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watchs/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({ url: embedUrl })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      const embedUrl = `http://localhost:${server.port}/videos/watchs/${server.video.uuid}`
+
+      await checkParamEmbed(server, embedUrl)
     })
 
     it('Should fail with an invalid max height', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({
-          url: embedUrl,
-          maxheight: 'hello'
-        })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.BAD_REQUEST_400, { maxheight: 'hello' })
     })
 
     it('Should fail with an invalid max width', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({
-          url: embedUrl,
-          maxwidth: 'hello'
-        })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.BAD_REQUEST_400, { maxwidth: 'hello' })
     })
 
     it('Should fail with an invalid format', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({
-          url: embedUrl,
-          format: 'blabla'
-        })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(400)
+      const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.BAD_REQUEST_400, { format: 'blabla' })
     })
 
     it('Should fail with a non supported format', async function () {
-      const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid
-
-      await request(server.url)
-        .get(path)
-        .query({
-          url: embedUrl,
-          format: 'xml'
-        })
-        .set('Accept', 'application/json')
-        .set('Authorization', 'Bearer ' + server.accessToken)
-        .expect(501)
+      const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.NOT_IMPLEMENTED_501, { format: 'xml' })
+    })
+
+    it('Should succeed with the correct params with a video', async function () {
+      const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
+      const query = {
+        format: 'json',
+        maxheight: 400,
+        maxwidth: 400
+      }
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.OK_200, query)
+    })
+
+    it('Should succeed with the correct params with a playlist', async function () {
+      const embedUrl = `http://localhost:${server.port}/videos/watch/playlist/${playlistUUID}`
+      const query = {
+        format: 'json',
+        maxheight: 400,
+        maxwidth: 400
+      }
+
+      await checkParamEmbed(server, embedUrl, HttpStatusCode.OK_200, query)
     })
   })
 
   after(async function () {
-    killallServers([ server ])
-
-    // Keep the logs if the test failed
-    if (this['ok']) {
-      await flushTests()
-    }
+    await cleanupTests([ server ])
   })
 })
+
+function checkParamEmbed (server: ServerInfo, embedUrl: string, statusCodeExpected = HttpStatusCode.BAD_REQUEST_400, query = {}) {
+  const path = '/services/oembed'
+
+  return makeGetRequest({
+    url: server.url,
+    path,
+    query: Object.assign(query, { url: embedUrl }),
+    statusCodeExpected
+  })
+}