Sha256: 62453f090896a68d65208ed42c55baab03b7349599d4542424eef74426eee423

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

ENV['RACK_ENV'] = 'test'

require 'rack/test'
require 'alephant/broker/app/rack'

RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end

describe 'Broker rack app tests' do

  before {
    @lookup_table = double('Alephant::Lookup::LookupTable')
    Alephant::Lookup.stub(:create).and_return(@lookup_table)

    Alephant::Cache.any_instance.stub(:initialize)
    Alephant::Cache.any_instance.stub(:get).and_return('Test response')
  }

  def app
    Alephant::Broker::RackApplication.new({
      :lookup_table_name  => 'test_table',
      :bucket_id          => 'test_bucket',
      :path               => 'bucket_path'
    })
  end

  it "Tests status page" do
    get '/status'
    expect(last_response).to be_ok
    expect(last_response.body).to eq('ok')
  end

  it "Tests not found page" do
    get '/some/non-existent-page'
    expect(last_response.status).to eq(404)
    expect(last_response.body).to eq('Not found')
  end

  it "Test asset data is returned" do
    allow(@lookup_table).to receive(:read).and_return('some_location')

    get '/component/test_component'
    expect(last_response).to be_ok
    expect(last_response.body).to eq('Test response')
  end

  it "Tests query string parameters are passed correctly to lookup" do
    variant = {:variant => 'test_variant'}
    allow(@lookup_table).to receive(:read).with(variant).and_return('some_location')

    get '/component/test_component?variant=test_variant'
    expect(last_response).to be_ok
    expect(last_response.body).to eq('Test response')
  end

  it "Tests 404 when lookup doesn't return a valid location" do
    allow(@lookup_table).to receive(:read).and_return(nil)

    get '/component/test_component'
    expect(last_response.status).to eq(404)

  end

  it "Tests 500 when exception is raised in application" do
    allow(@lookup_table).to receive(:read).and_raise(Exception)

    get '/component/test_component'
    expect(last_response.status).to eq(500)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alephant-broker-0.0.3 spec/rack_spec.rb