##// END OF EJS Templates
add unit test to set project if project is nil at unit time entry test...
add unit test to set project if project is nil at unit time entry test git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7452 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r6119:fe07aee27efd
r7332:5778c264349e
Show More
repositories_filesystem_controller_test.rb
153 lines | 5.5 KiB | text/x-ruby | RubyLexer
/ test / functional / repositories_filesystem_controller_test.rb
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# 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
scm: filesystem: remove trailing white-spaces from functional test....
r5562 #
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # 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
scm: filesystem: remove trailing white-spaces from functional test....
r5562 #
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # 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.
require File.expand_path('../../test_helper', __FILE__)
require 'repositories_controller'
# Re-raise errors caught by the controller.
class RepositoriesController; def rescue_action(e) raise e end; end
class RepositoriesFilesystemControllerTest < ActionController::TestCase
Toshi MARUYAMA
scm: filesystem: replace RAILS_ROOT to Rails.root in functional test....
r5935 fixtures :projects, :users, :roles, :members, :member_roles,
:repositories, :enabled_modules
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076
Toshi MARUYAMA
scm: filesystem: replace RAILS_ROOT to Rails.root in functional test....
r5935 REPOSITORY_PATH = Rails.root.join('tmp/test/filesystem_repository').to_s
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 PRJ_ID = 3
def setup
Toshi MARUYAMA
scm: add test of showing *real* non ASCII contents in functional filesystem repository test....
r5568 @ruby19_non_utf8_pass =
Toshi MARUYAMA
scm: filesystem: code clean up functional test....
r5741 (RUBY_VERSION >= '1.9' && Encoding.default_external.to_s != 'UTF-8')
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 @controller = RepositoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
Setting.enabled_scm << 'Filesystem' unless Setting.enabled_scm.include?('Filesystem')
Toshi MARUYAMA
scm: filesystem: add instance variable @project at functional test....
r6117 @project = Project.find(PRJ_ID)
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 @repository = Repository::Filesystem.create(
Toshi MARUYAMA
scm: filesystem: add instance variable @project at functional test....
r6117 :project => @project,
Toshi MARUYAMA
scm: filesystem: code clean up functional test....
r5741 :url => REPOSITORY_PATH,
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 :path_encoding => ''
)
assert @repository
end
if File.directory?(REPOSITORY_PATH)
def test_browse_root
@repository.fetch_changesets
@repository.reload
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078 get :show, :id => PRJ_ID
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 assert_response :success
assert_template 'show'
assert_not_nil assigns(:entries)
assert assigns(:entries).size > 0
assert_not_nil assigns(:changesets)
assert assigns(:changesets).size == 0
end
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078
def test_show_no_extension
get :entry, :id => PRJ_ID, :path => ['test']
assert_response :success
assert_template 'entry'
assert_tag :tag => 'th',
:content => '1',
:attributes => { :class => 'line-num' },
:sibling => { :tag => 'td', :content => /TEST CAT/ }
end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085
Toshi MARUYAMA
scm: filesystem: add test for no extension file mime type in functional test....
r5089 def test_entry_download_no_extension
get :entry, :id => PRJ_ID, :path => ['test'], :format => 'raw'
assert_response :success
assert_equal 'application/octet-stream', @response.content_type
end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085 def test_show_non_ascii_contents
with_settings :repositories_encodings => 'UTF-8,EUC-JP' do
get :entry, :id => PRJ_ID, :path => ['japanese', 'euc-jp.txt']
assert_response :success
assert_template 'entry'
assert_tag :tag => 'th',
:content => '2',
:attributes => { :class => 'line-num' },
:sibling => { :tag => 'td', :content => /japanese/ }
Toshi MARUYAMA
scm: add test of showing *real* non ASCII contents in functional filesystem repository test....
r5568 if @ruby19_non_utf8_pass
puts "TODO: show repository file contents test fails in Ruby 1.9 " +
"and Encoding.default_external is not UTF-8. " +
"Current value is '#{Encoding.default_external.to_s}'"
else
str_japanese = "\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e"
str_japanese.force_encoding('UTF-8') if str_japanese.respond_to?(:force_encoding)
assert_tag :tag => 'th',
:content => '3',
:attributes => { :class => 'line-num' },
:sibling => { :tag => 'td', :content => /#{str_japanese}/ }
end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085 end
end
Toshi MARUYAMA
scm: filesystem: add test for UTF-16 file displaying (#6256)....
r5086
def test_show_utf16
with_settings :repositories_encodings => 'UTF-16' do
get :entry, :id => PRJ_ID, :path => ['japanese', 'utf-16.txt']
assert_response :success
assert_tag :tag => 'th',
:content => '2',
:attributes => { :class => 'line-num' },
:sibling => { :tag => 'td', :content => /japanese/ }
end
end
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087
def test_show_text_file_should_send_if_too_big
with_settings :file_max_size_displayed => 1 do
get :entry, :id => PRJ_ID, :path => ['japanese', 'big-file.txt']
assert_response :success
Toshi MARUYAMA
scm: set mime type in downloading file....
r5090 assert_equal 'text/plain', @response.content_type
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087 end
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying valid repository (#6713, #4725)....
r6118
def test_destroy_valid_repository
@request.session[:user_id] = 1 # admin
get :destroy, :id => PRJ_ID
assert_response 302
@project.reload
assert_nil @project.repository
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying invalid repository (#6713, #4725)....
r6119
def test_destroy_invalid_repository
@request.session[:user_id] = 1 # admin
get :destroy, :id => PRJ_ID
assert_response 302
@project.reload
assert_nil @project.repository
@repository = Repository::Filesystem.create(
:project => Project.find(PRJ_ID),
:url => "/invalid",
:path_encoding => ''
)
assert @repository
get :destroy, :id => PRJ_ID
assert_response 302
@project.reload
assert_nil @project.repository
end
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 else
puts "Filesystem test repository NOT FOUND. Skipping functional tests !!!"
def test_fake; assert true end
end
end