# frozen_string_literal: true

require 'spec_helper'
require 'warden/test/helpers'

RSpec.describe API, type: :request do
  include Warden::Test::Helpers

  let(:user) { build(:user) }

  after { Warden.test_reset! }

  it 'should return the current user' do
    login_as user, scope: :user

    get '/me'

    response.body.should eq(user.to_json)
  end

  it 'should return an error if not logged in' do
    login_as nil, scope: :user

    get '/me'

    response.code.should eq('401')
  end

  it 'should return true if logged in' do
    login_as user, scope: :user

    get '/authorized'

    response.body.should eq('true')
  end

  it 'should return false if logged out' do
    login_as nil, scope: :user

    get '/authorized'

    response.body.should eq('false')
  end

  it 'should log in the user' do
    User.stub :find_for_database_authentication do
      user
    end
    post '/signin', user: { email: user.email, password: user.password }

    response.code.should eq('201')
  end
end