@quarks/quarks-iam
Version:
A modern authorization server built to authenticate your users and protect your APIs
103 lines (67 loc) • 2.73 kB
text/coffeescript
# Test dependencies
_ = require 'lodash'
nock = require 'nock'
chai = require 'chai'
sinon = require 'sinon'
sinonChai = require 'sinon-chai'
expect = chai.expect
# Assertions
chai.use sinonChai
chai.should()
# Code under test
OAuthStrategy = require '../../../../protocols/OAuth'
providers = require '../../../../providers'
describe 'OAuthStrategy temporaryCredentials', ->
{err,req,res,headers,provider,client} = {}
describe 'with defaults and valid parameters', ->
beforeEach (done) ->
provider = _.clone providers.oauthtest, true
client =
oauth_consumer_key: '1q2w3e4r'
oauth_consumer_secret: 's3cr3t'
verifier = () ->
reply = 'oauth_token=hdk48Djdsa&oauth_token_secret=xyz4992k83j47x0b&oauth_callback_confirmed=true'
scope = nock(provider.url)
.post('/credentials')
.reply(200, reply, {
'content-type': 'application/x-www-form-urlencoded'
})
strategy = new OAuthStrategy provider, client, verifier
req = strategy.temporaryCredentials (error, response) ->
err = error
res = response
done()
headers = req.req._headers
it 'should use the specified endpoint', ->
req.url.should.equal provider.endpoints.credentials.url
it 'should use the "POST" method', ->
req.method.should.equal 'POST'
it 'should set the "Authorization" header', ->
expect(headers.authorization).to.not.be.undefined
it 'should use the "OAuth" scheme', ->
headers.authorization.should.contain 'OAuth'
# it 'should set the realm'
it 'should set the oauth_consumer_key', ->
headers.authorization.should.contain(
'oauth_consumer_key="' + client.oauth_consumer_key + '"'
)
it 'should set the oauth_signature_method', ->
headers.authorization.should.contain(
'oauth_signature_method="' + provider.oauth_signature_method + '"'
)
it 'should set the oauth_callback', ->
headers.authorization.should.contain(
'oauth_callback="' + encodeURIComponent(provider.oauth_callback) + '"'
)
it 'should set the oauth_signature', ->
headers.authorization.should.contain(
'oauth_signature="' + encodeURIComponent(client.oauth_consumer_secret + '&') + '"'
)
it 'should set the accept header', ->
headers.accept.should.contain 'application/x-www-form-urlencoded'
it 'should set the user agent', ->
headers['user-agent'].should.contain 'Anvil Connect/'
it 'should provide a null error', ->
expect(err).to.null
it 'should provide credentials', ->
res.oauth_token.should.equal 'hdk48Djdsa'