@@ -11,7 +11,7 @@ import {
1111 dummyUserOfficerWithRole ,
1212} from '../datasources/mockups/UserDataSource' ;
1313import { EmailInviteResponse } from '../models/EmailInviteResponse' ;
14- import { isRejection , Rejection } from '../models/Rejection' ;
14+ import { isRejection } from '../models/Rejection' ;
1515import { AuthJwtPayload , User , UserRole } from '../models/User' ;
1616import { verifyToken } from '../utils/jwt' ;
1717import UserMutations from './UserMutations' ;
@@ -238,135 +238,6 @@ test('externalTokenLogin supplies a new JWT', async () => {
238238 expect ( decoded . user . id ) . toBe ( dummyUser . id ) ;
239239} ) ;
240240
241- // Tests for updateUserByOidcSub functionality
242- describe ( 'updateUserByOidcSub' , ( ) => {
243- test ( 'A user can update their own profile by OIDC sub' , async ( ) => {
244- const result = await userMutations . updateUserByOidcSub ( dummyUserWithRole , {
245- oidcSub : dummyUser . oidcSub as string ,
246- firstname : 'UpdatedJane' ,
247- lastname : 'UpdatedDoe' ,
248- email : 'updated.jane@example.com' ,
249- id : dummyUser . id ,
250- } ) ;
251-
252- expect ( result ) . toEqual ( {
253- ...dummyUser ,
254- firstname : 'UpdatedJane' ,
255- lastname : 'UpdatedDoe' ,
256- email : 'updated.jane@example.com' ,
257- } ) ;
258- } ) ;
259-
260- test ( 'A user officer can update another user by OIDC sub' , async ( ) => {
261- const result = await userMutations . updateUserByOidcSub (
262- dummyUserOfficerWithRole ,
263- {
264- oidcSub : dummyUser . oidcSub as string ,
265- firstname : 'OfficerUpdatedJane' ,
266- department : 'Updated Department' ,
267- id : dummyUser . id ,
268- }
269- ) ;
270-
271- expect ( result ) . toEqual ( {
272- ...dummyUser ,
273- firstname : 'OfficerUpdatedJane' ,
274- department : 'Updated Department' ,
275- } ) ;
276- } ) ;
277- test ( 'A user cannot update another user by OIDC sub' , async ( ) => {
278- const result = await userMutations . updateUserByOidcSub (
279- dummyUserNotOnProposalWithRole ,
280- {
281- oidcSub : dummyUser . oidcSub as string ,
282- firstname : 'ShouldNotUpdate' ,
283- id : dummyUser . id ,
284- }
285- ) ;
286-
287- expect ( isRejection ( result ) ) . toBe ( true ) ;
288- expect ( ( result as Rejection ) . reason ) . toBe (
289- 'Can not update user because of insufficient permissions'
290- ) ;
291- } ) ;
292-
293- test ( 'A not logged in user cannot update a user by OIDC sub' , async ( ) => {
294- const result = await userMutations . updateUserByOidcSub ( null , {
295- oidcSub : dummyUser . oidcSub as string ,
296- firstname : 'ShouldNotUpdate' ,
297- id : dummyUser . id ,
298- } ) ;
299-
300- expect ( isRejection ( result ) ) . toBe ( true ) ;
301- expect ( ( result as Rejection ) . reason ) . toBe ( 'NOT_LOGGED_IN' ) ;
302- } ) ;
303-
304- test ( 'A user can update partial profile data by OIDC sub' , async ( ) => {
305- const result = await userMutations . updateUserByOidcSub ( dummyUserWithRole , {
306- oidcSub : dummyUser . oidcSub as string ,
307- telephone : '+1-555-9999' ,
308- position : 'Senior Architect' ,
309- id : dummyUser . id ,
310- } ) ;
311-
312- expect ( result ) . toEqual ( {
313- ...dummyUser ,
314- telephone : '+1-555-9999' ,
315- position : 'Senior Architect' ,
316- } ) ;
317- } ) ;
318-
319- test ( 'A user cannot update someone else profile even with their own OIDC sub when trying to update different user' , async ( ) => {
320- // Simulate user with different OIDC sub trying to update dummyUser
321- const userWithDifferentOidcSub = {
322- ...dummyUserNotOnProposalWithRole ,
323- oidcSub : 'different-oidc-sub' ,
324- } ;
325-
326- const result = await userMutations . updateUserByOidcSub (
327- userWithDifferentOidcSub ,
328- {
329- oidcSub : dummyUser . oidcSub as string ,
330- firstname : 'ShouldNotUpdate' ,
331- id : dummyUser . id ,
332- }
333- ) ;
334-
335- expect ( isRejection ( result ) ) . toBe ( true ) ;
336- expect ( ( result as Rejection ) . reason ) . toBe (
337- 'Can not update user because of insufficient permissions'
338- ) ;
339- } ) ;
340-
341- test ( 'Empty update object should work' , async ( ) => {
342- const result = await userMutations . updateUserByOidcSub ( dummyUserWithRole , {
343- oidcSub : dummyUser . oidcSub as string ,
344- id : dummyUser . id ,
345- } ) ;
346-
347- expect ( result ) . toEqual ( dummyUser ) ;
348- } ) ;
349-
350- test ( 'Update should preserve original user data for unspecified fields' , async ( ) => {
351- const result = await userMutations . updateUserByOidcSub ( dummyUserWithRole , {
352- oidcSub : dummyUser . oidcSub as string ,
353- firstname : 'OnlyFirstName' ,
354- id : dummyUser . id ,
355- } ) ;
356-
357- expect ( result ) . toEqual ( {
358- ...dummyUser ,
359- firstname : 'OnlyFirstName' ,
360- } ) ;
361-
362- // Verify other fields remain unchanged
363- expect ( isRejection ( result ) ) . toBe ( false ) ;
364- expect ( ( result as typeof dummyUser ) . lastname ) . toBe ( dummyUser . lastname ) ;
365- expect ( ( result as typeof dummyUser ) . email ) . toBe ( dummyUser . email ) ;
366- expect ( ( result as typeof dummyUser ) . department ) . toBe ( dummyUser . department ) ;
367- } ) ;
368- } ) ;
369-
370241describe ( 'upsertUserByOidcSub' , ( ) => {
371242 test ( 'A user can be created if OIDC sub does not exist' , async ( ) => {
372243 const newOidcSub = 'new-unique-oidc-sub' ;
0 commit comments