spec/grape/app_spec.rb in grape-app-0.4.3 vs spec/grape/app_spec.rb in grape-app-0.5.0
- old
+ new
@@ -1,12 +1,17 @@
require 'spec_helper'
RSpec.describe Grape::App do
+ include Rack::Test::Methods
subject { described_class }
before { subject.init! File.expand_path('../../scenario', __FILE__) }
+ def app
+ subject.middleware
+ end
+
it 'should have an env' do
expect(subject.env).to be_instance_of(ActiveSupport::StringInquirer)
expect(subject.env).to eq("test")
end
@@ -28,19 +33,40 @@
expect(I18n.default_locale).to eq(:en)
expect(I18n.exception_handler).to be_instance_of(Proc)
end
it 'should read env specific initializers' do
- expect(subject.config).to eq(
- test_specific: true,
- raise_on_missing_translations: true,
- cors_allow_origins: ["example.com"],
+ expect(subject.config).to include(
+ :test_specific,
+ :raise_on_missing_translations,
+ :cors,
+ :middleware,
)
end
it 'should prepare middleware' do
expect(subject.middleware).to be_instance_of(Rack::Builder)
- expect(subject.middleware.send(:instance_variable_get, :@use).size).to eq(1)
+ expect(subject.middleware.send(:instance_variable_get, :@use).size).to eq(2)
expect(subject.middleware.send(:instance_variable_get, :@run)).to eq(subject)
+ end
+
+ it 'should apply middleware' do
+ header 'Origin', 'test.host'
+ get '/v1/ok'
+ expect(last_response).to be_ok
+ expect(last_response.body).to eq(%({"status":"OK"}))
+ expect(last_response.headers).to include(
+ "Access-Control-Allow-Origin" => "*",
+ "X-MyApp" => "true",
+ )
+
+ header 'Origin', 'test.host'
+ get '/v1/failing'
+ expect(last_response).to be_bad_request
+ expect(last_response.body).to eq(%({"error":"bad request"}))
+ expect(last_response.headers).to include(
+ "Access-Control-Allow-Origin" => "*",
+ "X-MyApp" => "true",
+ )
end
end