Remove unused actor uuid field
authorChocobozzz <me@florianbigard.com>
Fri, 31 May 2019 12:02:26 +0000 (14:02 +0200)
committerChocobozzz <me@florianbigard.com>
Fri, 31 May 2019 12:49:31 +0000 (14:49 +0200)
26 files changed:
client/src/app/+accounts/account-video-channels/account-video-channels.component.html
client/src/app/shared/actor/actor.model.ts
scripts/clean/server/test.sh
scripts/test.sh
server/controllers/api/users/index.ts
server/controllers/api/video-channel.ts
server/helpers/custom-validators/accounts.ts
server/helpers/custom-validators/video-channels.ts
server/initializers/constants.ts
server/initializers/migrations/0385-remove-actor-uuid.ts [new file with mode: 0644]
server/lib/activitypub/actor.ts
server/lib/activitypub/process/process-delete.ts
server/lib/activitypub/process/process-update.ts
server/middlewares/validators/feeds.ts
server/models/account/account.ts
server/models/activitypub/actor.ts
server/models/video/video-channel.ts
server/tests/api/users/users-multiple-servers.ts
server/tests/api/videos/video-channels.ts
server/tests/feeds/feeds.ts
shared/extra-utils/users/accounts.ts
shared/extra-utils/videos/videos.ts
shared/models/activitypub/activitypub-actor.ts
shared/models/actors/account.model.ts
shared/models/actors/actor.model.ts
shared/models/videos/channel/video-channel.model.ts

index 25b74027ecb78e5ef6f7169ee2a54368c223f484..43dbbebb3b6b8f5f17de54d407e418f43f95d25b 100644 (file)
@@ -1,5 +1,7 @@
 <div class="margin-content">
 
+  <div class="no-results" i18n *ngIf="channelPagination.totalItems === 0">This account does not have channels.</div>
+
   <div class="channels" myInfiniteScroller (nearOfBottom)="onNearOfBottom()" [autoInit]="true">
     <div class="section channel" *ngFor="let videoChannel of videoChannels">
       <div class="section-title">
index adecec1fce53405ac73d23d6952fe2242995afb0..5a517c975b67e614cd11b012462c40a519d999b9 100644 (file)
@@ -4,7 +4,6 @@ import { getAbsoluteAPIUrl } from '@app/shared/misc/utils'
 
 export abstract class Actor implements ActorServer {
   id: number
-  uuid: string
   url: string
   name: string
   host: string
@@ -35,7 +34,6 @@ export abstract class Actor implements ActorServer {
 
   protected constructor (hash: ActorServer) {
     this.id = hash.id
-    this.uuid = hash.uuid
     this.url = hash.url
     this.name = hash.name
     this.host = hash.host
index 5694ac9225780bd8506ab1936873865b63847607..34afd6a9d0b2f4ef0b715b91438a5ed250b4a83f 100755 (executable)
@@ -17,8 +17,11 @@ removeFiles () {
 }
 
 dropRedis () {
-  redis-cli KEYS "bull-localhost:900$1*" | grep -v empty | xargs --no-run-if-empty redis-cli DEL
-  redis-cli KEYS "redis-localhost:900$1*" | grep -v empty | xargs --no-run-if-empty redis-cli DEL
+  port=$((9000+$1))
+
+  redis-cli KEYS "bull-localhost:$port*" | grep -v empty | xargs --no-run-if-empty redis-cli DEL
+  redis-cli KEYS "redis-localhost:$port*" | grep -v empty | xargs --no-run-if-empty redis-cli DEL
+  redis-cli KEYS "*redis-localhost:$port-" | grep -v empty | xargs --no-run-if-empty redis-cli DEL
 }
 
 seq=$(seq 1 6)
index cf88953652f512f3f4311fc9cbca54ec126acb64..5ec7a592059d16905603989a29f3484a9ff044ab 100755 (executable)
@@ -3,6 +3,8 @@
 set -eu
 
 npm run build:server
+npm run setup:cli
+
 npm run travis -- lint
 
 mocha --exit --require ts-node/register/type-check --bail server/tests/index.ts
index a04f778417742f9402bc9beffcbfd9cb1d4fcbd2..2e03587ce2e33e1e9d223b3286af0d98cb3c1d5d 100644 (file)
@@ -190,8 +190,7 @@ async function createUser (req: express.Request, res: express.Response) {
     user: {
       id: user.id,
       account: {
-        id: account.id,
-        uuid: account.Actor.uuid
+        id: account.id
       }
     }
   }).end()
index 3d6dbfe701bf8b6774a11b3a3248c7b9ecb8f48c..c98a39be28ac6677aa37d68e086bb883be827a8a 100644 (file)
@@ -143,15 +143,14 @@ async function addVideoChannel (req: express.Request, res: express.Response) {
   })
 
   setAsyncActorKeys(videoChannelCreated.Actor)
-    .catch(err => logger.error('Cannot set async actor keys for account %s.', videoChannelCreated.Actor.uuid, { err }))
+    .catch(err => logger.error('Cannot set async actor keys for account %s.', videoChannelCreated.Actor.url, { err }))
 
   auditLogger.create(getAuditIdFromRes(res), new VideoChannelAuditView(videoChannelCreated.toFormattedJSON()))
-  logger.info('Video channel with uuid %s created.', videoChannelCreated.Actor.uuid)
+  logger.info('Video channel %s created.', videoChannelCreated.Actor.url)
 
   return res.json({
     videoChannel: {
-      id: videoChannelCreated.id,
-      uuid: videoChannelCreated.Actor.uuid
+      id: videoChannelCreated.id
     }
   }).end()
 }
