]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/custom-validators/activitypub/activity.ts
Add new abuses tests
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-validators / activitypub / activity.ts
index b24590d9d752f7a0e20666c680ad2e7babd1a92b..8b8c0685fda5fe016b9cc81fcdb76c36b27e6230 100644 (file)
@@ -1,4 +1,4 @@
-import * as validator from 'validator'
+import validator from 'validator'
 import { Activity, ActivityType } from '../../../../shared/models/activitypub'
 import { sanitizeAndCheckActorObject } from './actor'
 import { isActivityPubUrlValid, isBaseActivityValid, isObjectValid } from './misc'
@@ -9,20 +9,22 @@ import { isViewActivityValid } from './view'
 import { exists } from '../misc'
 import { isCacheFileObjectValid } from './cache-file'
 import { isFlagActivityValid } from './flag'
+import { isPlaylistObjectValid } from './playlist'
 
 function isRootActivityValid (activity: any) {
-  return Array.isArray(activity['@context']) && (
-    (
-      (activity.type === 'Collection' || activity.type === 'OrderedCollection') &&
-      validator.isInt(activity.totalItems, { min: 0 }) &&
-      Array.isArray(activity.items)
-    ) ||
-    (
-      isActivityPubUrlValid(activity.id) &&
-      exists(activity.actor) &&
-      (isActivityPubUrlValid(activity.actor) || isActivityPubUrlValid(activity.actor.id))
-    )
-  )
+  return isCollection(activity) || isActivity(activity)
+}
+
+function isCollection (activity: any) {
+  return (activity.type === 'Collection' || activity.type === 'OrderedCollection') &&
+    validator.isInt(activity.totalItems, { min: 0 }) &&
+    Array.isArray(activity.items)
+}
+
+function isActivity (activity: any) {
+  return isActivityPubUrlValid(activity.id) &&
+    exists(activity.actor) &&
+    (isActivityPubUrlValid(activity.actor) || isActivityPubUrlValid(activity.actor.id))
 }
 
 const activityCheckers: { [ P in ActivityType ]: (activity: Activity) => boolean } = {
@@ -78,6 +80,7 @@ function checkCreateActivity (activity: any) {
       isViewActivityValid(activity.object) ||
       isDislikeActivityValid(activity.object) ||
       isFlagActivityValid(activity.object) ||
+      isPlaylistObjectValid(activity.object) ||
 
       isCacheFileObjectValid(activity.object) ||
       sanitizeAndCheckVideoCommentObject(activity.object) ||
@@ -89,6 +92,7 @@ function checkUpdateActivity (activity: any) {
   return isBaseActivityValid(activity, 'Update') &&
     (
       isCacheFileObjectValid(activity.object) ||
+      isPlaylistObjectValid(activity.object) ||
       sanitizeAndCheckVideoTorrentObject(activity.object) ||
       sanitizeAndCheckActorObject(activity.object)
     )