diff --git a/features/step_definitions/repository_steps.rb b/features/step_definitions/repository_steps.rb index 45975c8..de1c921 100644 --- a/features/step_definitions/repository_steps.rb +++ b/features/step_definitions/repository_steps.rb @@ -168,18 +168,14 @@ end When(/^I push some commits to the repository$/) do request = FactoryGirl.build(:gitlab_webhook_request) - request.headers.each do |k, v| - header k, v - end - @response = post repository_notify_push_path(id: @repository.id), request.params + set_headers(request.headers) + page.driver.post(repository_notify_push_path(id: @repository.id), request.params) end When(/^I push some commits to an invalid repository$/) do request = FactoryGirl.build(:gitlab_webhook_request) - request.headers.each do |k, v| - header k, v - end - @response = post repository_notify_push_path(id: 0), request.params + set_headers(request.headers) + page.driver.post(repository_notify_push_path(id: 0), request.params) end Then(/^I should see the sample metric's name$/) do @@ -283,5 +279,5 @@ Then(/^Mezuro should process the repository again$/) do end Then(/^I should get a not found error$/) do - expect(@response.status).to eq(404) + expect(page.driver.status_code).to eq(404) end diff --git a/features/support/env.rb b/features/support/env.rb index 5ed813b..d4a5049 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -20,8 +20,11 @@ end # instead of editing this one. Cucumber will automatically load all features/**/*.rb # files. +require 'warden' require 'cucumber/rails' require 'capybara/poltergeist' +require_relative 'header' + #Capybara.default_driver = :poltergeist Capybara.javascript_driver = :poltergeist Capybara.default_max_wait_time = 20 # default is 2 seconds @@ -81,5 +84,6 @@ Cucumber::Rails::Database.javascript_strategy = :truncation # KalibroClient hooks require 'kalibro_client/kalibro_cucumber_helpers/hooks.rb' -# Warden test helpers so the user authentication can be as fast as possible -include Warden::Test::Helpers +Warden.test_mode! +World(Warden::Test::Helpers, HeaderUtils) + diff --git a/features/support/header.rb b/features/support/header.rb new file mode 100644 index 0000000..08e3b5a --- /dev/null +++ b/features/support/header.rb @@ -0,0 +1,15 @@ +module HeaderUtils + def set_header(key, value) + header_method = nil + if defined?(page) && ! page.driver.nil? + header_method = [:add_header, :header].find(&page.driver.method(:respond_to?)) + end + + raise StandardError.new("No header setting method available in current driver: #{page.driver}") unless header_method + page.driver.send(header_method, key, value) + end + + def set_headers(headers) + headers.each(&method(:set_header)) + end +end diff --git a/spec/controllers/repositories_controller_spec.rb b/spec/controllers/repositories_controller_spec.rb index 277d320..d4e022d 100644 --- a/spec/controllers/repositories_controller_spec.rb +++ b/spec/controllers/repositories_controller_spec.rb @@ -475,10 +475,7 @@ describe RepositoriesController, :type => :controller do let(:webhook_request) { FactoryGirl.build(:gitlab_webhook_request) } def post_push - webhook_request.headers.each do |k, v| - @request.headers[k] = v - end - + @request.headers.merge!(webhook_request.headers) post :notify_push, {id: repository.id, format: :json}.merge(webhook_request.params) end -- libgit2 0.21.2