##// END OF EJS Templates
Merged r9390 from trunk....
Merged r9390 from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.4-stable@9400 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8972:df89c24e37af
r9266:8fefb7c05bb9
Show More
test_helper.rb
485 lines | 17.4 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Fixes subversion tests not running on win32....
r5055 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
v0.2.0...
r5 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r6003 #
Jean-Philippe Lang
v0.2.0...
r5 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r6003 #
Jean-Philippe Lang
v0.2.0...
r5 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Eric Davis
Force the test RAILS_ENV to help prevent purging data when mistyping. #4572...
r3726 ENV["RAILS_ENV"] = "test"
Jean-Philippe Lang
Initial commit...
r2 require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'
Toshi MARUYAMA
Ruby 1.9: fix tests error due to require path at test/test_helper.rb...
r7682 require Rails.root.join('test', 'mocks', 'open_id_authentication_mock.rb').to_s
Jean-Philippe Lang
Initial commit...
r2
Eric Davis
Moved object daddy helpers to their own module....
r2824 require File.expand_path(File.dirname(__FILE__) + '/object_daddy_helpers')
include ObjectDaddyHelpers
Eric Davis
Updated some object_daddy exemplars for the Models....
r2823
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class ActiveSupport::TestCase
Jean-Philippe Lang
Initial commit...
r2 # Transactional fixtures accelerate your tests by wrapping each test method
# in a transaction that's rolled back on completion. This ensures that the
# test database remains unchanged so your fixtures don't have to be reloaded
# between every test method. Fewer database queries means faster tests.
#
# Read Mike Clark's excellent walkthrough at
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
#
# Every Active Record database supports transactions except MyISAM tables
# in MySQL. Turn off transactional fixtures in this case; however, if you
# don't care one way or the other, switching from MyISAM to InnoDB tables
# is recommended.
self.use_transactional_fixtures = true
# Instantiated fixtures are slow, but give you @david where otherwise you
# would need people(:david). If you don't want to migrate your existing
# test cases which use the @david style and don't mind the speed hit (each
# instantiated fixtures translates to a database query per test method),
# then set this back to true.
self.use_instantiated_fixtures = false
# Add more helper methods to be used by all tests here...
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
v0.2.0...
r5 def log_user(login, password)
Jean-Philippe Lang
Version sharing (#465) + optional inclusion of subprojects in the roadmap view (#2666)....
r3009 User.anonymous
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 get "/login"
Jean-Philippe Lang
0.3 unstable...
r10 assert_equal nil, session[:user_id]
Jean-Philippe Lang
v0.2.0...
r5 assert_response :success
assert_template "account/login"
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 post "/login", :username => login, :password => password
Jean-Philippe Lang
0.3 unstable...
r10 assert_equal login, User.find(session[:user_id]).login
Jean-Philippe Lang
v0.2.0...
r5 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Renames uploaded_test_file helper....
r2795 def uploaded_test_file(name, mime)
Toshi MARUYAMA
code layout clean up uploaded_test_file of test/test_helper.rb...
r7735 ActionController::TestUploadedFile.new(
ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime, true)
Jean-Philippe Lang
Merged IssuesController change_status and add_note actions....
r1030 end
Eric Davis
Refactor: extract test method...
r3659
Jean-Philippe Lang
Test cleanup....
r8355 def credentials(user, password=nil)
Jean-Philippe Lang
Test cleanup....
r8357 {:authorization => ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)}
Jean-Philippe Lang
Test cleanup....
r8355 end
Eric Davis
Refactor: extract test method...
r3659 # Mock out a file
Eric Davis
Fix the mock_file test helper....
r3896 def self.mock_file
Eric Davis
Refactor: extract test method...
r3659 file = 'a_file.png'
file.stubs(:size).returns(32)
file.stubs(:original_filename).returns('a_file.png')
file.stubs(:content_type).returns('image/png')
file.stubs(:read).returns(false)
file
end
Eric Davis
Fix the mock_file test helper....
r3896
def mock_file
self.class.mock_file
end
Toshi MARUYAMA
fix inconsistent image filename extensions (#9638)...
r7771 def mock_file_with_options(options={})
file = ''
file.stubs(:size).returns(32)
original_filename = options[:original_filename] || nil
file.stubs(:original_filename).returns(original_filename)
content_type = options[:content_type] || nil
file.stubs(:content_type).returns(content_type)
file.stubs(:read).returns(false)
file
end
Jean-Philippe Lang
File viewer for attached text files....
r1506 # Use a temporary directory for attachment related tests
def set_tmp_attachments_directory
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root in test/test_helper.rb....
r5961 Dir.mkdir "#{Rails.root}/tmp/test" unless File.directory?("#{Rails.root}/tmp/test")
unless File.directory?("#{Rails.root}/tmp/test/attachments")
Dir.mkdir "#{Rails.root}/tmp/test/attachments"
end
Attachment.storage_path = "#{Rails.root}/tmp/test/attachments"
Jean-Philippe Lang
File viewer for attached text files....
r1506 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root in test/test_helper.rb....
r5961
Jean-Philippe Lang
Make sure that tests restore the attachments path to the tmp dir so that fixture files don't get deleted....
r8128 def set_fixtures_attachments_directory
Attachment.storage_path = "#{Rails.root}/test/fixtures/files"
end
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 def with_settings(options, &block)
Jean-Philippe Lang
Sort the issue list by author/assignee according to user display format (#9669)....
r7818 saved_settings = options.keys.inject({}) {|h, k| h[k] = Setting[k].is_a?(Symbol) ? Setting[k] : Setting[k].dup; h}
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 options.each {|k, v| Setting[k] = v}
yield
Jean-Philippe Lang
Restore settings even if a test failure occurs....
r5107 ensure
Jean-Philippe Lang
Sort the issue list by author/assignee according to user display format (#9669)....
r7818 saved_settings.each {|k, v| Setting[k] = v} if saved_settings
Jean-Philippe Lang
Limit the size of repository files displayed inline too....
r2442 end
Eric Davis
Added some shoulda macros for testing....
r3155
Eric Davis
Small test refactoring, extract method....
r3837 def change_user_password(login, new_password)
user = User.first(:conditions => {:login => login})
user.password, user.password_confirmation = new_password, new_password
user.save!
end
Eric Davis
Added some tests for the LDAP authentication....
r3324 def self.ldap_configured?
@test_ldap = Net::LDAP.new(:host => '127.0.0.1', :port => 389)
return @test_ldap.bind
Jean-Philippe Lang
Fixed: unit tests broken by r3438 (#4860)....
r3328 rescue Exception => e
# LDAP is not listening
return nil
Eric Davis
Added some tests for the LDAP authentication....
r3324 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 # Returns the path to the test +vendor+ repository
def self.repository_path(vendor)
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983 Rails.root.join("tmp/test/#{vendor.downcase}_repository").to_s
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Toshi MARUYAMA
Fix typo in test/test_helper.rb....
r5062 # Returns the url of the subversion test repository
Jean-Philippe Lang
Fixes subversion tests not running on win32....
r5055 def self.subversion_repository_url
path = repository_path('subversion')
path = '/' + path unless path.starts_with?('/')
"file://#{path}"
end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Jean-Philippe Lang
Adds test helpers for test repositories....
r3606 # Returns true if the +vendor+ test repository is configured
def self.repository_configured?(vendor)
File.directory?(repository_path(vendor))
end
Toshi MARUYAMA
replace RAILS_ROOT to Rails.root at test/test_helper.rb....
r5983
Toshi MARUYAMA
Rails3: test: scm: move "repository_path_hash" method in repositories routing test to test_helper.rb for common use...
r8803 def repository_path_hash(arr)
hs = {}
hs[:path] = arr.join("/")
hs[:param] = arr
hs
end
Jean-Philippe Lang
Refactor: merged error rendering methods....
r4172 def assert_error_tag(options={})
Jean-Philippe Lang
Fixed: Missing template wiki/update.erb error introduced in r4272 (#6987)....
r4315 assert_tag({:attributes => { :id => 'errorExplanation' }}.merge(options))
Jean-Philippe Lang
Refactor: merged error rendering methods....
r4172 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Adds "between" operator for numeric filters (#6180)....
r6097 def assert_include(expected, s)
assert s.include?(expected), "\"#{expected}\" not found in \"#{s}\""
end
Eric Davis
Added some tests for the LDAP authentication....
r3324
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 def assert_not_include(expected, s)
assert !s.include?(expected), "\"#{expected}\" found in \"#{s}\""
end
def assert_mail_body_match(expected, mail)
if expected.is_a?(String)
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 assert_include expected, mail_body(mail)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 else
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 assert_match expected, mail_body(mail)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 end
end
def assert_mail_body_no_match(expected, mail)
if expected.is_a?(String)
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 assert_not_include expected, mail_body(mail)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 else
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 assert_no_match expected, mail_body(mail)
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 end
end
Jean-Philippe Lang
Adds an helper to get the body of an email in tests....
r8972 def mail_body(mail)
mail.body
end
Eric Davis
Added some shoulda macros for testing....
r3155 # Shoulda macros
def self.should_render_404
should_respond_with :not_found
Jean-Philippe Lang
Refactor: merged error rendering methods....
r4172 should_render_template 'common/error'
Eric Davis
Added some shoulda macros for testing....
r3155 end
def self.should_have_before_filter(expected_method, options = {})
should_have_filter('before', expected_method, options)
end
def self.should_have_after_filter(expected_method, options = {})
should_have_filter('after', expected_method, options)
end
def self.should_have_filter(filter_type, expected_method, options)
description = "have #{filter_type}_filter :#{expected_method}"
description << " with #{options.inspect}" unless options.empty?
should description do
klass = "action_controller/filters/#{filter_type}_filter".classify.constantize
expected = klass.new(:filter, expected_method.to_sym, options)
assert_equal 1, @controller.class.filter_chain.select { |filter|
filter.method == expected.method && filter.kind == expected.kind &&
filter.options == expected.options && filter.class == expected.class
}.size
end
end
Eric Davis
Added unit tests for IssuesHelper#show_detail...
r3438
def self.should_show_the_old_and_new_values_for(prop_key, model, &block)
context "" do
setup do
if block_given?
instance_eval &block
else
@old_value = model.generate!
@new_value = model.generate!
end
end
should "use the new value's name" do
@detail = JournalDetail.generate!(:property => 'attr',
:old_value => @old_value.id,
:value => @new_value.id,
:prop_key => prop_key)
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Added unit tests for IssuesHelper#show_detail...
r3438 assert_match @new_value.name, show_detail(@detail, true)
end
should "use the old value's name" do
@detail = JournalDetail.generate!(:property => 'attr',
:old_value => @old_value.id,
:value => @new_value.id,
:prop_key => prop_key)
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Added unit tests for IssuesHelper#show_detail...
r3438 assert_match @old_value.name, show_detail(@detail, true)
end
end
end
Eric Davis
Refactor: extract method to shoulda macro....
r3791
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 # Test that a request allows the three types of API authentication
#
# * HTTP Basic with username and password
# * HTTP Basic with an api key for the username
# * Key based with the key=X parameter
#
# @param [Symbol] http_method the HTTP method for request (:get, :post, :put, :delete)
# @param [String] url the request url
# @param [optional, Hash] parameters additional request parameters
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 # @param [optional, Hash] options additional options
# @option options [Symbol] :success_code Successful response code (:success)
# @option options [Symbol] :failure_code Failure response code (:unauthorized)
def self.should_allow_api_authentication(http_method, url, parameters={}, options={})
should_allow_http_basic_auth_with_username_and_password(http_method, url, parameters, options)
should_allow_http_basic_auth_with_key(http_method, url, parameters, options)
should_allow_key_based_auth(http_method, url, parameters, options)
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 end
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 # Test that a request allows the username and password for HTTP BASIC
#
# @param [Symbol] http_method the HTTP method for request (:get, :post, :put, :delete)
# @param [String] url the request url
# @param [optional, Hash] parameters additional request parameters
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 # @param [optional, Hash] options additional options
# @option options [Symbol] :success_code Successful response code (:success)
# @option options [Symbol] :failure_code Failure response code (:unauthorized)
def self.should_allow_http_basic_auth_with_username_and_password(http_method, url, parameters={}, options={})
success_code = options[:success_code] || :success
failure_code = options[:failure_code] || :unauthorized
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 context "should allow http basic auth using a username and password for #{http_method} #{url}" do
context "with a valid HTTP authentication" do
setup do
@user = User.generate_with_protected!(:password => 'my_password', :password_confirmation => 'my_password', :admin => true) # Admin so they can access the project
Jean-Philippe Lang
Test cleanup....
r8357 send(http_method, url, parameters, credentials(@user.login, 'my_password'))
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with success_code
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 should_respond_with_content_type_based_on_url(url)
should "login as the user" do
assert_equal @user, User.current
end
end
context "with an invalid HTTP authentication" do
setup do
@user = User.generate_with_protected!
Jean-Philippe Lang
Test cleanup....
r8357 send(http_method, url, parameters, credentials(@user.login, 'wrong_password'))
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with failure_code
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 should_respond_with_content_type_based_on_url(url)
should "not login as the user" do
assert_equal User.anonymous, User.current
end
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 context "without credentials" do
setup do
Jean-Philippe Lang
Test cleanup....
r8357 send(http_method, url, parameters)
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 end
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with failure_code
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 should_respond_with_content_type_based_on_url(url)
should "include_www_authenticate_header" do
assert @controller.response.headers.has_key?('WWW-Authenticate')
end
end
end
end
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 # Test that a request allows the API key with HTTP BASIC
#
# @param [Symbol] http_method the HTTP method for request (:get, :post, :put, :delete)
# @param [String] url the request url
# @param [optional, Hash] parameters additional request parameters
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 # @param [optional, Hash] options additional options
# @option options [Symbol] :success_code Successful response code (:success)
# @option options [Symbol] :failure_code Failure response code (:unauthorized)
def self.should_allow_http_basic_auth_with_key(http_method, url, parameters={}, options={})
success_code = options[:success_code] || :success
failure_code = options[:failure_code] || :unauthorized
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 context "should allow http basic auth with a key for #{http_method} #{url}" do
context "with a valid HTTP authentication using the API token" do
setup do
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 @user = User.generate_with_protected!(:admin => true)
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 @token = Token.generate!(:user => @user, :action => 'api')
Jean-Philippe Lang
Test cleanup....
r8357 send(http_method, url, parameters, credentials(@token.value, 'X'))
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with success_code
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 should_respond_with_content_type_based_on_url(url)
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 should_be_a_valid_response_string_based_on_url(url)
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 should "login as the user" do
assert_equal @user, User.current
end
end
context "with an invalid HTTP authentication" do
setup do
@user = User.generate_with_protected!
@token = Token.generate!(:user => @user, :action => 'feeds')
Jean-Philippe Lang
Test cleanup....
r8357 send(http_method, url, parameters, credentials(@token.value, 'X'))
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 end
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with failure_code
Eric Davis
Refactor: convert API key tests using HTTP Basic to a shoulda macro...
r4249 should_respond_with_content_type_based_on_url(url)
should "not login as the user" do
assert_equal User.anonymous, User.current
end
end
end
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 # Test that a request allows full key authentication
#
# @param [Symbol] http_method the HTTP method for request (:get, :post, :put, :delete)
# @param [String] url the request url, without the key=ZXY parameter
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 # @param [optional, Hash] parameters additional request parameters
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 # @param [optional, Hash] options additional options
# @option options [Symbol] :success_code Successful response code (:success)
# @option options [Symbol] :failure_code Failure response code (:unauthorized)
def self.should_allow_key_based_auth(http_method, url, parameters={}, options={})
success_code = options[:success_code] || :success
failure_code = options[:failure_code] || :unauthorized
Eric Davis
Refactor: convert username/password http basic auth api tests to shoulda macros #6447...
r4246 context "should allow key based auth using key=X for #{http_method} #{url}" do
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 context "with a valid api token" do
setup do
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 @user = User.generate_with_protected!(:admin => true)
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 @token = Token.generate!(:user => @user, :action => 'api')
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 # Simple url parse to add on ?key= or &key=
request_url = if url.match(/\?/)
url + "&key=#{@token.value}"
else
url + "?key=#{@token.value}"
end
send(http_method, request_url, parameters)
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with success_code
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 should_respond_with_content_type_based_on_url(url)
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 should_be_a_valid_response_string_based_on_url(url)
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 should "login as the user" do
assert_equal @user, User.current
end
end
context "with an invalid api token" do
setup do
@user = User.generate_with_protected!
@token = Token.generate!(:user => @user, :action => 'feeds')
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 # Simple url parse to add on ?key= or &key=
request_url = if url.match(/\?/)
url + "&key=#{@token.value}"
else
url + "?key=#{@token.value}"
end
send(http_method, request_url, parameters)
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Allow key authentication when creating issues (with tests) #6447...
r4251 should_respond_with failure_code
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 should_respond_with_content_type_based_on_url(url)
should "not login as the user" do
assert_equal User.anonymous, User.current
end
end
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Makes the API accepts the X-Redmine-API-Key header to hold the API key....
r4459 context "should allow key based auth using X-Redmine-API-Key header for #{http_method} #{url}" do
setup do
@user = User.generate_with_protected!(:admin => true)
@token = Token.generate!(:user => @user, :action => 'api')
send(http_method, url, parameters, {'X-Redmine-API-Key' => @token.value.to_s})
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Makes the API accepts the X-Redmine-API-Key header to hold the API key....
r4459 should_respond_with success_code
should_respond_with_content_type_based_on_url(url)
should_be_a_valid_response_string_based_on_url(url)
should "login as the user" do
assert_equal @user, User.current
end
end
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 end
# Uses should_respond_with_content_type based on what's in the url:
#
# '/project/issues.xml' => should_respond_with_content_type :xml
# '/project/issues.json' => should_respond_with_content_type :json
#
# @param [String] url Request
def self.should_respond_with_content_type_based_on_url(url)
case
when url.match(/xml/i)
should_respond_with_content_type :xml
when url.match(/json/i)
should_respond_with_content_type :json
else
raise "Unknown content type for should_respond_with_content_type_based_on_url: #{url}"
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: convert api key tests to shoulda macros for reuse. #6447...
r4244 end
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250
# Uses the url to assert which format the response should be in
#
# '/project/issues.xml' => should_be_a_valid_xml_string
# '/project/issues.json' => should_be_a_valid_json_string
#
# @param [String] url Request
def self.should_be_a_valid_response_string_based_on_url(url)
case
when url.match(/xml/i)
should_be_a_valid_xml_string
when url.match(/json/i)
should_be_a_valid_json_string
else
raise "Unknown content type for should_be_a_valid_response_based_on_url: #{url}"
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 # Checks that the response is a valid JSON string
def self.should_be_a_valid_json_string
Eric Davis
Allow key authentication when updating issues (with tests) #6447...
r4252 should "be a valid JSON string (or empty)" do
Jean-Philippe Lang
Removes a space before argument parentheses....
r5032 assert(response.body.blank? || ActiveSupport::JSON.decode(response.body))
Eric Davis
Refactor: Convert the tests for Issues#index and #show APIs to shoulda. #6447...
r4250 end
end
# Checks that the response is a valid XML string
def self.should_be_a_valid_xml_string
should "be a valid XML string" do
assert REXML::Document.new(response.body)
end
end
Toshi MARUYAMA
remove trailing white-spaces from test/test_helper.rb....
r6826
Jean-Philippe Lang
Initial commit...
r2 end
Eric Davis
Move all API tests into the ApiTest module to make management easier...
r4243
# Simple module to "namespace" all of the API tests
module ApiTest
end