39 lines
2.4 KiB
JavaScript
39 lines
2.4 KiB
JavaScript
import test from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import {accountRequest} from '../src/services/accountRequest.js';
|
||
import {getAllUserData,listDocuments,getTenderStates} from '../src/services/account.js';
|
||
|
||
test('account requests preserve conflict codes, distinguish malformed lists and reject HTTP errors',async()=>{
|
||
const original=globalThis.fetch;
|
||
try {
|
||
globalThis.fetch=async()=>Response.json({success:true});
|
||
for(const call of [listDocuments,getAllUserData,getTenderStates])await assert.rejects(call(),/eksik veya geçersiz/);
|
||
globalThis.fetch=async()=>Response.json({success:false,error:'Conflict',kod:'VERSION_CONFLICT'},{status:409});
|
||
await assert.rejects(accountRequest('/state'),{kod:'VERSION_CONFLICT'});
|
||
globalThis.fetch=async()=>Response.json({success:true},{status:503});
|
||
await assert.rejects(accountRequest('/state'),/503/);
|
||
globalThis.fetch=async()=>Response.json({success:true,belgeler:[]});
|
||
assert.deepEqual((await listDocuments()).belgeler,[]);
|
||
} finally {globalThis.fetch=original;}
|
||
});
|
||
test('stalled response bodies time out and uncertain writes are not retried',async()=>{
|
||
const original=globalThis.fetch;let calls=0;
|
||
try {
|
||
globalThis.fetch=async()=>{calls++;return {ok:true,json:()=>new Promise(()=>{})};};
|
||
await assert.rejects(accountRequest('/state',{method:'PUT',timeoutMs:5}),/sunucuda gerçekleşmiş olabilir/);
|
||
assert.equal(calls,1);
|
||
await assert.rejects(accountRequest('/state',{timeoutMs:5}),/Bilgiler zamanında/);
|
||
} finally {globalThis.fetch=original;}
|
||
});
|
||
test('late private account responses and explicit cancellation do not reach the caller',async()=>{
|
||
const original=globalThis.fetch,storage=Object.getOwnPropertyDescriptor(globalThis,'localStorage');
|
||
let token='first';Object.defineProperty(globalThis,'localStorage',{configurable:true,value:{getItem:()=>token}});
|
||
try {
|
||
globalThis.fetch=async()=>({ok:true,json:async()=>{token='second';return {success:true,veri:{private:'old account'}};}});
|
||
await assert.rejects(getAllUserData(),/Oturum değişti/);
|
||
const controller=new AbortController();controller.abort();
|
||
globalThis.fetch=async()=>{throw new Error('must not be called');};
|
||
await assert.rejects(accountRequest('/state',{signal:controller.signal}),{name:'AbortError'});
|
||
} finally {globalThis.fetch=original;if(storage)Object.defineProperty(globalThis,'localStorage',storage);else delete globalThis.localStorage;}
|
||
});
|