diff options
author | Robert Speicher <robert@gitlab.com> | 2018-03-05 19:18:51 +0300 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2018-03-05 19:18:51 +0300 |
commit | 7c7057590af9ddb6df57afe2ce3dfd4d83d00351 (patch) | |
tree | 80bf40ac8f4908e5a3beec26b82e05a5be61fa7b /spec/lib | |
parent | fc9955ce8da200e58fe8fcfef68f02344bfd8390 (diff) | |
parent | bb4fcb7809aa9d14a60e5c90f11f07fac8f584a8 (diff) |
Merge branch '42572-release-controller' into 'master'
Try not to hold env and release the controller after the request.
See merge request gitlab-org/gitlab-ce!16847
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/middleware/read_only_spec.rb | 25 | ||||
-rw-r--r-- | spec/lib/gitlab/middleware/release_env_spec.rb | 16 |
2 files changed, 37 insertions, 4 deletions
diff --git a/spec/lib/gitlab/middleware/read_only_spec.rb b/spec/lib/gitlab/middleware/read_only_spec.rb index 07ba11b93a3..39ec2f37a83 100644 --- a/spec/lib/gitlab/middleware/read_only_spec.rb +++ b/spec/lib/gitlab/middleware/read_only_spec.rb @@ -11,15 +11,17 @@ describe Gitlab::Middleware::ReadOnly do RSpec::Matchers.define :disallow_request do match do |middleware| - flash = middleware.send(:rack_flash) - flash['alert'] && flash['alert'].include?('You cannot do writing operations') + alert = middleware.env['rack.session'].to_hash + .dig('flash', 'flashes', 'alert') + + alert&.include?('You cannot perform write operations') end end RSpec::Matchers.define :disallow_request_in_json do match do |response| json_response = JSON.parse(response.body) - response.body.include?('You cannot do writing operations') && json_response.key?('message') + response.body.include?('You cannot perform write operations') && json_response.key?('message') end end @@ -34,10 +36,25 @@ describe Gitlab::Middleware::ReadOnly do rack.to_app end - subject { described_class.new(fake_app) } + let(:observe_env) do + Module.new do + attr_reader :env + + def call(env) + @env = env + super + end + end + end let(:request) { Rack::MockRequest.new(rack_stack) } + subject do + described_class.new(fake_app).tap do |app| + app.extend(observe_env) + end + end + context 'normal requests to a read-only Gitlab instance' do let(:fake_app) { lambda { |env| [200, { 'Content-Type' => 'text/plain' }, ['OK']] } } diff --git a/spec/lib/gitlab/middleware/release_env_spec.rb b/spec/lib/gitlab/middleware/release_env_spec.rb new file mode 100644 index 00000000000..5e3aa877409 --- /dev/null +++ b/spec/lib/gitlab/middleware/release_env_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe Gitlab::Middleware::ReleaseEnv do + let(:inner_app) { double(:app, call: 'yay') } + let(:app) { described_class.new(inner_app) } + let(:env) { { 'action_controller.instance' => 'something' } } + + describe '#call' do + it 'calls the app and clears the env' do + result = app.call(env) + + expect(result).to eq('yay') + expect(env).to be_empty + end + end +end |