UNPKG

connect-vtexid

Version:

VTEX ID Authentication middleware for Connect

116 lines (87 loc) 3.14 kB
### Module dependencies. ### should = require 'should' authenticationHandler = require '../src/connect-vtexid' vtexidApiMock = require './mocks/vtexid-api.mock' describe '#authenticationHandler()', -> handlerOptions = verbosityLevel: 0 it 'should exist as a public function', (done) -> authenticationHandler.should.be.a.Function done() it 'should skip to next middleware if req.url is in white list', (done) -> req = url: '/admin/Scripts' middleware = authenticationHandler(handlerOptions) middleware req, {}, -> done() it 'should redirect to login page if VtexIdclientAutCookie was not found', (done) -> req = url: '/admin/checkout' headers: {} res = headers: {} setHeader: (header, value) -> this.headers[header] = value end: -> this.headers["Location"].should.be.equal '/admin/login/?ReturnUrl=/admin/checkout' this.statusCode.should.equal 302 done() middleware = authenticationHandler(handlerOptions) middleware req, res it 'should consult vtexid api if user is not cached', (done) -> req = url: '/admin/checkout' headers: cookie: 'VtexIdclientAutCookie=authUser' res = {} middleware = authenticationHandler(handlerOptions) middleware req, res, -> req.should.have.property 'vtex' req.vtex.should.have.property 'vtexIdData' req.vtex.vtexIdData.should.have.keys ['userId', 'user', 'userType', 'fromCache'] req.vtex.vtexIdData.user.should.be.equal 'vitor.mattos@vtex.com.br' req.vtex.vtexIdData.fromCache.should.be.equal false done() it 'should redirect to logout page if vtexid api\'s response was null',(done) -> req = url: '/admin/checkout' headers: cookie: 'VtexIdclientAutCookie=null' res = headers: {} setHeader: (header, value) -> this.headers[header] = value end: -> this.headers["Location"].should.be.equal '/admin/logout?previousUrl=/admin/checkout' this.statusCode.should.equal 302 done() middleware = authenticationHandler(handlerOptions) middleware req, res it 'should redirect to logout page if vtexid api responded an error', (done) -> req = url: '/admin/checkout' headers: cookie: 'VtexIdclientAutCookie=error' res = headers: {} setHeader: (header, value) -> this.headers[header] = value end: -> this.headers["Location"].should.be.equal '/admin/logout?previousUrl=/admin/checkout' this.statusCode.should.equal 302 done() middleware = authenticationHandler(handlerOptions) middleware req, res it 'should return user from cache', (done) -> req = url: '/admin/checkout' headers: cookie: 'VtexIdclientAutCookie=authUser' res = {} middleware = authenticationHandler(handlerOptions) middleware req, res, -> middleware req, res, -> req.vtex.vtexIdData.should.have.keys ['userId', 'user', 'userType', 'fromCache'] req.vtex.vtexIdData.fromCache.should.be.equal true done()