Finanzen: nur fuer Admins, Rueckkehrseite fuer die Bankfreigabe
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c910bedcec
commit
0069a62a09
6 files changed
+201
-3
No files matched your search
@@ -0,0 +1,59 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { loadModule } from './load.mjs'
|
||||
|
||||
const { parseCallback, successResult, failureResult, isResult } = await loadModule('src/lib/bankCallback.js')
|
||||
|
||||
test('parseCallback: code und state', () => {
|
||||
assert.deepEqual(parseCallback('?state=a&code=b'), { code: 'b', state: 'a', error: '' })
|
||||
})
|
||||
|
||||
test('parseCallback: Abbruch bei der Bank, error_description wird angehaengt', () => {
|
||||
assert.deepEqual(
|
||||
parseCallback('?state=a&error=access_denied&error_description=abgebrochen'),
|
||||
{ code: '', state: 'a', error: 'access_denied: abgebrochen' },
|
||||
)
|
||||
assert.equal(parseCallback('?error=access_denied').error, 'access_denied')
|
||||
})
|
||||
|
||||
test('parseCallback: ohne code und error -> null', () => {
|
||||
assert.equal(parseCallback(''), null)
|
||||
assert.equal(parseCallback('?'), null)
|
||||
assert.equal(parseCallback('?state=a'), null)
|
||||
assert.equal(parseCallback('?error_description=nur-text'), null)
|
||||
assert.equal(parseCallback(undefined), null)
|
||||
assert.equal(parseCallback(null), null)
|
||||
assert.equal(parseCallback(42), null)
|
||||
})
|
||||
|
||||
test('parseCallback: URL-Kodierung, erster Wert gewinnt, Suchteil auch ohne ?', () => {
|
||||
assert.deepEqual(parseCallback('?code=a%2Bb%3D&state=x%20y'), { code: 'a+b=', state: 'x y', error: '' })
|
||||
assert.equal(parseCallback('?code=erst&code=zweit').code, 'erst')
|
||||
assert.deepEqual(parseCallback('code=b&state=a'), { code: 'b', state: 'a', error: '' })
|
||||
})
|
||||
|
||||
test('successResult: gueltig bis uebernehmen', () => {
|
||||
assert.deepEqual(successResult({ ok: true, validUntil: '2099-03-29T00:00:00.000Z' }), { ok: true, validUntil: '2099-03-29T00:00:00.000Z' })
|
||||
assert.deepEqual(successResult({ ok: true }), { ok: true, validUntil: '' })
|
||||
})
|
||||
|
||||
test('successResult: Antwort ohne ok -> Fehlerergebnis mit deutschem Text', () => {
|
||||
const r = successResult({ ok: false })
|
||||
assert.equal(r.ok, false)
|
||||
assert.match(r.message, /Bankfreigabe/)
|
||||
assert.equal(successResult(null).ok, false)
|
||||
})
|
||||
|
||||
test('failureResult: Meldung des Servers, sonst Standardtext', () => {
|
||||
assert.deepEqual(failureResult({ message: 'Die Freigabe ist abgelaufen.' }), { ok: false, message: 'Die Freigabe ist abgelaufen.' })
|
||||
assert.match(failureResult(new Error('')).message, /Bankfreigabe/)
|
||||
assert.match(failureResult(undefined).message, /Bankfreigabe/)
|
||||
})
|
||||
|
||||
test('isResult: nur gueltige Ergebnisse aus dem Verlaufszustand', () => {
|
||||
assert.equal(isResult({ ok: true, validUntil: 'x' }), true)
|
||||
assert.equal(isResult({ ok: false, message: 'm' }), true)
|
||||
assert.equal(isResult(null), false)
|
||||
assert.equal(isResult({}), false)
|
||||
assert.equal(isResult({ ok: 'ja' }), false)
|
||||
})
|
||||
Reference in new issue
Block a user