X-Git-Url: http://git.squeep.com/?p=squeep-indie-auther;a=blobdiff_plain;f=test%2Fsrc%2Fdb%2Fintegration.js;fp=test%2Fsrc%2Fdb%2Fintegration.js;h=d866af6678cf7bafc79b9bc1f8f6a912ca334ad4;hp=7634b30c748a05726332457baf098e9cc7749bb6;hb=726cd980f0ed5588cfe8cbb2d994d5e4aef6e292;hpb=3c145bc590577c738df4d279744f3e2f9a250294 diff --git a/test/src/db/integration.js b/test/src/db/integration.js index 7634b30..d866af6 100644 --- a/test/src/db/integration.js +++ b/test/src/db/integration.js @@ -405,6 +405,65 @@ describe('Database Integration', function () { }); }); // Token + describe('Ticket Token Tracking', function () { + let redeemedData; + beforeEach(function () { + redeemedData = { + subject: 'https://entity.example.com/', + resource: 'https://blog.example.com/secret_entry', + iss: 'https://idp.example.com/', + ticket: 'xxxTICKETxxx', + token: 'xxxTOKENxxx', + }; + }); + step('stores redeemed ticket data', async function () { + await db.context(async (dbCtx) => { + await db.ticketRedeemed(dbCtx, redeemedData); + }); + }); + step('gets one pending-publish ticket tokens', async function () { + await db.context(async (dbCtx) => { + const unpublished = await db.ticketTokenGetUnpublished(dbCtx); + assert.strictEqual(unpublished.length, 1); + const record = unpublished[0]; + assert(record.created); + assert(!record.published); + assert(record.ticketId); + delete record.created; + delete record.published; + delete record.ticketId; + assert.deepStrictEqual(record, redeemedData); + }); + }); + step('stores published ticket token data', async function () { + await db.context(async (dbCtx) => { + await db.ticketTokenPublished(dbCtx, redeemedData); + }); + }); + step('gets no pending-publish ticket tokens', async function () { + await db.context(async (dbCtx) => { + const unpublished = await db.ticketTokenGetUnpublished(dbCtx); + assert.strictEqual(unpublished.length, 0); + }); + }); + }); // Ticket Token Tracking + + describe('Bookkeeping', function () { + let event, date; + beforeEach(function () { + event = 'integrationTestEvent'; + date = new Date('Fri Dec 22 03:27 UTC 2023'); + }); + step('inserts event', async function () { + await db.context(async (dbCtx) => { + await db.almanacUpsert(dbCtx, event, date); + const result = await db.almanacGetAll(dbCtx); + const [storedEvent] = result.filter((e) => e.event === event); + assert.deepStrictEqual(storedEvent.date, date); + }); + }); + }); // Bookkeeping + describe('Refreshable Token', function () { let created, codeId, scopes, clientId, profileData, lifespanSeconds, refreshLifespanSeconds, removeScopes; beforeEach(function () {