32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
import { test } from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import { sourceFailure } from '../server/source-error.mjs';
|
||
|
||
test('EKAP human verification is a manual non-retryable gate', () => {
|
||
const result = sourceFailure(new Error('EKAP 428: {"code":"HUMAN_VERIFICATION_REQUIRED"}'));
|
||
assert.equal(result.status, 428);
|
||
assert.equal(result.body.code, 'HUMAN_VERIFICATION_REQUIRED');
|
||
assert.equal(result.body.retryable, false);
|
||
assert.equal(result.body.manualAction, true);
|
||
assert.equal(result.body.manualUrl, 'https://ekap.kik.gov.tr/EKAP/');
|
||
assert.match(result.body.error, /kendi tarayıcınızda açıp doğrulamayı tamamlayın/);
|
||
});
|
||
|
||
test('ordinary upstream failures stay retryable', () => {
|
||
const result = sourceFailure(new Error('upstream timeout'));
|
||
assert.equal(result.status, 502);
|
||
assert.deepEqual(result.body, {
|
||
success: false,
|
||
error: 'upstream timeout',
|
||
code: 'SOURCE_UNAVAILABLE',
|
||
retryable: true,
|
||
});
|
||
});
|
||
|
||
test('KIK HTTP 428 is also exposed as the same manual verification gate', () => {
|
||
const result = sourceFailure(new Error('KİK sunucusu isteği reddetti (HTTP 428).'));
|
||
assert.equal(result.status, 428);
|
||
assert.equal(result.body.code, 'HUMAN_VERIFICATION_REQUIRED');
|
||
assert.equal(result.body.manualAction, true);
|
||
});
|