]> 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 e0d170d9d230d175ad01769f78e11b2c65d0887e..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'
@@ -12,18 +12,19 @@ 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 } = {