1 | 'use strict';
|
2 |
|
3 | var expect = require('chai').expect;
|
4 | var winston = require('winston');
|
5 | var cache = require('../lib/cache');
|
6 | var errors = require('@leisurelink/http-equiv-errors');
|
7 |
|
8 | var LocalAuthority = require('../lib/local-authority');
|
9 |
|
10 | describe('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 | });
|