require File.dirname(__FILE__) + '/../test_helper' require 'browse_controller' # Re-raise errors caught by the controller. class BrowseController; def rescue_action(e) raise e end; end class BrowseControllerTest < Test::Unit::TestCase fixtures :projects, :users, :groups, :groups_projects, :groups_users, :changesets, :changes, :repositories def setup RetroCM.reload @controller = BrowseController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new end def test_index unless testing_repository_active? skipped_test_warning return false end get :index assert_response :redirect assert_redirected_to(:controller => 'browse', :action => 'browse', :path => nil) end def test_browse unless testing_repository_active? skipped_test_warning return false end get :browse assert_response :success assert_template('browse/browse') assert_valid_markup get :browse, :path => ['config'] assert_response :success assert_template('browse/browse') assert_valid_markup get :browse, :path => ['config', 'boot.rb'] assert_response :success assert_template('browse/show_file') get :browse, :path => ['public', 'images', 'rss.png'] assert_response :success assert_template('browse/show_image') assert_valid_markup get :browse, :path => ['public', 'favicon.ico'] assert_response :success assert_template('browse/show_binary') assert_valid_markup get :browse, :path => ['script', 'about'] assert_response :success assert_template('browse/show_file') assert_valid_markup get :browse, :path => ['config', 'boot.rb'], :format => 'txt' assert_response :success assert_template(nil) get :browse, :path => ['config', 'boot.rb'], :format => 'raw' assert_response :success assert_template(nil) get :browse, :path => ['config'], :format => 'txt' assert_response :success assert_template('browse/browse') end def test_fetching_node_with_invalid_revisions unless testing_repository_active? skipped_test_warning return false end get :browse, :rev => '5' assert_response :success assert_template('browse/browse') assert_valid_markup get :browse, :rev => '-1' assert_response :redirect assert_redirected_to(:rev => nil) assert_equal(1, flash[:error].size) flash[:error] = nil get :browse, :rev => '999' assert_response :redirect assert_redirected_to(:rev => nil) assert_equal(1, flash[:error].size) flash[:error] = nil get :browse, :rev => 'abcde' assert_response :redirect assert_redirected_to(:rev => nil) assert_equal(1, flash[:error].size) flash[:error] = nil end def test_fetching_not_exising_nodes unless testing_repository_active? skipped_test_warning return false end # script/less_weird.rb exists in latest revision get :browse, :path => ['script', 'less_weird.rb'] assert_response :success assert_template('browse/show_file') assert_valid_markup # script/less_weird.rb does not exist in 1st revision get :browse, :path => ['script', 'less_weird.rb'], :rev => 1 assert_response :redirect assert_redirected_to(:rev => nil) # redirected to latest revision assert_equal(1, flash[:error].size) # script/rxm exists in 1st revision get :browse, :path => ['script', 'rxm'], :rev => 1 assert_response :success assert_template('browse/show_file') # script/rxm does not exist in 3rd revision get :browse, :path => ['script', 'rxm'], :rev => 3 assert_response :redirect assert_redirected_to(:path => nil, :rev => nil) # redirected to latest revision of root path assert_equal(1, flash[:error].size) flash[:error] = nil # script/rxm does not exist in latest revision get :browse, :path => ['script', 'rxm'] assert_response :redirect assert_redirected_to(:path=> nil, :rev => nil) assert_equal(1, flash[:error].size) flash[:error] = nil get :browse, :path => ['invalid'] assert_response :redirect assert_redirected_to(:path=> nil, :rev => nil) assert_equal(1, flash[:error].size) flash[:error] = nil end def test_fetching_nodes_with_multiple_redirects unless testing_repository_active? skipped_test_warning return false end get :browse, :path => ['invalid'], :rev => 'abcde' assert_response :redirect assert_redirected_to(:rev => nil) assert_equal(1, flash[:error].size) # follow redirection get :browse, :path => ['invalid'], :rev => nil assert_response :redirect assert_redirected_to(:path => nil, :rev => nil) assert_equal(2, flash[:error].size) # follow redirection get :browse, :path => nil, :rev => nil assert_response :success assert_template('browse/browse') assert_valid_markup end def test_file unless testing_repository_active? skipped_test_warning return false end get :file assert_response :redirect assert_redirected_to(:action => 'browse') get :file, :path => ['config'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => ['config']) get :file, :path => ['invalid'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => nil, :rev => nil) get :file, :path => ['config', 'boot.rb'] assert_response :success assert_template(nil) get :file, :path => ['public', 'images', 'rss.png'] assert_response :success assert_template(nil) end def test_revisions unless testing_repository_active? skipped_test_warning return false end get :revisions assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['invalid'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => nil, :rev => nil) get :revisions, :path => ['config'] assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['config', 'boot.rb'] assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['public', 'images', 'rss.png'] assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['config', 'boot.rb'] assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['public', 'images', 'rss.png'] assert_response :success assert_template('browse/revisions') assert_valid_markup get :revisions, :path => ['public', 'images', 'rss.png'], :rev => 1 assert_response :redirect assert_redirected_to(:action => 'browse', :path => nil, :rev => nil) get :revisions, :path => ['script', 'rxm'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => nil, :rev => nil) get :revisions, :path => ['script', 'rxm'], :rev => 1 assert_response :success assert_template('browse/revisions') assert_valid_markup end def test_visual_diff unless testing_repository_active? skipped_test_warning return false end get :visual_diff assert_response :redirect assert_redirected_to(:action => 'browse') get :visual_diff, :path => ['config'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => ['config']) get :visual_diff, :path => ['invalid'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => nil, :rev => nil) get :visual_diff, :path => ['config', 'boot.rb'] assert_response :redirect assert_redirected_to(:action => 'browse', :path => ['config', 'boot.rb']) get :visual_diff, :path => ['config', 'boot.rb'], :compare_with => -1 assert_response :success assert_template('browse/visual_diff') assert_select "table.ln-code", false get :visual_diff, :path => ['config', 'boot.rb'], :compare_with => -1, :format => 'diff' assert_response :success assert_template(nil) assert_equal 0, @response.body.size get :visual_diff, :path => ['config', 'environments', 'test.rb'], :compare_with => 1 assert_response :success assert_template('browse/visual_diff') assert_select "table.ln-code", 1 get :visual_diff, :path => ['config', 'environments', 'test.rb'], :compare_with => 1, :format => 'diff' assert_response :success assert_template(nil) assert @response.body.size > 0 end end