Use default nsfw instance policy for search index
authorChocobozzz <me@florianbigard.com>
Fri, 12 Jun 2020 14:24:58 +0000 (16:24 +0200)
committerChocobozzz <me@florianbigard.com>
Fri, 12 Jun 2020 14:27:41 +0000 (16:27 +0200)
server/controllers/api/search.ts
server/tests/api/search/search-index.ts

index 1dea77d2925fed81f351316295090571afa6d606..e35a7346e4e905eea7e7699e49a3c8f28a828a8d 100644 (file)
@@ -169,7 +169,14 @@ async function searchVideosIndex (query: VideosSearchQuery, res: express.Respons
 
   const result = await buildMutedForSearchIndex(res)
 
-  const body = Object.assign(query, result)
+  const body: VideosSearchQuery = Object.assign(query, result)
+
+  // Use the default instance NSFW policy if not specified
+  if (!body.nsfw) {
+    body.nsfw = CONFIG.INSTANCE.DEFAULT_NSFW_POLICY === 'do_not_list'
+      ? 'false'
+      : 'both'
+  }
 
   const url = sanitizeUrl(CONFIG.SEARCH.SEARCH_INDEX.URL) + '/api/v1/search/videos'
 
index 2354aaa8b1c03df6c71ccc598974a800dfd80dd4..40065d162daf9342d54ec133f8c486a2bf15447f 100644 (file)
@@ -209,6 +209,37 @@ describe('Test videos search', function () {
       expect(res.body.total).to.be.greaterThan(5)
       expect(res.body.data).to.have.lengthOf(5)
     })
+
+    it('Should use the nsfw instance policy as default', async function () {
+      let nsfwUUID: string
+
+      {
+        await updateCustomSubConfig(server.url, server.accessToken, { instance: { defaultNSFWPolicy: 'display' } })
+
+        const res = await searchVideo(server.url, 'NSFW search index')
+        const video = res.body.data[0] as Video
+
+        expect(res.body.data).to.have.length.greaterThan(0)
+        expect(video.nsfw).to.be.true
+
+        nsfwUUID = video.uuid
+      }
+
+      {
+        await updateCustomSubConfig(server.url, server.accessToken, { instance: { defaultNSFWPolicy: 'do_not_list' } })
+
+        const res = await searchVideo(server.url, 'NSFW search index')
+
+        try {
+          expect(res.body.data).to.have.lengthOf(0)
+        } catch (err) {
+          //
+          const video = res.body.data[0] as Video
+
+          expect(video.uuid).not.equal(nsfwUUID)
+        }
+      }
+    })
   })
 
   describe('Channels search', async function () {