mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
loggers are created only once, unify logger for unit tests
This commit is contained in:
parent
44c5cb8dc1
commit
5cac5d9cfb
@ -1,7 +1,6 @@
|
||||
import axios from 'axios'
|
||||
import log4js from '@/server/logger'
|
||||
|
||||
const logger = log4js.getLogger('http')
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export const apiPost = async (url: string, payload: unknown): Promise<any> => {
|
||||
|
||||
@ -25,30 +25,6 @@ import { sendAccountActivationEmail } from '@/mailer/sendAccountActivationEmail'
|
||||
import Decimal from 'decimal.js-light'
|
||||
import { AdminPendingCreation } from '@entity/AdminPendingCreation'
|
||||
import { Transaction as DbTransaction } from '@entity/Transaction'
|
||||
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
||||
import { logger } from './UserResolver'
|
||||
|
||||
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
||||
import { getLogger } from '@/server/logger'
|
||||
|
||||
jest.mock('@/server/logger', () => {
|
||||
const originalModule = jest.requireActual('@/server/logger')
|
||||
return {
|
||||
__esModule: true,
|
||||
...originalModule,
|
||||
getLogger: jest.fn(() => {
|
||||
return {
|
||||
addContext: jest.fn(),
|
||||
trace: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
fatal: jest.fn(),
|
||||
}
|
||||
}),
|
||||
}
|
||||
})
|
||||
|
||||
// mock account activation email to avoid console spam
|
||||
jest.mock('@/mailer/sendAccountActivationEmail', () => {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { getLogger } from '@/server/logger'
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
|
||||
import { Context, getUser } from '@/server/context'
|
||||
import { Resolver, Query, Ctx, Authorized } from 'type-graphql'
|
||||
@ -12,8 +12,6 @@ import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink'
|
||||
import { getCustomRepository } from '@dbTools/typeorm'
|
||||
import { TransactionLinkRepository } from '@repository/TransactionLink'
|
||||
|
||||
const logger = getLogger('backend')
|
||||
|
||||
@Resolver()
|
||||
export class BalanceResolver {
|
||||
@Authorized([RIGHTS.BALANCE])
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/* eslint-disable new-cap */
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
|
||||
import { getLogger } from '@/server/logger'
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
import CONFIG from '@/config'
|
||||
|
||||
import { Context, getUser } from '@/server/context'
|
||||
@ -35,8 +35,6 @@ import Decimal from 'decimal.js-light'
|
||||
|
||||
import { BalanceResolver } from './BalanceResolver'
|
||||
|
||||
const logger = getLogger('backend')
|
||||
|
||||
const MEMO_MAX_CHARS = 255
|
||||
const MEMO_MIN_CHARS = 5
|
||||
|
||||
|
||||
@ -12,28 +12,9 @@ import { User } from '@entity/User'
|
||||
import CONFIG from '@/config'
|
||||
import { sendAccountActivationEmail } from '@/mailer/sendAccountActivationEmail'
|
||||
import { sendResetPasswordEmail } from '@/mailer/sendResetPasswordEmail'
|
||||
import { printTimeDuration, activationLink, logger } from './UserResolver'
|
||||
import { printTimeDuration, activationLink } from './UserResolver'
|
||||
|
||||
import { getLogger } from '@/server/logger'
|
||||
|
||||
jest.mock('@/server/logger', () => {
|
||||
const originalModule = jest.requireActual('@/server/logger')
|
||||
return {
|
||||
__esModule: true,
|
||||
...originalModule,
|
||||
getLogger: jest.fn(() => {
|
||||
return {
|
||||
addContext: jest.fn(),
|
||||
trace: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
fatal: jest.fn(),
|
||||
}
|
||||
}),
|
||||
}
|
||||
})
|
||||
import { logger } from '@test/testSetup'
|
||||
|
||||
// import { klicktippSignIn } from '@/apis/KlicktippController'
|
||||
|
||||
@ -77,16 +58,6 @@ afterAll(async () => {
|
||||
})
|
||||
|
||||
describe('UserResolver', () => {
|
||||
describe('logger', () => {
|
||||
it('creates a logger', () => {
|
||||
expect(getLogger).toBeCalledWith('backend')
|
||||
})
|
||||
|
||||
it('adds user context to logger', () => {
|
||||
expect(logger.addContext).toBeCalledWith('user', 'unknown')
|
||||
})
|
||||
})
|
||||
|
||||
describe('createUser', () => {
|
||||
const variables = {
|
||||
email: 'peter@lustig.de',
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import fs from 'fs'
|
||||
import { getLogger } from '@/server/logger'
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
|
||||
import { Context, getUser } from '@/server/context'
|
||||
import { Resolver, Query, Args, Arg, Authorized, Ctx, UseMiddleware, Mutation } from 'type-graphql'
|
||||
@ -28,9 +28,6 @@ const sodium = require('sodium-native')
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const random = require('random-bigint')
|
||||
|
||||
export const logger = getLogger('backend')
|
||||
logger.addContext('user', 'unknown')
|
||||
|
||||
// We will reuse this for changePassword
|
||||
const isPassword = (password: string): boolean => {
|
||||
return !!password.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9 \\t\\n\\r]).{8,}$/)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { sendEMail, logger } from './sendEMail'
|
||||
import { sendEMail } from './sendEMail'
|
||||
import { createTransport } from 'nodemailer'
|
||||
import CONFIG from '@/config'
|
||||
|
||||
import { getLogger } from '@/server/logger'
|
||||
import { logger } from '@test/testSetup'
|
||||
|
||||
CONFIG.EMAIL = false
|
||||
CONFIG.EMAIL_SMTP_URL = 'EMAIL_SMTP_URL'
|
||||
@ -10,25 +10,6 @@ CONFIG.EMAIL_SMTP_PORT = '1234'
|
||||
CONFIG.EMAIL_USERNAME = 'user'
|
||||
CONFIG.EMAIL_PASSWORD = 'pwd'
|
||||
|
||||
jest.mock('@/server/logger', () => {
|
||||
const originalModule = jest.requireActual('@/server/logger')
|
||||
return {
|
||||
__esModule: true,
|
||||
...originalModule,
|
||||
getLogger: jest.fn(() => {
|
||||
return {
|
||||
addContext: jest.fn(),
|
||||
trace: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
fatal: jest.fn(),
|
||||
}
|
||||
}),
|
||||
}
|
||||
})
|
||||
|
||||
jest.mock('nodemailer', () => {
|
||||
return {
|
||||
__esModule: true,
|
||||
@ -46,12 +27,6 @@ jest.mock('nodemailer', () => {
|
||||
|
||||
describe('sendEMail', () => {
|
||||
let result: boolean
|
||||
describe('logger', () => {
|
||||
it('initializes the logger', () => {
|
||||
expect(getLogger).toBeCalledWith('backend.mailer.sendEMail')
|
||||
})
|
||||
})
|
||||
|
||||
describe('config email is false', () => {
|
||||
beforeEach(async () => {
|
||||
result = await sendEMail({
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
import { getLogger } from '@/server/logger'
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
import { createTransport } from 'nodemailer'
|
||||
|
||||
import CONFIG from '@/config'
|
||||
|
||||
export const logger = getLogger('backend.mailer.sendEMail')
|
||||
|
||||
export const sendEMail = async (emailDef: {
|
||||
to: string
|
||||
subject: string
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
import log4js from '@/server/logger'
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
import Decimal from 'decimal.js-light'
|
||||
import { sendEMail } from './sendEMail'
|
||||
import { transactionReceived } from './text/transactionReceived'
|
||||
|
||||
const logger = log4js.getLogger('backend.mailer.sendTransactionReceivedEmail')
|
||||
|
||||
export const sendTransactionReceivedEmail = (data: {
|
||||
senderFirstName: string
|
||||
senderLastName: string
|
||||
|
||||
@ -22,7 +22,7 @@ import schema from '@/graphql/schema'
|
||||
import { elopageWebhook } from '@/webhook/elopage'
|
||||
import { Connection } from '@dbTools/typeorm'
|
||||
|
||||
import { getLogger } from './logger'
|
||||
import { apolloLogger } from './logger'
|
||||
import { Logger } from 'log4js'
|
||||
|
||||
// TODO implement
|
||||
@ -30,14 +30,11 @@ import { Logger } from 'log4js'
|
||||
|
||||
type ServerDef = { apollo: ApolloServer; app: Express; con: Connection }
|
||||
|
||||
const serverLogger = getLogger('apollo')
|
||||
|
||||
const createServer = async (
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
context: any = serverContext,
|
||||
logger: Logger = serverLogger,
|
||||
logger: Logger = apolloLogger,
|
||||
): Promise<ServerDef> => {
|
||||
logger.addContext('user', 'unknown')
|
||||
logger.debug('createServer...')
|
||||
|
||||
// open mysql connection
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import log4js, { Logger } from 'log4js'
|
||||
import log4js from 'log4js'
|
||||
import CONFIG from '@/config'
|
||||
|
||||
import { readFileSync } from 'fs'
|
||||
@ -9,8 +9,10 @@ options.categories.default.level = CONFIG.LOG_LEVEL
|
||||
|
||||
log4js.configure(options)
|
||||
|
||||
export const getLogger = (name: string): Logger => {
|
||||
return log4js.getLogger(name)
|
||||
}
|
||||
const apolloLogger = log4js.getLogger('apollo')
|
||||
const backendLogger = log4js.getLogger('backend')
|
||||
|
||||
export default log4js
|
||||
apolloLogger.addContext('user', 'unknown')
|
||||
backendLogger.addContext('user', 'unknown')
|
||||
|
||||
export { apolloLogger, backendLogger }
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
import { Migration } from '@entity/Migration'
|
||||
import log4js from '@/server/logger'
|
||||
|
||||
const logger = log4js.getLogger('backend.DBVersion')
|
||||
logger.addContext('user', 'unknown')
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
|
||||
const getDBVersion = async (): Promise<string | null> => {
|
||||
try {
|
||||
|
||||
@ -1,7 +1,22 @@
|
||||
/* eslint-disable no-console */
|
||||
import { backendLogger as logger } from '@/server/logger'
|
||||
|
||||
// disable console.info for apollo log
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
console.info = () => {}
|
||||
jest.setTimeout(1000000)
|
||||
|
||||
jest.mock('@/server/logger', () => {
|
||||
const originalModule = jest.requireActual('@/server/logger')
|
||||
return {
|
||||
__esModule: true,
|
||||
...originalModule,
|
||||
backendLogger: {
|
||||
addContext: jest.fn(),
|
||||
trace: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
fatal: jest.fn(),
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
export { logger }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user