mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
further solved tests
This commit is contained in:
parent
eb537301b8
commit
faf86f95b9
@ -434,15 +434,13 @@ describe('UserResolver', () => {
|
||||
beforeAll(async () => {
|
||||
await userFactory(testEnv, peterLustig)
|
||||
await userFactory(testEnv, bobBaumeister)
|
||||
const loginResult = await mutate({ mutation: login, variables: bobData })
|
||||
console.log('login result=', loginResult)
|
||||
await mutate({ mutation: login, variables: bobData })
|
||||
|
||||
// create contribution as user bob
|
||||
contribution = await mutate({
|
||||
mutation: createContribution,
|
||||
variables: { amount: 1000, memo: 'testing', creationDate: new Date().toISOString() },
|
||||
})
|
||||
console.log('createContribution contribution=', contribution)
|
||||
|
||||
// login as admin
|
||||
await mutate({ mutation: login, variables: peterData })
|
||||
@ -452,7 +450,6 @@ describe('UserResolver', () => {
|
||||
mutation: confirmContribution,
|
||||
variables: { id: contribution.data.createContribution.id },
|
||||
})
|
||||
console.log('confirmContribution contribution=', contribution)
|
||||
|
||||
// login as user bob
|
||||
bob = await mutate({ mutation: login, variables: bobData })
|
||||
@ -477,7 +474,6 @@ describe('UserResolver', () => {
|
||||
redeemCode: transactionLink.code,
|
||||
},
|
||||
})
|
||||
console.log('newUser=', newUser)
|
||||
})
|
||||
|
||||
it('sets the referrer id to bob baumeister id', async () => {
|
||||
@ -1411,7 +1407,7 @@ describe('UserResolver', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it.only('finds peter@lustig.de', async () => {
|
||||
it('finds peter@lustig.de', async () => {
|
||||
await expect(mutate({ mutation: searchAdminUsers })).resolves.toEqual(
|
||||
expect.objectContaining({
|
||||
data: {
|
||||
@ -1625,14 +1621,14 @@ describe('UserResolver', () => {
|
||||
})
|
||||
|
||||
it('stores the ADMIN_USER_ROLE_SET event in the database', async () => {
|
||||
const userContact = await UserContact.findOneOrFail(
|
||||
{ email: 'bibi@bloxberg.de' },
|
||||
{ relations: ['user'] },
|
||||
)
|
||||
const adminContact = await UserContact.findOneOrFail(
|
||||
{ email: 'peter@lustig.de' },
|
||||
{ relations: ['user'] },
|
||||
)
|
||||
const userContact = await UserContact.findOneOrFail({
|
||||
where: { email: 'bibi@bloxberg.de' },
|
||||
relations: ['user'],
|
||||
})
|
||||
const adminContact = await UserContact.findOneOrFail({
|
||||
where: { email: 'peter@lustig.de' },
|
||||
relations: ['user'],
|
||||
})
|
||||
await expect(DbEvent.find()).resolves.toContainEqual(
|
||||
expect.objectContaining({
|
||||
type: EventType.ADMIN_USER_ROLE_SET,
|
||||
|
||||
@ -717,8 +717,8 @@ export class UserResolver {
|
||||
async setUserRole(
|
||||
@Arg('userId', () => Int)
|
||||
userId: number,
|
||||
@Arg('role', () => String)
|
||||
role: string,
|
||||
@Arg('role', () => String, { nullable: true })
|
||||
role: string | null,
|
||||
@Ctx()
|
||||
context: Context,
|
||||
): Promise<string | null> {
|
||||
@ -735,7 +735,6 @@ export class UserResolver {
|
||||
where: { id: userId },
|
||||
relations: ['userRoles'],
|
||||
})
|
||||
console.log('setUserRole user=', user)
|
||||
// user exists ?
|
||||
if (!user) {
|
||||
throw new LogError('Could not find user with given ID', userId)
|
||||
@ -745,33 +744,29 @@ export class UserResolver {
|
||||
if (moderator.id === userId) {
|
||||
throw new LogError('Administrator can not change his own role')
|
||||
}
|
||||
if (isUserInRole(user, role)) {
|
||||
// if user role(s) should be deleted by role=null as parameter
|
||||
if (role === null && user.userRoles && user.userRoles.length > 0) {
|
||||
await UserRole.delete({ userId: user.id })
|
||||
user.userRoles = undefined
|
||||
} else if (isUserInRole(user, role)) {
|
||||
throw new LogError('User already has role=', role)
|
||||
}
|
||||
// if user role should be deleted by role=null as parameter
|
||||
if (role === null && user.userRoles) {
|
||||
for (const usrRole of user.userRoles) {
|
||||
await UserRole.delete(usrRole)
|
||||
if (role) {
|
||||
if (user.userRoles === undefined) {
|
||||
user.userRoles = [] as UserRole[]
|
||||
}
|
||||
user.userRoles = undefined
|
||||
} else {
|
||||
if (!isUserInRole(user, role)) {
|
||||
if (user.userRoles === undefined) {
|
||||
user.userRoles = [] as UserRole[]
|
||||
user.userRoles[0] = UserRole.create()
|
||||
}
|
||||
user.userRoles[0].createdAt = new Date()
|
||||
user.userRoles[0].role = role
|
||||
user.userRoles[0].userId = user.id
|
||||
} else {
|
||||
throw new LogError('User already is in role=', role)
|
||||
if (user.userRoles.length < 1) {
|
||||
user.userRoles.push(UserRole.create())
|
||||
}
|
||||
user.userRoles[0].createdAt = new Date()
|
||||
user.userRoles[0].role = role
|
||||
user.userRoles[0].userId = user.id
|
||||
await UserRole.save(user.userRoles[0])
|
||||
}
|
||||
console.log('setUserRole before save user=', user)
|
||||
await user.save()
|
||||
// await user.save()
|
||||
await EVENT_ADMIN_USER_ROLE_SET(user, moderator)
|
||||
const newUser = await DbUser.findOne({ id: userId }, { relations: ['userRoles'] })
|
||||
console.log('setUserRole newUser=', user)
|
||||
const newUser = await DbUser.findOne({ where: { id: userId }, relations: ['userRoles'] })
|
||||
console.log('setUserRole newUser=', newUser)
|
||||
return newUser?.userRoles ? newUser.userRoles[0].role : null
|
||||
}
|
||||
|
||||
@ -865,7 +860,7 @@ export async function findUserByEmail(email: string): Promise<DbUser> {
|
||||
})
|
||||
const dbUser = dbUserContact.user
|
||||
dbUser.emailContact = dbUserContact
|
||||
dbUser.userRoles = await UserRole.find({ userId: dbUser.id })
|
||||
dbUser.userRoles = await UserRole.find({ where: { userId: dbUser.id } })
|
||||
return dbUser
|
||||
}
|
||||
|
||||
@ -894,7 +889,7 @@ const canEmailResend = (updatedAt: Date): boolean => {
|
||||
return !isTimeExpired(updatedAt, CONFIG.EMAIL_CODE_REQUEST_TIME)
|
||||
}
|
||||
|
||||
export function isUserInRole(user: DbUser, role: string): boolean {
|
||||
export function isUserInRole(user: DbUser, role: string | null): boolean {
|
||||
if (user?.userRoles) {
|
||||
for (const usrRole of user.userRoles) {
|
||||
if (usrRole.role === role) {
|
||||
|
||||
@ -119,7 +119,7 @@ export const confirmContribution = gql`
|
||||
`
|
||||
|
||||
export const setUserRole = gql`
|
||||
mutation ($userId: Int!, $role: String!) {
|
||||
mutation ($userId: Int!, $role: String) {
|
||||
setUserRole(userId: $userId, role: $role)
|
||||
}
|
||||
`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user