From b955faa983782db2058cfc66b439d839c5e1f00e Mon Sep 17 00:00:00 2001 From: David Mehren Date: Sun, 16 Jan 2022 22:19:53 +0100 Subject: [PATCH] refactor(note-permissions-dto): do not embed User objects This is part of an effort to consistently not embed User objects in API responses. Usernames are returned instead. Signed-off-by: David Mehren --- src/notes/note-permissions.dto.ts | 8 ++++---- src/notes/notes.service.spec.ts | 9 +++------ src/notes/notes.service.ts | 2 +- test/public-api/notes.e2e-spec.ts | 2 +- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/notes/note-permissions.dto.ts b/src/notes/note-permissions.dto.ts index 07d1bb52d..7594c8cf2 100644 --- a/src/notes/note-permissions.dto.ts +++ b/src/notes/note-permissions.dto.ts @@ -87,12 +87,12 @@ export class NoteGroupPermissionUpdateDto { export class NotePermissionsDto { /** - * User this permission applies to + * Username of the User this permission applies to */ - @ValidateNested() - @ApiPropertyOptional({ type: UserInfoDto }) + @IsString() + @ApiPropertyOptional() @IsOptional() - owner: UserInfoDto | null; + owner: string | null; /** * List of users the note is shared with diff --git a/src/notes/notes.service.spec.ts b/src/notes/notes.service.spec.ts index 8ebd3f04d..901c1dcdb 100644 --- a/src/notes/notes.service.spec.ts +++ b/src/notes/notes.service.spec.ts @@ -686,8 +686,7 @@ describe('NotesService', () => { }, ]); const permissions = await service.toNotePermissionsDto(note); - expect(permissions.owner).not.toEqual(null); - expect(permissions.owner?.username).toEqual(user.username); + expect(permissions.owner).toEqual(user.username); expect(permissions.sharedToUsers).toHaveLength(1); expect(permissions.sharedToUsers[0].user.username).toEqual(user.username); expect(permissions.sharedToUsers[0].canEdit).toEqual(true); @@ -777,7 +776,7 @@ describe('NotesService', () => { expect(metadataDto.description).toEqual(note.description); expect(metadataDto.editedBy).toHaveLength(1); expect(metadataDto.editedBy[0]).toEqual(user.username); - expect(metadataDto.permissions.owner.username).toEqual(user.username); + expect(metadataDto.permissions.owner).toEqual(user.username); expect(metadataDto.permissions.sharedToUsers).toHaveLength(1); expect(metadataDto.permissions.sharedToUsers[0].user.username).toEqual( user.username, @@ -879,9 +878,7 @@ describe('NotesService', () => { expect(noteDto.metadata.description).toEqual(note.description); expect(noteDto.metadata.editedBy).toHaveLength(1); expect(noteDto.metadata.editedBy[0]).toEqual(user.username); - expect(noteDto.metadata.permissions.owner.username).toEqual( - user.username, - ); + expect(noteDto.metadata.permissions.owner).toEqual(user.username); expect(noteDto.metadata.permissions.sharedToUsers).toHaveLength(1); expect( noteDto.metadata.permissions.sharedToUsers[0].user.username, diff --git a/src/notes/notes.service.ts b/src/notes/notes.service.ts index c66d6102e..cfa1668b7 100644 --- a/src/notes/notes.service.ts +++ b/src/notes/notes.service.ts @@ -373,7 +373,7 @@ export class NotesService { const userPermissions = await note.userPermissions; const groupPermissions = await note.groupPermissions; return { - owner: owner ? this.usersService.toUserDto(owner) : null, + owner: owner ? owner.username : null, sharedToUsers: userPermissions.map((noteUserPermission) => ({ user: this.usersService.toUserDto(noteUserPermission.user), canEdit: noteUserPermission.canEdit, diff --git a/test/public-api/notes.e2e-spec.ts b/test/public-api/notes.e2e-spec.ts index a120ee8c3..fada69db8 100644 --- a/test/public-api/notes.e2e-spec.ts +++ b/test/public-api/notes.e2e-spec.ts @@ -276,7 +276,7 @@ describe('Notes', () => { expect(metadata.body.description).toEqual(''); expect(typeof metadata.body.createdAt).toEqual('string'); expect(metadata.body.editedBy).toEqual([]); - expect(metadata.body.permissions.owner.username).toEqual('hardcoded'); + expect(metadata.body.permissions.owner).toEqual('hardcoded'); expect(metadata.body.permissions.sharedToUsers).toEqual([]); expect(metadata.body.permissions.sharedToUsers).toEqual([]); expect(metadata.body.tags).toEqual([]);