Preserve subscriptions on request failure and isolate account state
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
import test,{after} from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {mkdtempSync,rmSync,statSync} from 'node:fs';
|
||||
import {tmpdir} from 'node:os';
|
||||
import {join} from 'node:path';
|
||||
const dir=mkdtempSync(join(tmpdir(),'ihaleist-subscriptions-'));process.env.IHALEIST_USER_DATA_DIR=dir;
|
||||
const subscriptions=await import('../server/notify-store.mjs');
|
||||
after(()=>rmSync(dir,{recursive:true,force:true}));
|
||||
test('subscription writes validate criteria and deletion is account scoped in the configured volume',()=>{
|
||||
for(const criteria of [[],{konular:'lab'},{konular:[{}]},{kurumlar:['']},{sehir:[]}])assert.throws(()=>subscriptions.subscribe('owner',criteria),/Geçersiz/);
|
||||
assert.deepEqual(subscriptions.list('owner'),[]);
|
||||
const rows=subscriptions.subscribe('owner',{konular:['Laboratuvar'],sehir:'Ankara'});
|
||||
assert.equal(rows.length,1);assert.deepEqual(rows[0].konular,['Laboratuvar']);
|
||||
assert.deepEqual(subscriptions.list('other'),[]);assert.equal(subscriptions.remove(rows[0].id,'other'),false);
|
||||
assert.equal(subscriptions.list('owner').length,1);
|
||||
assert.equal(statSync(join(dir,'notify.sqlite')).mode&0o777,0o600);
|
||||
assert.equal(subscriptions.remove(rows[0].id,'owner'),true);assert.deepEqual(subscriptions.list('owner'),[]);
|
||||
});
|
||||
Reference in New Issue
Block a user