feat(backend): test transaction links

This commit is contained in:
Moriz Wahl 2023-03-07 14:31:24 +01:00
parent 3d9909b98e
commit ec87bea836
2 changed files with 39 additions and 3 deletions

View File

@ -306,7 +306,6 @@ describe('TransactionLinkResolver', () => {
}) })
}) })
// TODO: have this test separated into a transactionLink and a contributionLink part
describe('redeem daily Contribution Link', () => { describe('redeem daily Contribution Link', () => {
const now = new Date() const now = new Date()
let contributionLink: DbContributionLink | undefined let contributionLink: DbContributionLink | undefined
@ -508,6 +507,35 @@ describe('TransactionLinkResolver', () => {
}) })
}) })
}) })
describe('transaction link', () => {
beforeEach(() => {
jest.clearAllMocks()
})
describe('link does not exits', () => {
beforeAll(async () => {
await mutate({
mutation: login,
variables: { email: 'bibi@bloxberg.de', password: 'Aa12345_' },
})
})
it('throws and logs the error', async () => {
await expect(
mutate({
mutation: redeemTransactionLink,
variables: {
code: 'not-valid',
},
}),
).resolves.toMatchObject({
errors: [new GraphQLError('Transaction link not found')],
})
expect(logger.error).toBeCalledWith('Transaction link not found', 'not-valid')
})
})
})
}) })
}) })

View File

@ -285,12 +285,20 @@ export class TransactionLinkResolver {
return true return true
} else { } else {
const now = new Date() const now = new Date()
const transactionLink = await DbTransactionLink.findOneOrFail({ code }) const transactionLink = await DbTransactionLink.findOne({ code })
const linkedUser = await DbUser.findOneOrFail( if (!transactionLink) {
throw new LogError('Transaction link not found', code)
}
const linkedUser = await DbUser.findOne(
{ id: transactionLink.userId }, { id: transactionLink.userId },
{ relations: ['emailContact'] }, { relations: ['emailContact'] },
) )
if (!linkedUser) {
throw new LogError('Linked user not found for given link', transactionLink.userId)
}
if (user.id === linkedUser.id) { if (user.id === linkedUser.id) {
throw new LogError('Cannot redeem own transaction link', user.id) throw new LogError('Cannot redeem own transaction link', user.id)
} }