diff --git a/backend/src/apis/humhub/compareHumhubUserDbUser.test.ts b/backend/src/apis/humhub/compareHumhubUserDbUser.test.ts index cc636d17a..a3d6c7044 100644 --- a/backend/src/apis/humhub/compareHumhubUserDbUser.test.ts +++ b/backend/src/apis/humhub/compareHumhubUserDbUser.test.ts @@ -1,4 +1,7 @@ /* eslint-disable prettier/prettier */ +// eslint-disable-next-line import/no-unassigned-import +import 'reflect-metadata' +import { PublishNameType } from '@/graphql/enum/PublishNameType' import { communityDbUser } from '@/util/communityUser' import { isHumhubUserIdenticalToDbUser } from './compareHumhubUserDbUser' @@ -13,6 +16,7 @@ describe('isHumhubUserIdenticalToDbUser', () => { defaultUser.alias = 'alias' defaultUser.emailContact.email = 'email@gmail.com' defaultUser.language = 'en' + defaultUser.gradidoID = 'gradidoID' }) it('Should return true because humhubUser was created from entity user', () => { @@ -21,6 +25,20 @@ describe('isHumhubUserIdenticalToDbUser', () => { expect(result).toBe(true) }) + it('Should return false, because last name differ because of publish name type', () => { + const humhubUser = new GetUser(defaultUser, 1) + defaultUser.humhubPublishName = PublishNameType.PUBLISH_NAME_FIRST + const result = isHumhubUserIdenticalToDbUser(humhubUser, defaultUser) + expect(result).toBe(false) + }) + + it('Should return true, even if alias is empty', () => { + defaultUser.alias = '' + const humhubUser = new GetUser(defaultUser, 1) + const result = isHumhubUserIdenticalToDbUser(humhubUser, defaultUser) + expect(result).toBe(true) + }) + it('Should return false because first name differ', () => { const humhubUser = new GetUser(defaultUser, 1) humhubUser.profile.firstname = 'changed first name' diff --git a/backend/src/apis/humhub/syncUser.ts b/backend/src/apis/humhub/syncUser.ts index 8b7963b07..e5b793ee3 100644 --- a/backend/src/apis/humhub/syncUser.ts +++ b/backend/src/apis/humhub/syncUser.ts @@ -22,6 +22,10 @@ function isValid(postUser: PostUser, userId: number): boolean { logger.error('firstname too long for humhub, for user with id:', userId) return false } + if (postUser.profile.lastname.length > 20) { + logger.error('lastname too long for humhub, for user with id:', userId) + return false + } return true } diff --git a/backend/src/data/PublishName.logic.ts b/backend/src/data/PublishName.logic.ts index a78627d49..b70a29bb3 100644 --- a/backend/src/data/PublishName.logic.ts +++ b/backend/src/data/PublishName.logic.ts @@ -35,12 +35,16 @@ export class PublishNameLogic { * @returns user.firstName for PUBLISH_NAME_FIRST, PUBLISH_NAME_FIRST_INITIAL or PUBLISH_NAME_FULL */ public getFirstName(publishNameType: PublishNameType): string { + let firstName = '' + if (this.user && typeof this.user.firstName === 'string') { + firstName = this.user.firstName + } return [ PublishNameType.PUBLISH_NAME_FIRST, PublishNameType.PUBLISH_NAME_FIRST_INITIAL, PublishNameType.PUBLISH_NAME_FULL, ].includes(publishNameType) - ? this.user.firstName + ? firstName.slice(0, 20) : '' } @@ -51,10 +55,14 @@ export class PublishNameLogic { * first initial from user.lastName for PUBLISH_NAME_FIRST_INITIAL */ public getLastName(publishNameType: PublishNameType): string { + let lastName = '' + if (this.user && typeof this.user.lastName === 'string') { + lastName = this.user.lastName + } return publishNameType === PublishNameType.PUBLISH_NAME_FULL - ? this.user.lastName - : publishNameType === PublishNameType.PUBLISH_NAME_FIRST_INITIAL - ? this.user.lastName.charAt(0) + ? lastName.slice(0, 20) + : publishNameType === PublishNameType.PUBLISH_NAME_FIRST_INITIAL && lastName.length > 0 + ? lastName.charAt(0) : '' }