From beb563ac5cb72578094a5a1ede0ee1eb5da02fa9 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 10:05:56 +0200 Subject: [PATCH 1/6] Fix changes. --- backend/src/graphql/resolver/UserResolver.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 0368d7a31..09790f846 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -793,7 +793,12 @@ export class UserResolver { ) return { userCount: count, - userList: adminUsers, + userList: users.map((user) => { + return { + firstName: user.firstName, + lastName: user.lastName, + } + }), } } } From a44bcc00e22b43e533799f3e78a60bfd48410ef1 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 10:09:12 +0200 Subject: [PATCH 2/6] Remove unused code. --- backend/src/graphql/resolver/UserResolver.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 09790f846..ff11c841e 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -776,21 +776,6 @@ export class UserResolver { take: pageSize, }) - if (users.length === 0) { - return { - userCount: 0, - userList: [], - } - } - - const adminUsers = await Promise.all( - users.map((user) => { - return { - firstName: user.firstName, - lastName: user.lastName, - } - }), - ) return { userCount: count, userList: users.map((user) => { From f96fb5aa638647eeaabc9f760d669e27a2478e58 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 10:21:40 +0200 Subject: [PATCH 3/6] Add searchAdminUsers query to mocks. --- backend/src/seeds/graphql/queries.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/backend/src/seeds/graphql/queries.ts b/backend/src/seeds/graphql/queries.ts index 9f7a02e70..3bd042ac2 100644 --- a/backend/src/seeds/graphql/queries.ts +++ b/backend/src/seeds/graphql/queries.ts @@ -280,3 +280,15 @@ export const listContributionLinks = gql` } } ` + +export const searchAdminUsers = gql` + query { + searchAdminUsers { + userCount + userList { + firstName + lastName + } + } + } +` From 6c707eae59990be6aa32bc39658daf8c3d911fe3 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 10:22:08 +0200 Subject: [PATCH 4/6] Start tests for searchAdminUsers. --- backend/src/graphql/resolver/UserResolver.test.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 35a569c4b..fdfc31467 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -5,7 +5,7 @@ import { testEnvironment, headerPushMock, resetToken, cleanDB, resetEntity } fro import { userFactory } from '@/seeds/factory/user' import { bibiBloxberg } from '@/seeds/users/bibi-bloxberg' import { createUser, setPassword, forgotPassword, updateUserInfos } from '@/seeds/graphql/mutations' -import { login, logout, verifyLogin, queryOptIn } from '@/seeds/graphql/queries' +import { login, logout, verifyLogin, queryOptIn, searchAdminUsers } from '@/seeds/graphql/queries' import { GraphQLError } from 'graphql' import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' import { User } from '@entity/User' @@ -878,6 +878,19 @@ bei Gradidio sei dabei!`, }) }) }) + + describe('searchAdminUsers', () => { + describe('unauthenticated', () => { + it('throws an error', async () => { + resetToken() + await expect(mutate({ mutation: searchAdminUsers })).resolves.toEqual( + expect.objectContaining({ + errors: [new GraphQLError('401 Unauthorized')], + }), + ) + }) + }) + }) }) describe('printTimeDuration', () => { From 1c301d34a2637f727697def347e64c9e0ca1a7e5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 17 Aug 2022 11:37:13 +0200 Subject: [PATCH 5/6] Test for searchAdminUsers. --- .../src/graphql/resolver/UserResolver.test.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index fdfc31467..c7727ca5f 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -21,6 +21,7 @@ import { ContributionLink } from '@model/ContributionLink' import { logger } from '@test/testSetup' import { validate as validateUUID, version as versionUUID } from 'uuid' +import { peterLustig } from '@/seeds/users/peter-lustig' // import { klicktippSignIn } from '@/apis/KlicktippController' @@ -890,6 +891,38 @@ bei Gradidio sei dabei!`, ) }) }) + + describe('authenticated', () => { + beforeAll(async () => { + await userFactory(testEnv, bibiBloxberg) + await userFactory(testEnv, peterLustig) + await query({ + query: login, + variables: { + email: 'bibi@bloxberg.de', + password: 'Aa12345_', + }, + }) + }) + + it('finds peter@lustig.de', async () => { + await expect(mutate({ mutation: searchAdminUsers })).resolves.toEqual( + expect.objectContaining({ + data: { + searchAdminUsers: { + userCount: 1, + userList: expect.arrayContaining([ + expect.objectContaining({ + firstName: 'Peter', + lastName: 'Lustig', + }), + ]), + }, + }, + }), + ) + }) + }) }) }) From 194d4a6ad2c9ddb3f3664d047c7c2a638f1d518f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 17 Aug 2022 15:15:35 +0200 Subject: [PATCH 6/6] move right COMMUNITY_STATISTICS to user rights --- backend/src/auth/RIGHTS.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/auth/RIGHTS.ts b/backend/src/auth/RIGHTS.ts index a58d0aa2b..6e1c1e63b 100644 --- a/backend/src/auth/RIGHTS.ts +++ b/backend/src/auth/RIGHTS.ts @@ -31,6 +31,7 @@ export enum RIGHTS { LIST_ALL_CONTRIBUTIONS = 'LIST_ALL_CONTRIBUTIONS', UPDATE_CONTRIBUTION = 'UPDATE_CONTRIBUTION', LIST_CONTRIBUTION_LINKS = 'LIST_CONTRIBUTION_LINKS', + COMMUNITY_STATISTICS = 'COMMUNITY_STATISTICS', // Admin SEARCH_USERS = 'SEARCH_USERS', SET_USER_ROLE = 'SET_USER_ROLE', @@ -48,5 +49,4 @@ export enum RIGHTS { CREATE_CONTRIBUTION_LINK = 'CREATE_CONTRIBUTION_LINK', DELETE_CONTRIBUTION_LINK = 'DELETE_CONTRIBUTION_LINK', UPDATE_CONTRIBUTION_LINK = 'UPDATE_CONTRIBUTION_LINK', - COMMUNITY_STATISTICS = 'COMMUNITY_STATISTICS', }