Fix 'i18n' server integration for testing

- Fix the sending of the multiple times registrars name to the email owner.
- Clarify the logging of the multiple times registrars name and the email owners name.
This commit is contained in:
Wolfgang Huß 2022-11-10 16:31:21 +01:00
parent 9154ff32d1
commit f8eea10371
6 changed files with 34 additions and 10 deletions

View File

@ -27,7 +27,7 @@ import { TransactionLink } from '@entity/TransactionLink'
import { EventProtocolType } from '@/event/EventProtocolType'
import { EventProtocol } from '@entity/EventProtocol'
import { logger } from '@test/testSetup'
import { logger, i18n as localization } from '@test/testSetup'
import { validate as validateUUID, version as versionUUID } from 'uuid'
import { peterLustig } from '@/seeds/users/peter-lustig'
import { UserContact } from '@entity/UserContact'
@ -71,7 +71,8 @@ let mutate: any, query: any, con: any
let testEnv: any
beforeAll(async () => {
testEnv = await testEnvironment(logger)
// Wolle: console.log('beforeAll localization: ', localization)
testEnv = await testEnvironment(logger, localization)
mutate = testEnv.mutate
query = testEnv.query
con = testEnv.con

View File

@ -416,8 +416,11 @@ export class UserResolver {
logger.info(`DbUser.findOne(email=${email}) = ${foundUser}`)
if (foundUser) {
// ATTENTION: this logger-message will be exactly expected during tests
// ATTENTION: this logger-message will be exactly expected during tests, next line
logger.info(`User already exists with this email=${email}`)
logger.info(
`Specified username when trying to register multiple times with this email: firstName=${firstName}, lastName=${lastName}`,
)
// TODO: this is unsecure, but the current implementation of the login server. This way it can be queried if the user with given EMail is existent.
const user = new User(communityDbUser)
@ -431,8 +434,8 @@ export class UserResolver {
logger.debug('partly faked user=' + user)
const emailSent = await sendAccountMultiRegistrationEmail({
firstName,
lastName,
firstName: foundUser.firstName, // this is the real name of the email owner, but just "firstName" would be the name of the new registrant which shall not be passed to the outside
lastName: foundUser.lastName, // this is the real name of the email owner, but just "lastName" would be the name of the new registrant which shall not be passed to the outside
email,
language,
})
@ -441,7 +444,9 @@ export class UserResolver {
eventProtocol.writeEvent(
event.setEventSendConfirmationEmail(eventSendAccountMultiRegistrationEmail),
)
logger.info(`sendAccountMultiRegistrationEmail of ${firstName}.${lastName} to ${email}`)
logger.info(
`sendAccountMultiRegistrationEmail by ${firstName} ${lastName} to ${foundUser.firstName} ${foundUser.lastName} <${email}>`,
)
/* uncomment this, when you need the activation link on the console */
// In case EMails are disabled log the activation link for the user
if (!emailSent) {

View File

@ -37,7 +37,7 @@ const createServer = async (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
context: any = serverContext,
logger: Logger = apolloLogger,
localization: any = i18n,
localization: i18n.I18n = i18n,
): Promise<ServerDef> => {
logger.addContext('user', 'unknown')
logger.debug('createServer...')

View File

@ -2,6 +2,7 @@ import path from 'path'
import { backendLogger } from './logger'
import i18n from 'i18n'
// Wolle: console.log('i18n backend/src/server/localization.ts: ', i18n)
i18n.configure({
locales: ['en', 'de'],
defaultLocale: 'en',

View File

@ -25,8 +25,9 @@ export const cleanDB = async () => {
}
}
export const testEnvironment = async (logger?: any) => {
const server = await createServer(context, logger)
export const testEnvironment = async (logger?: any, localization?: any) => {
// Wolle: console.log('testEnvironment localization: ', localization)
const server = await createServer(context, logger, localization)
const con = server.con
const testClient = createTestClient(server.apollo)
const mutate = testClient.mutate

View File

@ -1,4 +1,6 @@
import { backendLogger as logger } from '@/server/logger'
// Wolle: import i18n from 'i18n'
import { i18n } from '@/server/localization'
jest.setTimeout(1000000)
@ -19,4 +21,18 @@ jest.mock('@/server/logger', () => {
}
})
export { logger }
jest.mock('@/server/localization', () => {
const originalModule = jest.requireActual('@/server/localization')
return {
__esModule: true,
...originalModule,
i18n: {
init: jest.fn(),
// configure: jest.fn(),
// setLocale: jest.fn(),
},
}
})
// Wolle: console.log('testSetup.js i18n: ', i18n)
export { logger, i18n }