Remove SslRequirement and associated logic
[gitorious:mainline.git] / test / functional / searches_controller_test.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2012 Gitorious AS
4 #   Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
5 #
6 #   This program is free software: you can redistribute it and/or modify
7 #   it under the terms of the GNU Affero General Public License as published by
8 #   the Free Software Foundation, either version 3 of the License, or
9 #   (at your option) any later version.
10 #
11 #   This program is distributed in the hope that it will be useful,
12 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #   GNU Affero General Public License for more details.
15 #
16 #   You should have received a copy of the GNU Affero General Public License
17 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #++
19
20 require "test_helper"
21
22 class SearchesControllerTest < ActionController::TestCase
23   should_render_in_global_context
24
25   context "#show" do
26     should "search for the given query" do
27       search_result = [projects(:johans)]
28
29       ThinkingSphinx.expects(:search).with({
30         :query => "foo", :page => 1, :per_page => 30
31       }).returns(search_result)
32
33       search_result.expects(:total_entries).returns(1)
34       search_result.expects(:query_time).returns(42)
35
36       get :show, :q => "foo"
37       assert_equal search_result, assigns(:all_results)
38       assert_equal [projects(:johans)], assigns(:results)
39     end
40
41     should "not search if there is no :q param" do
42       ThinkingSphinx.expects(:search).never
43       get :show, :q => ""
44       assert_nil assigns(:results)
45     end
46   end
47
48   context "With private repositories" do
49     setup do
50       @project = Project.first
51       search_results = Project.all.concat(Repository.all)
52       enable_private_repositories
53       ThinkingSphinx.stubs(:search).returns(search_results)
54
55       search_results.stubs(:total_pages).returns(1)
56       search_results.stubs(:total_entries).returns(search_results.length)
57       search_results.stubs(:query_time).returns(42)
58     end
59
60     should "filter out unauthorized results" do
61       get :show, :q => "gitorious"
62       assert_response :success
63       assert(assigns(:results).none? do |r|
64         (r.respond_to?(:project) ? r.project : r) == @project
65       end)
66       assert_match /Found 4 results/, @response.body
67     end
68
69     should "not filter out authorized results" do
70       login_as :johan
71       get :show, :q => "gitorious"
72
73       assert(assigns(:results).any? do |r|
74         (r.respond_to?(:project) ? r.project : r) == @project
75       end)
76       assert_match /Found 8 results/, @response.body
77     end
78    end
79 end