connect-vtexid
Version:
VTEX ID Authentication middleware for Connect
116 lines (87 loc) • 3.14 kB
text/coffeescript
###
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()