Remove SslRequirement and associated logic
[gitorious:mainline.git] / test / functional / merge_request_versions_controller_test.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2011-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 MergeRequestVersionsControllerTest < ActionController::TestCase
23   should_render_in_site_specific_context
24
25   context "Viewing diffs" do
26     setup do
27       @merge_request = merge_requests(:moes_to_johans)
28       @merge_request.stubs(:calculate_merge_base).returns("ffac0")
29       @version = @merge_request.create_new_version
30       @git = mock
31
32       #(repo, id, parents, tree, author, authored_date, committer, committed_date, message)
33       @commit = Grit::Commit.new(mock("repo"), "mycommitid", [], stub_everything("tree"),
34                                  stub_everything("author"), Time.now, stub_everything("comitter"), Time.now,
35                                  "my commit message".split(" "))
36
37       Repository.any_instance.stubs(:git).returns(@git)
38       MergeRequestVersion.stubs(:find).returns(@version)
39     end
40
41     should "view the diff for a single commit" do
42       @version.expects(:diffs).with("ffcab").returns([])
43       @git.expects(:commit).with("ffcab").returns(@commit)
44
45       get :show, params(:id => @version.to_param, :commit_shas => "ffcab")
46
47       assert_response :success
48       assert_equal @commit, assigns(:commit)
49     end
50
51     should "view the diff for a series of commits" do
52       @version.expects(:diffs).with("ffcab".."bacff").returns([])
53
54       get :show, params(:id => @version, :commit_shas => "ffcab-bacff")
55
56       assert_response :success
57       assert_nil assigns(:commit)
58     end
59
60     should "view the entire diff" do
61       @version.expects(:diffs).returns([])
62
63       get :show, params(:id => @version)
64
65       assert_response :success
66       assert_not_nil assigns(:project)
67     end
68
69     context "With private projects" do
70       setup do
71         @project = @merge_request.project
72         enable_private_repositories
73         @version.stubs(:diffs).with("ffcab".."bacff").returns([])
74       end
75
76       should "disallow unauthenticated users" do
77         get :show, params(:id => @version, :commit_shas => "ffcab-bacff")
78         assert_response 403
79       end
80
81       should "allow authenticated users" do
82         login_as :johan
83         get :show, params(:id => @version, :commit_shas => "ffcab-bacff")
84         assert_response 200
85       end
86     end
87
88     context "With private repositories" do
89       setup do
90         enable_private_repositories(@merge_request.target_repository)
91         @version.stubs(:diffs).with("ffcab".."bacff").returns([])
92       end
93
94       should "disallow unauthenticated users" do
95         get :show, params(:id => @version, :commit_shas => "ffcab-bacff")
96         assert_response 403
97       end
98
99       should "allow authenticated users" do
100         login_as :johan
101         get :show, params(:id => @version, :commit_shas => "ffcab-bacff")
102         assert_response 200
103       end
104     end
105   end
106
107   def params(extras)
108     { :project_id => "gitorious",
109       :repository_id => "repository",
110       :merge_request_id => 1,
111       :format => "js" }.merge(extras)
112   end
113 end