+ describe('queuedTicketProcessor', function () {
+ let channel, content;
+ const message = () => ({
+ content: Buffer.from(JSON.stringify(content)),
+ });
+ beforeEach(function () {
+ channel = {
+ ack: sinon.stub(),
+ };
+ content = {
+ ticket: 'XXXticketXXX',
+ resource: 'https://blog.example.com/',
+ subject: 'https://otheruser.exmaple.com/',
+ iss: 'https://ia.example.com/',
+ epochMs: Date.now(),
+ };
+ });
+ it('redeems a ticket', async function () {
+ await manager.queuedTicketProcessor(channel, message());
+ assert(manager.queuePublisher.publish.called);
+ assert(channel.ack.called);
+ });
+ it('redeems a ticket, missing issuer', async function () {
+ delete content.iss;
+ await manager.queuedTicketProcessor(channel, message());
+ assert(manager.queuePublisher.publish.called);
+ assert(channel.ack.called);
+ });
+ it('covers bad message', async function () {
+ await manager.queuedTicketProcessor(channel, { content: 'diddly' });
+ assert(channel.ack.called);
+ });
+ it('covers bad issuer', async function () {
+ content.iss = 'not a url';
+ await manager.queuedTicketProcessor(channel, message());
+ assert(manager.queuePublisher.publish.called);
+ });
+ it('covers bad resource', async function () {
+ content.resource = 'not a url';
+ await manager.queuedTicketProcessor(channel, message());
+ assert(manager.communication.redeemTicket.notCalled);
+ assert(manager.queuePublisher.publish.notCalled);
+ assert(channel.ack.called);
+ });
+ it('covers failed redemption', async function () {
+ const expectedException = new Error('oh no');
+ manager.communication.redeemTicket.rejects(expectedException);
+ assert.rejects(() => manager.queuedTicketProcessor(channel, message()), expectedException);
+ });
+ it('covers failed publish', async function () {
+ const expectedException = new Error('oh no');
+ manager.queuePublisher.publish.rejects(expectedException);
+ assert.rejects(() => manager.queuedTicketProcessor(channel, message()), expectedException);
+ });
+ }); // queuedTicketProcessor
+