more tests for transactions and finding users by different identifiers

This commit is contained in:
Moriz Wahl 2023-05-16 05:00:06 +02:00
parent 2e865c6744
commit 1fbebddd71
4 changed files with 39 additions and 6 deletions

View File

@ -7,7 +7,7 @@ module.exports = {
collectCoverageFrom: ['src/**/*.ts', '!**/node_modules/**', '!src/seeds/**', '!build/**'],
coverageThreshold: {
global: {
lines: 86,
lines: 89,
},
},
setupFiles: ['<rootDir>/test/testSetup.ts'],

View File

@ -2358,15 +2358,21 @@ describe('UserResolver', () => {
mutation: login,
variables: { email: 'bibi@bloxberg.de', password: 'Aa12345_' },
})
await mutate({
mutation: updateUserInfos,
variables: {
alias: 'bibi',
},
})
})
describe('identifier is no gradido ID and no email', () => {
describe('identifier is no gradido ID, no email and no alias', () => {
it('throws and logs "Unknown identifier type" error', async () => {
await expect(
query({
query: userQuery,
variables: {
identifier: 'identifier',
identifier: 'identifier_is_no_valid_alias!',
},
}),
).resolves.toEqual(
@ -2374,7 +2380,10 @@ describe('UserResolver', () => {
errors: [new GraphQLError('Unknown identifier type')],
}),
)
expect(logger.error).toBeCalledWith('Unknown identifier type', 'identifier')
expect(logger.error).toBeCalledWith(
'Unknown identifier type',
'identifier_is_no_valid_alias!',
)
})
})
@ -2441,6 +2450,29 @@ describe('UserResolver', () => {
)
})
})
describe('identifier is found via alias', () => {
it('returns user', async () => {
await expect(
query({
query: userQuery,
variables: {
identifier: 'bibi',
},
}),
).resolves.toEqual(
expect.objectContaining({
data: {
user: {
firstName: 'Bibi',
lastName: 'Bloxberg',
},
},
errors: undefined,
}),
)
})
})
})
})

View File

@ -3,7 +3,8 @@ import { User as DbUser } from '@entity/User'
import { LogError } from '@/server/LogError'
export const validAliasRegex = /^(?=.{3,20}$)[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9])*$/
// eslint-disable-next-line security/detect-unsafe-regex
export const validAliasRegex = /^(?=.{3,20}$)[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+?)*$/
const reservedAlias = [
'admin',

View File

@ -141,7 +141,7 @@ export const loadAllRules = (i18nCallback, apollo) => {
extend('usernameUnique', {
validate(value) {
if (value.match(/^(?=.{3,20}$)[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9])*$/)) {
if (value.match(/^(?=.{3,20}$)[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+?)*$/)) {
return apollo
.query({
query: checkUsername,