fix: feedback resolve
This commit is contained in:
committed by
Andrew Bastin
parent
efc98588d9
commit
70665dae03
@@ -75,7 +75,6 @@ export class AdminResolver {
|
|||||||
})
|
})
|
||||||
@UseGuards(GqlAuthGuard, GqlAdminGuard)
|
@UseGuards(GqlAuthGuard, GqlAdminGuard)
|
||||||
async revokeUserInvitationsByAdmin(
|
async revokeUserInvitationsByAdmin(
|
||||||
@GqlAdmin() adminUser: Admin,
|
|
||||||
@Args({
|
@Args({
|
||||||
name: 'inviteeEmails',
|
name: 'inviteeEmails',
|
||||||
description: 'Invitee Emails',
|
description: 'Invitee Emails',
|
||||||
@@ -83,10 +82,7 @@ export class AdminResolver {
|
|||||||
})
|
})
|
||||||
inviteeEmails: string[],
|
inviteeEmails: string[],
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const invite = await this.adminService.revokeUserInvites(
|
const invite = await this.adminService.revokeUserInvitations(inviteeEmails);
|
||||||
inviteeEmails,
|
|
||||||
adminUser.uid,
|
|
||||||
);
|
|
||||||
if (E.isLeft(invite)) throwErr(invite.left);
|
if (E.isLeft(invite)) throwErr(invite.left);
|
||||||
return invite.right;
|
return invite.right;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ describe('AdminService', () => {
|
|||||||
test('should resolve right and apply pagination correctly', async () => {
|
test('should resolve right and apply pagination correctly', async () => {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
mockPrisma.user.findMany.mockResolvedValue([]);
|
mockPrisma.user.findMany.mockResolvedValue([dbAdminUsers[0]]);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
|
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ describe('AdminService', () => {
|
|||||||
where: {
|
where: {
|
||||||
NOT: {
|
NOT: {
|
||||||
inviteeEmail: {
|
inviteeEmail: {
|
||||||
in: [],
|
in: [dbAdminUsers[0].email],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -131,7 +131,7 @@ describe('AdminService', () => {
|
|||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
mockPrisma.user.findMany.mockResolvedValue([]);
|
mockPrisma.user.findMany.mockResolvedValue([dbAdminUsers[0]]);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
|
mockPrisma.invitedUsers.findMany.mockResolvedValue(invitedUsers);
|
||||||
|
|
||||||
@@ -206,16 +206,15 @@ describe('AdminService', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('revokeUserInvites', () => {
|
describe('revokeUserInvitations', () => {
|
||||||
test('should resolve left and return error if email not invited', async () => {
|
test('should resolve left and return error if email not invited', async () => {
|
||||||
mockPrisma.invitedUsers.deleteMany.mockRejectedValueOnce(
|
mockPrisma.invitedUsers.deleteMany.mockRejectedValueOnce(
|
||||||
'RecordNotFound',
|
'RecordNotFound',
|
||||||
);
|
);
|
||||||
|
|
||||||
const result = await adminService.revokeUserInvites(
|
const result = await adminService.revokeUserInvitations([
|
||||||
['test@gmail.com'],
|
'test@gmail.com',
|
||||||
'adminUid',
|
]);
|
||||||
);
|
|
||||||
|
|
||||||
expect(result).toEqualLeft(USER_INVITATION_DELETION_FAILED);
|
expect(result).toEqualLeft(USER_INVITATION_DELETION_FAILED);
|
||||||
});
|
});
|
||||||
@@ -224,10 +223,9 @@ describe('AdminService', () => {
|
|||||||
const adminUid = 'adminUid';
|
const adminUid = 'adminUid';
|
||||||
mockPrisma.invitedUsers.deleteMany.mockResolvedValueOnce({ count: 1 });
|
mockPrisma.invitedUsers.deleteMany.mockResolvedValueOnce({ count: 1 });
|
||||||
|
|
||||||
const result = await adminService.revokeUserInvites(
|
const result = await adminService.revokeUserInvitations([
|
||||||
[invitedUsers[0].inviteeEmail],
|
invitedUsers[0].inviteeEmail,
|
||||||
adminUid,
|
]);
|
||||||
);
|
|
||||||
|
|
||||||
expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({
|
expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({
|
||||||
where: {
|
where: {
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ export class AdminService {
|
|||||||
* @param adminUid Admin Uid
|
* @param adminUid Admin Uid
|
||||||
* @returns an Either of boolean or error string
|
* @returns an Either of boolean or error string
|
||||||
*/
|
*/
|
||||||
async revokeUserInvites(inviteeEmails: string[], adminUid: string) {
|
async revokeUserInvitations(inviteeEmails: string[]) {
|
||||||
try {
|
try {
|
||||||
await this.prisma.invitedUsers.deleteMany({
|
await this.prisma.invitedUsers.deleteMany({
|
||||||
where: {
|
where: {
|
||||||
@@ -414,6 +414,7 @@ export class AdminService {
|
|||||||
* Remove a user account by UID
|
* Remove a user account by UID
|
||||||
* @param userUid User UID
|
* @param userUid User UID
|
||||||
* @returns an Either of boolean or error
|
* @returns an Either of boolean or error
|
||||||
|
* @deprecated use removeUserAccounts instead
|
||||||
*/
|
*/
|
||||||
async removeUserAccount(userUid: string) {
|
async removeUserAccount(userUid: string) {
|
||||||
const user = await this.userService.findUserById(userUid);
|
const user = await this.userService.findUserById(userUid);
|
||||||
@@ -476,9 +477,7 @@ export class AdminService {
|
|||||||
const promiseResult = await Promise.allSettled(deletionPromises);
|
const promiseResult = await Promise.allSettled(deletionPromises);
|
||||||
|
|
||||||
// step 4: revoke all the invites sent to the deleted users
|
// step 4: revoke all the invites sent to the deleted users
|
||||||
await this.prisma.invitedUsers.deleteMany({
|
await this.revokeUserInvitations(deletedUserEmails);
|
||||||
where: { inviteeEmail: { in: deletedUserEmails } },
|
|
||||||
});
|
|
||||||
|
|
||||||
// step 5: return the result
|
// step 5: return the result
|
||||||
promiseResult.forEach((result) => {
|
promiseResult.forEach((result) => {
|
||||||
@@ -494,6 +493,7 @@ export class AdminService {
|
|||||||
* Make a user an admin
|
* Make a user an admin
|
||||||
* @param userUid User UID
|
* @param userUid User UID
|
||||||
* @returns an Either of boolean or error
|
* @returns an Either of boolean or error
|
||||||
|
* @deprecated use makeUsersAdmin instead
|
||||||
*/
|
*/
|
||||||
async makeUserAdmin(userUID: string) {
|
async makeUserAdmin(userUID: string) {
|
||||||
const admin = await this.userService.makeAdmin(userUID);
|
const admin = await this.userService.makeAdmin(userUID);
|
||||||
@@ -516,6 +516,7 @@ export class AdminService {
|
|||||||
* Remove user as admin
|
* Remove user as admin
|
||||||
* @param userUid User UID
|
* @param userUid User UID
|
||||||
* @returns an Either of boolean or error
|
* @returns an Either of boolean or error
|
||||||
|
* @deprecated use demoteUsersByAdmin instead
|
||||||
*/
|
*/
|
||||||
async removeUserAsAdmin(userUID: string) {
|
async removeUserAsAdmin(userUID: string) {
|
||||||
const adminUsers = await this.userService.fetchAdminUsers();
|
const adminUsers = await this.userService.fetchAdminUsers();
|
||||||
|
|||||||
Reference in New Issue
Block a user