@@ -180,7 +179,7 @@ async function updateVideoChannel (req: express.Request, res: express.Response)
         new VideoChannelAuditView(videoChannelInstanceUpdated.toFormattedJSON()),
         oldVideoChannelAuditKeys
       )
-      logger.info('Video channel with name %s and uuid %s updated.', videoChannelInstance.name, videoChannelInstance.Actor.uuid)
+      logger.info('Video channel %s updated.', videoChannelInstance.Actor.url)
     })
   } catch (err) {
     logger.debug('Cannot update the video channel.', { err })
@@ -205,7 +204,7 @@ async function removeVideoChannel (req: express.Request, res: express.Response)
     await videoChannelInstance.destroy({ transaction: t })
 
     auditLogger.delete(getAuditIdFromRes(res), new VideoChannelAuditView(videoChannelInstance.toFormattedJSON()))
-    logger.info('Video channel with name %s and uuid %s deleted.', videoChannelInstance.name, videoChannelInstance.Actor.uuid)
+    logger.info('Video channel %s deleted.', videoChannelInstance.Actor.url)
   })
 
   return res.type('json').status(204).end()
index 146c7708e2168967430cf9ffb6dd746985849a8c..31a2de5ca6ce5e2b5377ab4a3193bfd0108fbd99 100644 (file)
@@ -1,7 +1,6 @@
 import * as Bluebird from 'bluebird'
 import { Response } from 'express'
 import 'express-validator'
-import * as validator from 'validator'
 import { AccountModel } from '../../models/account/account'
 import { isUserDescriptionValid, isUserUsernameValid } from './users'
 import { exists } from './misc'
@@ -18,14 +17,8 @@ function isAccountDescriptionValid (value: string) {
   return isUserDescriptionValid(value)
 }
 
-function doesAccountIdExist (id: number | string, res: Response, sendNotFound = true) {
-  let promise: Bluebird<AccountModel>
-
-  if (validator.isInt('' + id)) {
-    promise = AccountModel.load(+id)
-  } else { // UUID
-    promise = AccountModel.loadByUUID('' + id)
-  }
+function doesAccountIdExist (id: number, res: Response, sendNotFound = true) {
+  const promise = AccountModel.load(id)
 
   return doesAccountExist(promise, res, sendNotFound)
 }
index fd56b9a70354b099a9e86bfd5410e2e5015d5e91..f818ce8f1acc2052b2a30eb50c586a8eeab818dd 100644 (file)
@@ -26,13 +26,8 @@ async function doesLocalVideoChannelNameExist (name: string, res: express.Respon
   return processVideoChannelExist(videoChannel, res)
 }
 
-async function doesVideoChannelIdExist (id: number | string, res: express.Response) {
-  let videoChannel: VideoChannelModel
-  if (validator.isInt('' + id)) {
-    videoChannel = await VideoChannelModel.loadAndPopulateAccount(+id)
-  } else { // UUID
-    videoChannel = await VideoChannelModel.loadByUUIDAndPopulateAccount('' + id)
-  }
+async function doesVideoChannelIdExist (id: number, res: express.Response) {
+  const videoChannel = await VideoChannelModel.loadAndPopulateAccount(+id)
 
   return processVideoChannelExist(videoChannel, res)
 }
index ec040b80e49f86fca18d7e10bdf5d7c14e1c3a55..be30be463468c19ca1c31cb104b3cb16a4f62511 100644 (file)
@@ -14,7 +14,7 @@ import { CONFIG, registerConfigChangedHandler } from './config'
 
 // ---------------------------------------------------------------------------
 
-const LAST_MIGRATION_VERSION = 380
+const LAST_MIGRATION_VERSION = 385
 
 // ---------------------------------------------------------------------------
 
diff --git a/server/initializers/migrations/0385-remove-actor-uuid.ts b/server/initializers/migrations/0385-remove-actor-uuid.ts
new file mode 100644 (file)
index 0000000..032c056
--- /dev/null
@@ -0,0 +1,19 @@
+import * as Sequelize from 'sequelize'
+
+async function up (utils: {
+  transaction: Sequelize.Transaction,
+  queryInterface: Sequelize.QueryInterface,
+  sequelize: Sequelize.Sequelize,
+  db: any
+}): Promise<void> {
+  await utils.queryInterface.removeColumn('actor', 'uuid')
+}
+
+function down (options) {
+  throw new Error('Not implemented.')
+}
+
+export {
+  up,
+  down
+}
index 25cd40905bc8f3497ff4c0d4f415918397faaf91..e0cb986bdf20e40173a35f00e103aed2cf512062 100644 (file)
@@ -33,7 +33,7 @@ function setAsyncActorKeys (actor: ActorModel) {
       return actor.save()
     })
     .catch(err => {
-      logger.error('Cannot set public/private keys of actor %d.', actor.uuid, { err })
+      logger.error('Cannot set public/private keys of actor %d.', actor.url, { err })
       return actor
     })
 }
