OSDN Git Service

Make changes to tests
[wvm/gitlab.git] / spec / features / security / project / private_access_spec.rb
1 require 'spec_helper'
2
3 describe "Private Project Access" do
4   let(:project) { create(:project) }
5
6   let(:master)   { create(:user) }
7   let(:guest)    { create(:user) }
8   let(:reporter) { create(:user) }
9
10   before do
11     # full access
12     project.team << [master, :master]
13
14     # readonly
15     project.team << [reporter, :reporter]
16   end
17
18   describe "Project should be private" do
19     subject { project }
20
21     its(:private?) { should be_true }
22   end
23
24   describe "GET /:project_path" do
25     subject { project_path(project) }
26
27     it { should be_allowed_for master }
28     it { should be_allowed_for reporter }
29     it { should be_allowed_for :admin }
30     it { should be_denied_for guest }
31     it { should be_denied_for :user }
32     it { should be_denied_for :visitor }
33   end
34
35   describe "GET /:project_path/tree/master" do
36     subject { project_tree_path(project, project.repository.root_ref) }
37
38     it { should be_allowed_for master }
39     it { should be_allowed_for reporter }
40     it { should be_allowed_for :admin }
41     it { should be_denied_for guest }
42     it { should be_denied_for :user }
43     it { should be_denied_for :visitor }
44   end
45
46   describe "GET /:project_path/commits/master" do
47     subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
48
49     it { should be_allowed_for master }
50     it { should be_allowed_for reporter }
51     it { should be_allowed_for :admin }
52     it { should be_denied_for guest }
53     it { should be_denied_for :user }
54     it { should be_denied_for :visitor }
55   end
56
57   describe "GET /:project_path/commit/:sha" do
58     subject { project_commit_path(project, project.repository.commit) }
59
60     it { should be_allowed_for master }
61     it { should be_allowed_for reporter }
62     it { should be_allowed_for :admin }
63     it { should be_denied_for guest }
64     it { should be_denied_for :user }
65     it { should be_denied_for :visitor }
66   end
67
68   describe "GET /:project_path/compare" do
69     subject { project_compare_index_path(project) }
70
71     it { should be_allowed_for master }
72     it { should be_allowed_for reporter }
73     it { should be_allowed_for :admin }
74     it { should be_denied_for guest }
75     it { should be_denied_for :user }
76     it { should be_denied_for :visitor }
77   end
78
79   describe "GET /:project_path/team" do
80     subject { project_team_index_path(project) }
81
82     it { should be_allowed_for master }
83     it { should be_denied_for reporter }
84     it { should be_allowed_for :admin }
85     it { should be_denied_for guest }
86     it { should be_denied_for :user }
87     it { should be_denied_for :visitor }
88   end
89
90   describe "GET /:project_path/wall" do
91     subject { project_wall_path(project) }
92
93     it { should be_allowed_for master }
94     it { should be_allowed_for reporter }
95     it { should be_allowed_for :admin }
96     it { should be_denied_for guest }
97     it { should be_denied_for :user }
98     it { should be_denied_for :visitor }
99   end
100
101   describe "GET /:project_path/blob" do
102     before do
103       commit = project.repository.commit
104       path = commit.tree.contents.select { |i| i.is_a?(Grit::Blob) }.first.name
105       @blob_path = project_blob_path(project, File.join(commit.id, path))
106     end
107
108     it { @blob_path.should be_allowed_for master }
109     it { @blob_path.should be_allowed_for reporter }
110     it { @blob_path.should be_allowed_for :admin }
111     it { @blob_path.should be_denied_for guest }
112     it { @blob_path.should be_denied_for :user }
113     it { @blob_path.should be_denied_for :visitor }
114   end
115
116   describe "GET /:project_path/edit" do
117     subject { edit_project_path(project) }
118
119     it { should be_allowed_for master }
120     it { should be_denied_for reporter }
121     it { should be_allowed_for :admin }
122     it { should be_denied_for guest }
123     it { should be_denied_for :user }
124     it { should be_denied_for :visitor }
125   end
126
127   describe "GET /:project_path/deploy_keys" do
128     subject { project_deploy_keys_path(project) }
129
130     it { should be_allowed_for master }
131     it { should be_denied_for reporter }
132     it { should be_allowed_for :admin }
133     it { should be_denied_for guest }
134     it { should be_denied_for :user }
135     it { should be_denied_for :visitor }
136   end
137
138   describe "GET /:project_path/issues" do
139     subject { project_issues_path(project) }
140
141     it { should be_allowed_for master }
142     it { should be_allowed_for reporter }
143     it { should be_allowed_for :admin }
144     it { should be_denied_for guest }
145     it { should be_denied_for :user }
146     it { should be_denied_for :visitor }
147   end
148
149   describe "GET /:project_path/snippets" do
150     subject { project_snippets_path(project) }
151
152     it { should be_allowed_for master }
153     it { should be_allowed_for reporter }
154     it { should be_allowed_for :admin }
155     it { should be_denied_for guest }
156     it { should be_denied_for :user }
157     it { should be_denied_for :visitor }
158   end
159
160   describe "GET /:project_path/merge_requests" do
161     subject { project_merge_requests_path(project) }
162
163     it { should be_allowed_for master }
164     it { should be_allowed_for reporter }
165     it { should be_allowed_for :admin }
166     it { should be_denied_for guest }
167     it { should be_denied_for :user }
168     it { should be_denied_for :visitor }
169   end
170
171   describe "GET /:project_path/branches/recent" do
172     subject { recent_project_branches_path(project) }
173
174     it { should be_allowed_for master }
175     it { should be_allowed_for reporter }
176     it { should be_allowed_for :admin }
177     it { should be_denied_for guest }
178     it { should be_denied_for :user }
179     it { should be_denied_for :visitor }
180   end
181
182   describe "GET /:project_path/branches" do
183     subject { project_branches_path(project) }
184
185     before do
186       # Speed increase
187       Project.any_instance.stub(:branches).and_return([])
188     end
189
190     it { should be_allowed_for master }
191     it { should be_allowed_for reporter }
192     it { should be_allowed_for :admin }
193     it { should be_denied_for guest }
194     it { should be_denied_for :user }
195     it { should be_denied_for :visitor }
196   end
197
198   describe "GET /:project_path/tags" do
199     subject { project_tags_path(project) }
200
201     before do
202       # Speed increase
203       Project.any_instance.stub(:tags).and_return([])
204     end
205
206     it { should be_allowed_for master }
207     it { should be_allowed_for reporter }
208     it { should be_allowed_for :admin }
209     it { should be_denied_for guest }
210     it { should be_denied_for :user }
211     it { should be_denied_for :visitor }
212   end
213
214   describe "GET /:project_path/hooks" do
215     subject { project_hooks_path(project) }
216
217     it { should be_allowed_for master }
218     it { should be_denied_for reporter }
219     it { should be_allowed_for :admin }
220     it { should be_denied_for guest }
221     it { should be_denied_for :user }
222     it { should be_denied_for :visitor }
223   end
224 end