X-Git-Url: http://git.squeep.com/?p=squeep-indie-auther;a=blobdiff_plain;f=test%2Fsrc%2Fdb%2Fsqlite.js;fp=test%2Fsrc%2Fdb%2Fsqlite.js;h=e79e75fa421db1526db49f523de99bd9d18428ce;hp=f6935943eb1f088174185c15aac0ea5f9e373441;hb=726cd980f0ed5588cfe8cbb2d994d5e4aef6e292;hpb=3c145bc590577c738df4d279744f3e2f9a250294 diff --git a/test/src/db/sqlite.js b/test/src/db/sqlite.js index f693594..e79e75f 100644 --- a/test/src/db/sqlite.js +++ b/test/src/db/sqlite.js @@ -216,6 +216,32 @@ describe('DatabaseSQLite', function () { }); }); // almanacGetAll + describe('almanacUpsert', function () { + let event, date, dbResult; + beforeEach(function () { + event = 'test_event'; + date = new Date('Fri Dec 22 03:27 UTC 2023') + sinon.stub(db.statement.almanacUpsert, 'run'); + dbResult = { + changes: 1, + lastInsertRowid: undefined, + }; + }); + it('success', function () { + db.statement.almanacUpsert.run.returns(dbResult); + db.almanacUpsert(dbCtx, event, date); + }); + it('success with default date', function () { + db.statement.almanacUpsert.run.returns(dbResult); + db.almanacUpsert(dbCtx, event); + }); + it('failure', function () { + dbResult.changes = 0; + db.statement.almanacUpsert.run.returns(dbResult); + assert.throws(() => db.almanacUpsert(dbCtx, { event, date }), DBErrors.UnexpectedResult); + }); + }); // almanacUpsert + describe('authenticationGet', function () { let identifier, credential; beforeEach(function () { @@ -915,4 +941,120 @@ describe('DatabaseSQLite', function () { }); }); // tokensGetByIdentifier + describe('ticketRedeemed', function () { + let redeemedData, dbResult; + beforeEach(function () { + redeemedData = { + resource: 'https://resource.example.com/', + subject: 'https://subject.example.com/', + iss: 'https://idp.example.com/', + ticket: 'xxxTICKETxxx', + token: 'xxxTOKENxxx', + }; + sinon.stub(db.statement.ticketRedeemed, 'run'); + dbResult = { + changes: 1, + lastInsertRowid: undefined, + }; + }); + it('success', function () { + db.statement.ticketRedeemed.run.returns(dbResult); + db.ticketRedeemed(dbCtx, redeemedData); + }); + it('failure', function () { + dbResult.changes = 0; + db.statement.ticketRedeemed.run.returns(dbResult); + assert.throws(() => db.ticketRedeemed(dbCtx, redeemedData), DBErrors.UnexpectedResult); + }); + }); // ticketRedeemed + + describe('ticketTokenPublished', function () { + let redeemedData, dbResult; + beforeEach(function () { + redeemedData = { + resource: 'https://resource.example.com/', + subject: 'https://subject.example.com/', + iss: 'https://idp.example.com/', + ticket: 'xxxTICKETxxx', + token: 'xxxTOKENxxx', + }; + sinon.stub(db.statement.ticketTokenPublished, 'run'); + sinon.stub(db.statement.almanacUpsert, 'run'); + dbResult = { + changes: 1, + lastInsertRowid: undefined, + }; + }); + it('success', function () { + db.statement.ticketTokenPublished.run.returns(dbResult); + db.statement.almanacUpsert.run.returns(dbResult); + db.ticketTokenPublished(dbCtx, redeemedData); + assert(db.statement.ticketTokenPublished.run.called); + assert(db.statement.almanacUpsert.run.called); + }); + it('failure', function () { + dbResult.changes = 0; + db.statement.ticketTokenPublished.run.returns(dbResult); + assert.throws(() => db.ticketTokenPublished(dbCtx, redeemedData), DBErrors.UnexpectedResult); + }); + it('failure of almanac', function () { + const dbResultAlmanac = { + ...dbResult, + changes: 0, + } + db.statement.ticketTokenPublished.run.returns(dbResult); + db.statement.almanacUpsert.run.returns(dbResultAlmanac); + assert.throws(() => db.ticketTokenPublished(dbCtx, redeemedData), DBErrors.UnexpectedResult); + }); + }); // ticketTokenPublished + + describe('ticketTokenGetUnpublished', function () { + beforeEach(function () { + sinon.stub(db.statement.ticketTokenGetUnpublished, 'all'); + }); + it('success', function () { + db.statement.ticketTokenGetUnpublished.all.returns([]); + const result = db.ticketTokenGetUnpublished(); + assert.deepStrictEqual(result, []); + }); + it('failure', function () { + db.statement.ticketTokenGetUnpublished.all.throws(expectedException); + assert.throws(() => db.ticketTokenGetUnpublished(), expectedException); + }); + }); // ticketTokenGetUnpublished + + describe('_redeemedTicketToNative', function () { + let redeemedData; + beforeEach(function () { + redeemedData = { + resource: 'https://resource.example.com/', + subject: 'https://subject.example.com/', + iss: 'https://idp.example.com/', + ticket: 'xxxTICKETxxx', + token: 'xxxTOKENxxx', + created: 1701970607n, + published: 1701970670n, + }; + }); + it('covers', function () { + const expected = { + ...redeemedData, + created: new Date('2023-12-07T17:36:47.000Z'), + published: new Date('2023-12-07T17:37:50.000Z'), + }; + const result = DB._redeemedTicketToNative(redeemedData); + assert.deepStrictEqual(result, expected); + }); + it('covers no published', function () { + redeemedData.published = null; + const expected = { + ...redeemedData, + created: new Date('2023-12-07T17:36:47.000Z'), + published: null, + }; + const result = DB._redeemedTicketToNative(redeemedData); + assert.deepStrictEqual(result, expected); + }); + }); // _redeemedTicketToNative + }); // DatabaseSQLite