UNPKG

2.61 kBJavaScriptView Raw
1'use strict';
2
3var expect = require('chai').expect;
4var winston = require('winston');
5var cache = require('../lib/cache');
6var errors = require('@leisurelink/http-equiv-errors');
7
8var LocalAuthority = require('../lib/local-authority');
9
10describe('LocalAuthority', function(){
11 var authority, mockAuthentic, mockAuthScope, keyId;
12 var endpointClaims, context;
13
14 beforeEach(function(){
15 cache.disable();
16 mockAuthScope = { verify: function(_, cb) { cb(null, context); } };
17
18 endpointClaims = { response: {statusCode: 200}, token: {result:{}} };
19 mockAuthentic = {
20 getEndpointClaims: function(_, __, cb) {
21 cb(null, endpointClaims.response, endpointClaims.token);
22 }
23 };
24 keyId = 'some-endpoint/some-key';
25 context = {verified: true, isExpired:false};
26
27 authority = LocalAuthority(mockAuthScope, mockAuthentic, winston, keyId, 0);
28 });
29
30 describe('#create', function(){
31 it('should return verified auth context', function(){
32 return authority.create().then(function(val){
33 expect(val).to.eql(context);
34 });
35 });
36 it('should return service unavailable error when endpoint response has bad status code', function(){
37 endpointClaims.response.statusCode = 500;
38 return authority.create().then(function(){
39 throw new Error('Expected failure, got success');
40 }).catch(errors.ServiceUnavailableError, function(err){
41 expect(err).to.be.ok;
42 });
43 });
44 it('should return service unavailable error when endpoint claims is missing a token', function(){
45 endpointClaims.token = undefined;
46 return authority.create().then(function(){
47 throw new Error('Expected failure, got success');
48 }).catch(errors.ServiceUnavailableError, function(err){
49 expect(err).to.be.ok;
50 });
51 });
52 it('should return service unavailable error when endpoint claims is missing a token result', function(){
53 endpointClaims.token.result = undefined;
54 return authority.create().then(function(){
55 throw new Error('Expected failure, got success');
56 }).catch(errors.ServiceUnavailableError, function(err){
57 expect(err).to.be.ok;
58 });
59 });
60 it('should return undefined when context is unverified', function(){
61 context.verified = false;
62 return authority.create().then(function(val){
63 expect(val).to.be.undefined;
64 });
65 });
66 it('should return undefined when context is expired', function(){
67 context.isExpired = true;
68 return authority.create().then(function(val){
69 expect(val).to.be.undefined;
70 });
71 });
72 });
73});