app = require './project/server'
users = require './fixtures/users'
requests = require('./helpers/requests')(app)
request = require 'request'
require 'should'

describe 'Login', ->

  body = null

  before (done) ->
    #    app.listen app.settings.port
    users.clear ->
      users.create 'guest', done

  describe 'form', ->

    it 'should have email and password fields', (done) ->
      request requests.loginForm, (err, res, body) ->
        body.should.include 'Email'
        body.should.include 'Password'
        done()

  describe 'with valid credentials', ->

    before (done) ->
      request requests.login('guest'), (err, res, _body) ->
        body = _body
        done()

    it 'should greet the user', (done) ->
      body.should.include users.created['guest'].name.first
      done()

    it 'should flash a success message', (done) ->
      body.should.include 'Logged in successfully!'
      done()

  describe 'without credentials', ->

    it 'should flash an error', (done) ->
      request requests.login(), (err, res, body) ->
        body.should.include 'Missing credentials'
        done()

  describe 'with an unknown user', ->

    it 'should flash an error', (done) ->
      request requests.login('harry@wag.com', '123456'), (err, res, body) ->
        body.should.include 'Unknown user'
        done()

  describe 'with an invalid password', ->

    it 'should flash an error', (done) ->
      request requests.login(users.created['guest'].email, 'acbdefg'), (err, res, body) ->
        body.should.include 'Invalid password'
        done()
