###
Module dependencies
###
Concierge = require '../../src/connect-concierge'

concierge = new Concierge
checkHosts = concierge.checkHosts.bind(concierge)()

describe 'checkHosts middleware', ->

  it 'should exist as a public function', (done) ->
    checkHosts.bind(null).should.be.a.Function
    done()

  it 'should skip to next middleware if path is /meta/whoami', (done) ->
    req =
      url: '/meta/whoami'

    checkHosts req, {}, ->
      done()

  it 'should create a "vtex" object in the request', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers:
        host: 'basedevmkp.vtexcommercebeta.com.br'

    checkHosts req, {}, ->
      req.vtex.should.exist
      done()

  it 'should create a "hostParts" object in request.vtex', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers:
        host: 'basedevmkp.vtexcommercebeta.com.br'

    checkHosts req, {}, ->
      req.vtex.hostParts.should.exist
      req.vtex.hostParts[0].should.be.equal 'basedevmkp.vtexcommercebeta.com.br'
      req.vtex.hostParts[1].should.be.equal 'basedevmkp'
      req.vtex.hostParts[2].should.be.equal 'commercebeta'
      done()

  it 'should accept VTEX IO myvtex hosts', (done) ->
    req =
      url: '/admin/jonny-quest'
      headers:
        host: 'basedevmkp.myvtex.com'

    checkHosts req, {}, ->
      req.vtex.hostParts.should.exist
      req.vtex.hostParts[0].should.be.equal 'basedevmkp.myvtex.com'
      req.vtex.hostParts[1].should.be.equal 'basedevmkp'
      req.vtex.hostParts[2].should.be.equal 'stable'
      done()