@@ -128,18 +128,17 @@ async function updateActorInstance (actorInstance: ActorModel, attributes: Activ
   const followersCount = await fetchActorTotalItems(attributes.followers)
   const followingCount = await fetchActorTotalItems(attributes.following)
 
-  actorInstance.set('type', attributes.type)
-  actorInstance.set('uuid', attributes.uuid)
-  actorInstance.set('preferredUsername', attributes.preferredUsername)
-  actorInstance.set('url', attributes.id)
-  actorInstance.set('publicKey', attributes.publicKey.publicKeyPem)
-  actorInstance.set('followersCount', followersCount)
-  actorInstance.set('followingCount', followingCount)
-  actorInstance.set('inboxUrl', attributes.inbox)
-  actorInstance.set('outboxUrl', attributes.outbox)
-  actorInstance.set('sharedInboxUrl', attributes.endpoints.sharedInbox)
-  actorInstance.set('followersUrl', attributes.followers)
-  actorInstance.set('followingUrl', attributes.following)
+  actorInstance.type = attributes.type
+  actorInstance.preferredUsername = attributes.preferredUsername
+  actorInstance.url = attributes.id
+  actorInstance.publicKey = attributes.publicKey.publicKeyPem
+  actorInstance.followersCount = followersCount
+  actorInstance.followingCount = followingCount
+  actorInstance.inboxUrl = attributes.inbox
+  actorInstance.outboxUrl = attributes.outbox
+  actorInstance.sharedInboxUrl = attributes.endpoints.sharedInbox
+  actorInstance.followersUrl = attributes.followers
+  actorInstance.followingUrl = attributes.following
 }
 
 async function updateActorAvatarInstance (actorInstance: ActorModel, avatarName: string, t: Transaction) {
@@ -388,7 +387,6 @@ async function fetchRemoteActor (actorUrl: string): Promise<{ statusCode?: numbe
 
   const actor = new ActorModel({
     type: actorJSON.type,
-    uuid: actorJSON.uuid,
     preferredUsername: actorJSON.preferredUsername,
     url: actorJSON.id,
     publicKey: actorJSON.publicKey.publicKeyPem,
index 76f07fd8a8a0537efdc5e5837132990f3f586e09..6f10a50bdc3411317c2d0cde0f144e3b69ecb354 100644 (file)
@@ -95,23 +95,23 @@ async function processDeleteVideoPlaylist (actor: ActorModel, playlistToDelete:
 }
 
 async function processDeleteAccount (accountToRemove: AccountModel) {
-  logger.debug('Removing remote account "%s".', accountToRemove.Actor.uuid)
+  logger.debug('Removing remote account "%s".', accountToRemove.Actor.url)
 
   await sequelizeTypescript.transaction(async t => {
     await accountToRemove.destroy({ transaction: t })
   })
 
-  logger.info('Remote account with uuid %s removed.', accountToRemove.Actor.uuid)
+  logger.info('Remote account %s removed.', accountToRemove.Actor.url)
 }
 
 async function processDeleteVideoChannel (videoChannelToRemove: VideoChannelModel) {
-  logger.debug('Removing remote video channel "%s".', videoChannelToRemove.Actor.uuid)
+  logger.debug('Removing remote video channel "%s".', videoChannelToRemove.Actor.url)
 
   await sequelizeTypescript.transaction(async t => {
     await videoChannelToRemove.destroy({ transaction: t })
   })
 
-  logger.info('Remote video channel with uuid %s removed.', videoChannelToRemove.Actor.uuid)
+  logger.info('Remote video channel %s removed.', videoChannelToRemove.Actor.url)
 }
 
 function processDeleteVideoComment (byActor: ActorModel, videoComment: VideoCommentModel, activity: ActivityDelete) {
index 54a9234bb16c0740fd111caa1b40ff281adbb419..71a16daccd92cd83335dffcef51b493223372bb8 100644 (file)
@@ -95,7 +95,7 @@ async function processUpdateCacheFile (byActor: ActorModel, activity: ActivityUp
 async function processUpdateActor (actor: ActorModel, activity: ActivityUpdate) {
   const actorAttributesToUpdate = activity.object as ActivityPubActor
 
-  logger.debug('Updating remote account "%s".', actorAttributesToUpdate.uuid)
+  logger.debug('Updating remote account "%s".', actorAttributesToUpdate.url)
   let accountOrChannelInstance: AccountModel | VideoChannelModel
   let actorFieldsSave: object
   let accountOrChannelFieldsSave: object
@@ -128,7 +128,7 @@ async function processUpdateActor (actor: ActorModel, activity: ActivityUpdate)
       await accountOrChannelInstance.save({ transaction: t })
     })
 
-    logger.info('Remote account with uuid %s updated', actorAttributesToUpdate.uuid)
+    logger.info('Remote account %s updated', actorAttributesToUpdate.url)
   } catch (err) {
     if (actor !== undefined && actorFieldsSave !== undefined) {
       resetSequelizeInstance(actor, actorFieldsSave)
index e4f5c98fe32a8189377fd5f742d3eae79a3d4b78..dd362619d6a0e2c4f776e3f0b598988f99a1b8ff 100644 (file)
@@ -1,21 +1,20 @@
 import * as express from 'express'
 import { param, query } from 'express-validator/check'
-import { doesAccountIdExist, isAccountNameValid, doesAccountNameWithHostExist } from '../../helpers/custom-validators/accounts'
-import { isIdOrUUIDValid } from '../../helpers/custom-validators/misc'
+import { doesAccountIdExist, doesAccountNameWithHostExist } from '../../helpers/custom-validators/accounts'
+import { isIdOrUUIDValid, isIdValid } from '../../helpers/custom-validators/misc'
 import { logger } from '../../helpers/logger'
 import { areValidationErrors } from './utils'
 import { isValidRSSFeed } from '../../helpers/custom-validators/feeds'
 import { doesVideoChannelIdExist, doesVideoChannelNameWithHostExist } from '../../helpers/custom-validators/video-channels'
 import { doesVideoExist } from '../../helpers/custom-validators/videos'
-import { isActorPreferredUsernameValid } from '../../helpers/custom-validators/activitypub/actor'
 
 const videoFeedsValidator = [
   param('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'),
   query('format').optional().custom(isValidRSSFeed).withMessage('Should have a valid format (rss, atom, json)'),
-  query('accountId').optional().custom(isIdOrUUIDValid),
-  query('accountName').optional().custom(isAccountNameValid),
-  query('videoChannelId').optional().custom(isIdOrUUIDValid),
-  query('videoChannelName').optional().custom(isActorPreferredUsernameValid),
+  query('accountId').optional().custom(isIdValid),
+  query('accountName').optional(),
+  query('videoChannelId').optional().custom(isIdValid),
+  query('videoChannelName').optional(),
 
   async (req: express.Request, res: express.Response, next: express.NextFunction) => {
     logger.debug('Checking feeds parameters', { parameters: req.query })
index 2b04acd863743d3a6e8c69462165741d83350ece..09cada0967abf5ad39c820fbd20ee888717fa9ee 100644 (file)
@@ -47,7 +47,7 @@ export enum ScopeNames {
       attributes: [ 'id', 'name' ],
       include: [
         {
-          attributes: [ 'id', 'uuid', 'preferredUsername', 'url', 'serverId', 'avatarId' ],
+          attributes: [ 'id', 'preferredUsername', 'url', 'serverId', 'avatarId' ],
           model: ActorModel.unscoped(),
           required: true,
           where: whereActor,
@@ -180,22 +180,6 @@ export class AccountModel extends Model<AccountModel> {
     return AccountModel.findByPk(id, { transaction })
   }
 
-  static loadByUUID (uuid: string) {
-    const query = {
-      include: [
-        {
-          model: ActorModel,
-          required: true,
-          where: {
-            uuid
-          }
-        }
-      ]
-    }
-
-    return AccountModel.findOne(query)
-  }
-
   static loadByNameWithHost (nameWithHost: string) {
     const [ accountName, host ] = nameWithHost.split('@')
 
@@ -332,7 +316,6 @@ export class AccountModel extends Model<AccountModel> {
 
     return {
       id: this.id,
-      uuid: actor.uuid,
       name: actor.name,
       displayName: this.getDisplayName(),
       url: actor.url,
index 4a466441cd98a73c034ace260279a884d38aeb34..bd6a2c8fdbf712bdfb942f4a6412de2b14663fc5 100644 (file)
@@ -7,13 +7,11 @@ import {
   Column,
   CreatedAt,
   DataType,
-  Default,
   DefaultScope,
   ForeignKey,
   HasMany,
   HasOne,
   Is,
-  IsUUID,
   Model,
   Scopes,
   Table,
@@ -119,10 +117,6 @@ export const unusedActorAttributesForAPI = [
     {
       fields: [ 'avatarId' ]
     },
-    {
-      fields: [ 'uuid' ],
-      unique: true
-    },
     {
       fields: [ 'followersUrl' ]
     }
@@ -134,12 +128,6 @@ export class ActorModel extends Model<ActorModel> {
   @Column(DataType.ENUM(...values(ACTIVITY_PUB_ACTOR_TYPES)))
   type: ActivityPubActorType
 
-  @AllowNull(false)
-  @Default(DataType.UUIDV4)
-  @IsUUID(4)
-  @Column(DataType.UUID)
-  uuid: string
-
   @AllowNull(false)
   @Is('ActorPreferredUsername', value => throwIfNotValid(value, isActorPreferredUsernameValid, 'actor preferred username'))
   @Column
@@ -408,7 +396,6 @@ export class ActorModel extends Model<ActorModel> {
     return {
       id: this.id,
       url: this.url,
-      uuid: this.uuid,
       name: this.preferredUsername,
       host: this.getHost(),
       hostRedundancyAllowed: this.getRedundancyAllowed(),
@@ -454,7 +441,6 @@ export class ActorModel extends Model<ActorModel> {
       endpoints: {
         sharedInbox: this.sharedInboxUrl
       },
-      uuid: this.uuid,
       publicKey: {
         id: this.getPublicKeyUrl(),
         owner: this.url,
index d73be18d66761bb874518872790965d678fe70d1..b0b261c88a93dc965a3955685244a4256883795f 100644 (file)
@@ -72,7 +72,7 @@ type AvailableForListOptions = {
       attributes: [ 'name', 'description', 'id', 'actorId' ],
       include: [
         {
-          attributes: [ 'uuid', 'preferredUsername', 'url', 'serverId', 'avatarId' ],
+          attributes: [ 'preferredUsername', 'url', 'serverId', 'avatarId' ],
           model: ActorModel.unscoped(),
           required: true,
           include: [
@@ -387,24 +387,6 @@ export class VideoChannelModel extends Model<VideoChannelModel> {
       .findByPk(id)
   }
 
-  static loadByUUIDAndPopulateAccount (uuid: string) {
-    const query = {
-      include: [
-        {
-          model: ActorModel,
-          required: true,
-          where: {
-            uuid
-          }
-        }
-      ]
-    }
-
-    return VideoChannelModel
-      .scope([ ScopeNames.WITH_ACCOUNT ])
-      .findOne(query)
-  }
-
   static loadByUrlAndPopulateAccount (url: string) {
     const query = {
       include: [
@@ -510,7 +492,6 @@ export class VideoChannelModel extends Model<VideoChannelModel> {
 
     return {
       id: this.id,
-      uuid: actor.uuid,
       name: actor.name,
       displayName: this.getDisplayName(),
       url: actor.url,
index 988fdad3f9feb620c2065051681cabe6c4e4e2c8..7914183188e6578f5cd354ce75faa2e6da82c3a1 100644 (file)
@@ -5,7 +5,8 @@ import 'mocha'
 import { Account } from '../../../../shared/models/actors'
 import {
   checkTmpIsEmpty,
-  checkVideoFilesWereRemoved, cleanupTests,
+  checkVideoFilesWereRemoved,
+  cleanupTests,
   createUser,
   doubleFollow,
   flushAndRunMultipleServers,
@@ -15,14 +16,7 @@ import {
   updateMyUser,
   userLogin
 } from '../../../../shared/extra-utils'
-import {
-  getMyUserInformation,
-  killallServers,
-  ServerInfo,
-  testImage,
-  updateMyAvatar,
-  uploadVideo
-} from '../../../../shared/extra-utils/index'
+import { getMyUserInformation, ServerInfo, testImage, updateMyAvatar, uploadVideo } from '../../../../shared/extra-utils/index'
 import { checkActorFilesWereRemoved, getAccount, getAccountsList } from '../../../../shared/extra-utils/users/accounts'
 import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
 import { User } from '../../../../shared/models/users'
@@ -34,12 +28,10 @@ const expect = chai.expect
 describe('Test users with multiple servers', function () {
   let servers: ServerInfo[] = []
   let user: User
-  let userAccountName: string
-  let userAccountUUID: string
-  let userVideoChannelUUID: string
   let userId: number
   let videoUUID: string
   let userAccessToken: string
+  let userAvatarFilename: string
 
   before(async function () {
     this.timeout(120000)
@@ -74,19 +66,6 @@ describe('Test users with multiple servers', function () {
       userAccessToken = await userLogin(servers[ 0 ], user)
     }
 
-    {
-      const res = await getMyUserInformation(servers[0].url, userAccessToken)
-      const account: Account = res.body.account
-      userAccountName = account.name + '@' + account.host
-      userAccountUUID = account.uuid
-    }
-
-    {
-      const res = await getMyUserInformation(servers[ 0 ].url, servers[ 0 ].accessToken)
-      const user: User = res.body
-      userVideoChannelUUID = user.videoChannels[0].uuid
-    }
-
     {
       const resVideo = await uploadVideo(servers[ 0 ].url, userAccessToken, {})
       videoUUID = resVideo.body.video.uuid
@@ -106,6 +85,8 @@ describe('Test users with multiple servers', function () {
 
     const res = await getMyUserInformation(servers[0].url, servers[0].accessToken)
     user = res.body
+
+    const account: Account = user.account
     expect(user.account.displayName).to.equal('my super display name')
 
     await waitJobs(servers)
@@ -142,7 +123,9 @@ describe('Test users with multiple servers', function () {
     const res = await getMyUserInformation(servers[0].url, servers[0].accessToken)
     user = res.body
 
-    await testImage(servers[0].url, 'avatar2-resized', user.account.avatar.path, '.png')
+    userAvatarFilename = user.account.avatar.path
+
+    await testImage(servers[0].url, 'avatar2-resized', userAvatarFilename, '.png')
 
     await waitJobs(servers)
   })
@@ -173,7 +156,7 @@ describe('Test users with multiple servers', function () {
 
   it('Should list account videos', async function () {
     for (const server of servers) {
-      const res = await getAccountVideos(server.url, server.accessToken, userAccountName, 0, 5)
+      const res = await getAccountVideos(server.url, server.accessToken, 'user1@localhost:' + servers[0].port, 0, 5)
 
       expect(res.body.total).to.equal(1)
       expect(res.body.data).to.be.an('array')
@@ -218,8 +201,7 @@ describe('Test users with multiple servers', function () {
 
   it('Should not have actor files', async () => {
     for (const server of servers) {
-      await checkActorFilesWereRemoved(userAccountUUID, server.internalServerNumber)
-      await checkActorFilesWereRemoved(userVideoChannelUUID, server.internalServerNumber)
+      await checkActorFilesWereRemoved(userAvatarFilename, server.internalServerNumber)
     }
   })
 
index e98f14ea81c40a2fe2464fd549b657a99dd0694a..2d298dd3f522a289be2709639e7efca69f758454 100644 (file)
@@ -18,12 +18,10 @@ import {
 import {
   addVideoChannel,
   deleteVideoChannel,
-  flushTests,
   getAccountVideoChannelsList,
   getMyUserInformation,
   getVideoChannel,
   getVideoChannelsList,
-  killallServers,
   ServerInfo,
   setAccessTokensToServers,
   updateVideoChannel
@@ -35,7 +33,6 @@ const expect = chai.expect
 describe('Test video channels', function () {
   let servers: ServerInfo[]
   let userInfo: User
-  let accountUUID: string
   let firstVideoChannelId: number
   let secondVideoChannelId: number
   let videoUUID: string
@@ -51,7 +48,6 @@ describe('Test video channels', function () {
     {
       const res = await getMyUserInformation(servers[0].url, servers[0].accessToken)
       const user: User = res.body
-      accountUUID = user.account.uuid
 
       firstVideoChannelId = user.videoChannels[0].id
     }
index 0dcdf09cf1bdedcd986b711871fd3545389b0920..437470327bb73b7764b80d30b82e0bce61a0f9c0 100644 (file)
@@ -7,13 +7,13 @@ import {
   createUser,
   doubleFollow,
   flushAndRunMultipleServers,
-  flushTests,
-  getJSONfeed, getMyUserInformation,
+  getJSONfeed,
+  getMyUserInformation,
   getXMLfeed,
-  killallServers,
   ServerInfo,
   setAccessTokensToServers,
-  uploadVideo, userLogin
+  uploadVideo,
+  userLogin
 } from '../../../shared/extra-utils'
 import * as libxmljs from 'libxmljs'
 import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video-comments'
@@ -28,10 +28,10 @@ const expect = chai.expect
 describe('Test syndication feeds', () => {
   let servers: ServerInfo[] = []
   let userAccessToken: string
-  let rootAccountUUID: string
-  let rootChannelUUID: string
-  let userAccountUUID: string
-  let userChannelUUID: string
+  let rootAccountId: number
+  let rootChannelId: number
+  let userAccountId: number
+  let userChannelId: number
 
   before(async function () {
     this.timeout(120000)
@@ -45,8 +45,8 @@ describe('Test syndication feeds', () => {
     {
       const res = await getMyUserInformation(servers[0].url, servers[0].accessToken)
       const user: User = res.body
-      rootAccountUUID = user.account.uuid
-      rootChannelUUID = user.videoChannels[0].uuid
+      rootAccountId = user.account.id
+      rootChannelId = user.videoChannels[0].id
     }
 
     {
@@ -56,8 +56,8 @@ describe('Test syndication feeds', () => {
 
       const res = await getMyUserInformation(servers[0].url, userAccessToken)
       const user: User = res.body
-      userAccountUUID = user.account.uuid
-      userChannelUUID = user.videoChannels[0].uuid
+      userAccountId = user.account.id
+      userChannelId = user.videoChannels[0].id
     }
 
     {
@@ -127,71 +127,71 @@ describe('Test syndication feeds', () => {
     })
 
     it('Should filter by account', async function () {
+      {
+        const json = await getJSONfeed(servers[0].url, 'videos', { accountId: rootAccountId })
+        const jsonObj = JSON.parse(json.text)
+        expect(jsonObj.items.length).to.be.equal(1)
+        expect(jsonObj.items[ 0 ].title).to.equal('my super name for server 1')
+        expect(jsonObj.items[ 0 ].author.name).to.equal('root')
+      }
+
+      {
+        const json = await getJSONfeed(servers[0].url, 'videos', { accountId: userAccountId })
+        const jsonObj = JSON.parse(json.text)
+        expect(jsonObj.items.length).to.be.equal(1)
+        expect(jsonObj.items[ 0 ].title).to.equal('user video')
+        expect(jsonObj.items[ 0 ].author.name).to.equal('john')
+      }
+
       for (const server of servers) {
         {
-          const json = await getJSONfeed(server.url, 'videos', { accountId: rootAccountUUID })
+          const json = await getJSONfeed(server.url, 'videos', { accountName: 'root@localhost:' + servers[0].port })
           const jsonObj = JSON.parse(json.text)
           expect(jsonObj.items.length).to.be.equal(1)
           expect(jsonObj.items[ 0 ].title).to.equal('my super name for server 1')
-          expect(jsonObj.items[ 0 ].author.name).to.equal('root')
         }
 
         {
-          const json = await getJSONfeed(server.url, 'videos', { accountId: userAccountUUID })
+          const json = await getJSONfeed(server.url, 'videos', { accountName: 'john@localhost:' + servers[0].port })
           const jsonObj = JSON.parse(json.text)
           expect(jsonObj.items.length).to.be.equal(1)
           expect(jsonObj.items[ 0 ].title).to.equal('user video')
-          expect(jsonObj.items[ 0 ].author.name).to.equal('john')
         }
       }
+    })
 
+    it('Should filter by video channel', async function () {
       {
-        const json = await getJSONfeed(servers[0].url, 'videos', { accountName: 'root' })
+        const json = await getJSONfeed(servers[0].url, 'videos', { videoChannelId: rootChannelId })
         const jsonObj = JSON.parse(json.text)
         expect(jsonObj.items.length).to.be.equal(1)
         expect(jsonObj.items[ 0 ].title).to.equal('my super name for server 1')
+        expect(jsonObj.items[ 0 ].author.name).to.equal('root')
       }
 
       {
-        const json = await getJSONfeed(servers[0].url, 'videos', { accountName: 'john' })
+        const json = await getJSONfeed(servers[0].url, 'videos', { videoChannelId: userChannelId })
         const jsonObj = JSON.parse(json.text)
         expect(jsonObj.items.length).to.be.equal(1)
         expect(jsonObj.items[ 0 ].title).to.equal('user video')
+        expect(jsonObj.items[ 0 ].author.name).to.equal('john')
       }
-    })
 
-    it('Should filter by video channel', async function () {
       for (const server of servers) {
         {
-          const json = await getJSONfeed(server.url, 'videos', { videoChannelId: rootChannelUUID })
+          const json = await getJSONfeed(server.url, 'videos', { videoChannelName: 'root_channel@localhost:' + servers[0].port })
           const jsonObj = JSON.parse(json.text)
           expect(jsonObj.items.length).to.be.equal(1)
           expect(jsonObj.items[ 0 ].title).to.equal('my super name for server 1')
-          expect(jsonObj.items[ 0 ].author.name).to.equal('root')
         }
 
         {
-          const json = await getJSONfeed(server.url, 'videos', { videoChannelId: userChannelUUID })
+          const json = await getJSONfeed(server.url, 'videos', { videoChannelName: 'john_channel@localhost:' + servers[0].port })
           const jsonObj = JSON.parse(json.text)
           expect(jsonObj.items.length).to.be.equal(1)
           expect(jsonObj.items[ 0 ].title).to.equal('user video')
-          expect(jsonObj.items[ 0 ].author.name).to.equal('john')
         }
       }
-
-      {
-        const json = await getJSONfeed(servers[0].url, 'videos', { videoChannelName: 'root_channel' })
-        const jsonObj = JSON.parse(json.text)
-        expect(jsonObj.items.length).to.be.equal(1)
-        expect(jsonObj.items[ 0 ].title).to.equal('my super name for server 1')
-      }
-
-      {
-        const json = await getJSONfeed(servers[0].url, 'videos', { videoChannelName: 'john_channel' })
-        const jsonObj = JSON.parse(json.text)
-        expect(jsonObj.items.length).to.be.equal(1)
-        expect(jsonObj.items[ 0 ].title).to.equal('user video')
-      }
     })
   })
 
index f64a2dbad642d3be5e2ea3e20d7e430fbe70c072..627e17cc3a113b048f049c0c9dbb9c7940355cad 100644 (file)
@@ -39,7 +39,7 @@ async function expectAccountFollows (url: string, nameWithDomain: string, follow
   expect(account.followingCount).to.equal(followingCount, message)
 }
 
-async function checkActorFilesWereRemoved (actorUUID: string, serverNumber: number) {
+async function checkActorFilesWereRemoved (filename: string, serverNumber: number) {
   const testDirectory = 'test' + serverNumber
 
   for (const directory of [ 'avatars' ]) {
@@ -50,7 +50,7 @@ async function checkActorFilesWereRemoved (actorUUID: string, serverNumber: numb
 
     const files = await readdir(directoryPath)
     for (const file of files) {
-      expect(file).to.not.contain(actorUUID)
+      expect(file).to.not.contain(filename)
     }
   }
 }
index b64de247074bd0d376fb2f7718584da6fef0be6e..a4ca43f261c88406e2cb464a34aa1ea59957b3a0 100644 (file)
@@ -524,7 +524,6 @@ async function completeVideoCheck (
   expect(video.nsfw).to.equal(attributes.nsfw)
   expect(video.description).to.equal(attributes.description)
   expect(video.account.id).to.be.a('number')
-  expect(video.account.uuid).to.be.a('string')
   expect(video.account.host).to.equal(attributes.account.host)
   expect(video.account.name).to.equal(attributes.account.name)
   expect(video.channel.displayName).to.equal(attributes.channel.displayName)
index 5e30bf783b9b37bdc22b827c63e78df726da6b75..53ec579bcccafdac02815e105ea890362ea789eb 100644 (file)
@@ -21,7 +21,6 @@ export interface ActivityPubActor {
   attributedTo: ActivityPubAttributedTo[]
 
   support?: string
-  uuid: string
   publicKey: {
     id: string
     owner: string
index 043a2507e388f8dab9408883c81ea04f6fe5c467..2ff4b9f5eaa494d9204fc355f2185cd7e413ef45 100644 (file)
@@ -10,7 +10,6 @@ export interface Account extends Actor {
 
 export interface AccountSummary {
   id: number
-  uuid: string
   name: string
   displayName: string
   url: string
index a3953874d0bcf381482cd35f9b6754c4808172dd..1dbf5f63872670a7e4737c8c2c8d6707f5e4bc26 100644 (file)
@@ -2,7 +2,6 @@ import { Avatar } from '../avatars/avatar.model'
 
 export interface Actor {
   id: number
-  uuid: string
   url: string
   name: string
   host: string
index 14a813f8f752eea00d660064c90c5261a4c8fa4a..de4c26b3dd5236cdcd9e116c2bfc30a53d316f95 100644 (file)
@@ -12,7 +12,6 @@ export interface VideoChannel extends Actor {
 
 export interface VideoChannelSummary {
   id: number
-  uuid: string
   name: string
   displayName: string
   url: string