Commit ea779cc5abe9218193197d1c7b60d898dde47904

Authored by Dmitriy Zaporozhets
1 parent bcdc7b5d

Public/Private projects security specs

spec/features/security/project/private_access_spec.rb 0 → 100644
@@ -0,0 +1,218 @@ @@ -0,0 +1,218 @@
  1 +require 'spec_helper'
  2 +
  3 +describe "Private Project Access" do
  4 + let(:project) { create(:project_with_code) }
  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 "GET /:project_path" do
  19 + subject { project_path(project) }
  20 +
  21 + it { should be_allowed_for master }
  22 + it { should be_allowed_for reporter }
  23 + it { should be_allowed_for :admin }
  24 + it { should be_denied_for guest }
  25 + it { should be_denied_for :user }
  26 + it { should be_denied_for :visitor }
  27 + end
  28 +
  29 + describe "GET /:project_path/tree/master" do
  30 + subject { project_tree_path(project, project.repository.root_ref) }
  31 +
  32 + it { should be_allowed_for master }
  33 + it { should be_allowed_for reporter }
  34 + it { should be_allowed_for :admin }
  35 + it { should be_denied_for guest }
  36 + it { should be_denied_for :user }
  37 + it { should be_denied_for :visitor }
  38 + end
  39 +
  40 + describe "GET /:project_path/commits/master" do
  41 + subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
  42 +
  43 + it { should be_allowed_for master }
  44 + it { should be_allowed_for reporter }
  45 + it { should be_allowed_for :admin }
  46 + it { should be_denied_for guest }
  47 + it { should be_denied_for :user }
  48 + it { should be_denied_for :visitor }
  49 + end
  50 +
  51 + describe "GET /:project_path/commit/:sha" do
  52 + subject { project_commit_path(project, project.repository.commit) }
  53 +
  54 + it { should be_allowed_for master }
  55 + it { should be_allowed_for reporter }
  56 + it { should be_allowed_for :admin }
  57 + it { should be_denied_for guest }
  58 + it { should be_denied_for :user }
  59 + it { should be_denied_for :visitor }
  60 + end
  61 +
  62 + describe "GET /:project_path/compare" do
  63 + subject { project_compare_index_path(project) }
  64 +
  65 + it { should be_allowed_for master }
  66 + it { should be_allowed_for reporter }
  67 + it { should be_allowed_for :admin }
  68 + it { should be_denied_for guest }
  69 + it { should be_denied_for :user }
  70 + it { should be_denied_for :visitor }
  71 + end
  72 +
  73 + describe "GET /:project_path/team" do
  74 + subject { project_team_index_path(project) }
  75 +
  76 + it { should be_allowed_for master }
  77 + it { should be_denied_for reporter }
  78 + it { should be_allowed_for :admin }
  79 + it { should be_denied_for guest }
  80 + it { should be_denied_for :user }
  81 + it { should be_denied_for :visitor }
  82 + end
  83 +
  84 + describe "GET /:project_path/wall" do
  85 + subject { project_wall_path(project) }
  86 +
  87 + it { should be_allowed_for master }
  88 + it { should be_allowed_for reporter }
  89 + it { should be_allowed_for :admin }
  90 + it { should be_denied_for guest }
  91 + it { should be_denied_for :user }
  92 + it { should be_denied_for :visitor }
  93 + end
  94 +
  95 + describe "GET /:project_path/blob" do
  96 + before do
  97 + commit = project.repository.commit
  98 + path = commit.tree.contents.select { |i| i.is_a?(Grit::Blob) }.first.name
  99 + @blob_path = project_blob_path(project, File.join(commit.id, path))
  100 + end
  101 +
  102 + it { @blob_path.should be_allowed_for master }
  103 + it { @blob_path.should be_allowed_for reporter }
  104 + it { @blob_path.should be_allowed_for :admin }
  105 + it { @blob_path.should be_denied_for guest }
  106 + it { @blob_path.should be_denied_for :user }
  107 + it { @blob_path.should be_denied_for :visitor }
  108 + end
  109 +
  110 + describe "GET /:project_path/edit" do
  111 + subject { edit_project_path(project) }
  112 +
  113 + it { should be_allowed_for master }
  114 + it { should be_denied_for reporter }
  115 + it { should be_allowed_for :admin }
  116 + it { should be_denied_for guest }
  117 + it { should be_denied_for :user }
  118 + it { should be_denied_for :visitor }
  119 + end
  120 +
  121 + describe "GET /:project_path/deploy_keys" do
  122 + subject { project_deploy_keys_path(project) }
  123 +
  124 + it { should be_allowed_for master }
  125 + it { should be_denied_for reporter }
  126 + it { should be_allowed_for :admin }
  127 + it { should be_denied_for guest }
  128 + it { should be_denied_for :user }
  129 + it { should be_denied_for :visitor }
  130 + end
  131 +
  132 + describe "GET /:project_path/issues" do
  133 + subject { project_issues_path(project) }
  134 +
  135 + it { should be_allowed_for master }
  136 + it { should be_allowed_for reporter }
  137 + it { should be_allowed_for :admin }
  138 + it { should be_denied_for guest }
  139 + it { should be_denied_for :user }
  140 + it { should be_denied_for :visitor }
  141 + end
  142 +
  143 + describe "GET /:project_path/snippets" do
  144 + subject { project_snippets_path(project) }
  145 +
  146 + it { should be_allowed_for master }
  147 + it { should be_allowed_for reporter }
  148 + it { should be_allowed_for :admin }
  149 + it { should be_denied_for guest }
  150 + it { should be_denied_for :user }
  151 + it { should be_denied_for :visitor }
  152 + end
  153 +
  154 + describe "GET /:project_path/merge_requests" do
  155 + subject { project_merge_requests_path(project) }
  156 +
  157 + it { should be_allowed_for master }
  158 + it { should be_allowed_for reporter }
  159 + it { should be_allowed_for :admin }
  160 + it { should be_denied_for guest }
  161 + it { should be_denied_for :user }
  162 + it { should be_denied_for :visitor }
  163 + end
  164 +
  165 + describe "GET /:project_path/branches/recent" do
  166 + subject { recent_project_branches_path(project) }
  167 +
  168 + it { should be_allowed_for master }
  169 + it { should be_allowed_for reporter }
  170 + it { should be_allowed_for :admin }
  171 + it { should be_denied_for guest }
  172 + it { should be_denied_for :user }
  173 + it { should be_denied_for :visitor }
  174 + end
  175 +
  176 + describe "GET /:project_path/branches" do
  177 + subject { project_branches_path(project) }
  178 +
  179 + before do
  180 + # Speed increase
  181 + Project.any_instance.stub(:branches).and_return([])
  182 + end
  183 +
  184 + it { should be_allowed_for master }
  185 + it { should be_allowed_for reporter }
  186 + it { should be_allowed_for :admin }
  187 + it { should be_denied_for guest }
  188 + it { should be_denied_for :user }
  189 + it { should be_denied_for :visitor }
  190 + end
  191 +
  192 + describe "GET /:project_path/tags" do
  193 + subject { project_tags_path(project) }
  194 +
  195 + before do
  196 + # Speed increase
  197 + Project.any_instance.stub(:tags).and_return([])
  198 + end
  199 +
  200 + it { should be_allowed_for master }
  201 + it { should be_allowed_for reporter }
  202 + it { should be_allowed_for :admin }
  203 + it { should be_denied_for guest }
  204 + it { should be_denied_for :user }
  205 + it { should be_denied_for :visitor }
  206 + end
  207 +
  208 + describe "GET /:project_path/hooks" do
  209 + subject { project_hooks_path(project) }
  210 +
  211 + it { should be_allowed_for master }
  212 + it { should be_denied_for reporter }
  213 + it { should be_allowed_for :admin }
  214 + it { should be_denied_for guest }
  215 + it { should be_denied_for :user }
  216 + it { should be_denied_for :visitor }
  217 + end
  218 +end
spec/features/security/project/public_access_spec.rb 0 → 100644
@@ -0,0 +1,251 @@ @@ -0,0 +1,251 @@
  1 +require 'spec_helper'
  2 +
  3 +describe "Public Project Access" do
  4 + let(:project) { create(:project_with_code) }
  5 +
  6 + let(:master) { create(:user) }
  7 + let(:guest) { create(:user) }
  8 + let(:reporter) { create(:user) }
  9 +
  10 + before do
  11 + # public project
  12 + project.public = true
  13 + project.save!
  14 +
  15 + # full access
  16 + project.team << [master, :master]
  17 +
  18 + # readonly
  19 + project.team << [reporter, :reporter]
  20 +
  21 + end
  22 +
  23 + describe "Project should be public" do
  24 + subject { project }
  25 +
  26 + its(:public?) { should be_true }
  27 + end
  28 +
  29 + describe "GET /:project_path" do
  30 + subject { project_path(project) }
  31 +
  32 + it { should be_allowed_for master }
  33 + it { should be_allowed_for reporter }
  34 + it { should be_allowed_for :admin }
  35 + it { should be_allowed_for guest }
  36 + it { should be_allowed_for :user }
  37 + it { should be_allowed_for :visitor }
  38 + end
  39 +
  40 + describe "GET /:project_path/tree/master" do
  41 + subject { project_tree_path(project, project.repository.root_ref) }
  42 +
  43 + it { should be_allowed_for master }
  44 + it { should be_allowed_for reporter }
  45 + it { should be_allowed_for :admin }
  46 + it { should be_allowed_for guest }
  47 + it { should be_allowed_for :user }
  48 + it { should be_allowed_for :visitor }
  49 + end
  50 +
  51 + describe "GET /:project_path/commits/master" do
  52 + subject { project_commits_path(project, project.repository.root_ref, limit: 1) }
  53 +
  54 + it { should be_allowed_for master }
  55 + it { should be_allowed_for reporter }
  56 + it { should be_allowed_for :admin }
  57 + it { should be_allowed_for guest }
  58 + it { should be_allowed_for :user }
  59 + it { should be_allowed_for :visitor }
  60 + end
  61 +
  62 + describe "GET /:project_path/commit/:sha" do
  63 + subject { project_commit_path(project, project.repository.commit) }
  64 +
  65 + it { should be_allowed_for master }
  66 + it { should be_allowed_for reporter }
  67 + it { should be_allowed_for :admin }
  68 + it { should be_allowed_for guest }
  69 + it { should be_allowed_for :user }
  70 + it { should be_allowed_for :visitor }
  71 + end
  72 +
  73 + describe "GET /:project_path/compare" do
  74 + subject { project_compare_index_path(project) }
  75 +
  76 + it { should be_allowed_for master }
  77 + it { should be_allowed_for reporter }
  78 + it { should be_allowed_for :admin }
  79 + it { should be_allowed_for guest }
  80 + it { should be_allowed_for :user }
  81 + it { should be_allowed_for :visitor }
  82 + end
  83 +
  84 + describe "GET /:project_path/team" do
  85 + subject { project_team_index_path(project) }
  86 +
  87 + it { should be_allowed_for master }
  88 + it { should be_denied_for reporter }
  89 + it { should be_allowed_for :admin }
  90 + it { should be_denied_for guest }
  91 + it { should be_denied_for :user }
  92 + it { should be_denied_for :visitor }
  93 + end
  94 +
  95 + describe "GET /:project_path/wall" do
  96 + subject { project_wall_path(project) }
  97 +
  98 + it { should be_allowed_for master }
  99 + it { should be_allowed_for reporter }
  100 + it { should be_allowed_for :admin }
  101 + it { should be_allowed_for guest }
  102 + it { should be_allowed_for :user }
  103 + it { should be_allowed_for :visitor }
  104 + end
  105 +
  106 + describe "GET /:project_path/blob" do
  107 + before do
  108 + commit = project.repository.commit
  109 + path = commit.tree.contents.select { |i| i.is_a?(Grit::Blob) }.first.name
  110 + @blob_path = project_blob_path(project, File.join(commit.id, path))
  111 + end
  112 +
  113 + it { @blob_path.should be_allowed_for master }
  114 + it { @blob_path.should be_allowed_for reporter }
  115 + it { @blob_path.should be_allowed_for :admin }
  116 + it { @blob_path.should be_allowed_for guest }
  117 + it { @blob_path.should be_allowed_for :user }
  118 + it { @blob_path.should be_allowed_for :visitor }
  119 + end
  120 +
  121 + describe "GET /:project_path/edit" do
  122 + subject { edit_project_path(project) }
  123 +
  124 + it { should be_allowed_for master }
  125 + it { should be_denied_for reporter }
  126 + it { should be_allowed_for :admin }
  127 + it { should be_denied_for guest }
  128 + it { should be_denied_for :user }
  129 + it { should be_denied_for :visitor }
  130 + end
  131 +
  132 + describe "GET /:project_path/deploy_keys" do
  133 + subject { project_deploy_keys_path(project) }
  134 +
  135 + it { should be_allowed_for master }
  136 + it { should be_denied_for reporter }
  137 + it { should be_allowed_for :admin }
  138 + it { should be_denied_for guest }
  139 + it { should be_denied_for :user }
  140 + it { should be_denied_for :visitor }
  141 + end
  142 +
  143 + describe "GET /:project_path/issues" do
  144 + subject { project_issues_path(project) }
  145 +
  146 + it { should be_allowed_for master }
  147 + it { should be_allowed_for reporter }
  148 + it { should be_allowed_for :admin }
  149 + it { should be_allowed_for guest }
  150 + it { should be_allowed_for :user }
  151 + it { should be_allowed_for :visitor }
  152 + end
  153 +
  154 + describe "GET /:project_path/snippets" do
  155 + subject { project_snippets_path(project) }
  156 +
  157 + it { should be_allowed_for master }
  158 + it { should be_allowed_for reporter }
  159 + it { should be_allowed_for :admin }
  160 + it { should be_allowed_for guest }
  161 + it { should be_allowed_for :user }
  162 + it { should be_allowed_for :visitor }
  163 + end
  164 +
  165 + describe "GET /:project_path/snippets/new" do
  166 + subject { new_project_snippet_path(project) }
  167 +
  168 + it { should be_allowed_for master }
  169 + it { should be_allowed_for reporter }
  170 + it { should be_allowed_for :admin }
  171 + it { should be_denied_for guest }
  172 + it { should be_denied_for :user }
  173 + it { should be_denied_for :visitor }
  174 + end
  175 +
  176 + describe "GET /:project_path/merge_requests" do
  177 + subject { project_merge_requests_path(project) }
  178 +
  179 + it { should be_allowed_for master }
  180 + it { should be_allowed_for reporter }
  181 + it { should be_allowed_for :admin }
  182 + it { should be_allowed_for guest }
  183 + it { should be_allowed_for :user }
  184 + it { should be_allowed_for :visitor }
  185 + end
  186 +
  187 + describe "GET /:project_path/merge_requests/new" do
  188 + subject { new_project_merge_request_path(project) }
  189 +
  190 + it { should be_allowed_for master }
  191 + it { should be_denied_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/branches/recent" do
  199 + subject { recent_project_branches_path(project) }
  200 +
  201 + it { should be_allowed_for master }
  202 + it { should be_allowed_for reporter }
  203 + it { should be_allowed_for :admin }
  204 + it { should be_allowed_for guest }
  205 + it { should be_allowed_for :user }
  206 + it { should be_allowed_for :visitor }
  207 + end
  208 +
  209 + describe "GET /:project_path/branches" do
  210 + subject { project_branches_path(project) }
  211 +
  212 + before do
  213 + # Speed increase
  214 + Project.any_instance.stub(:branches).and_return([])
  215 + end
  216 +
  217 + it { should be_allowed_for master }
  218 + it { should be_allowed_for reporter }
  219 + it { should be_allowed_for :admin }
  220 + it { should be_allowed_for guest }
  221 + it { should be_allowed_for :user }
  222 + it { should be_allowed_for :visitor }
  223 + end
  224 +
  225 + describe "GET /:project_path/tags" do
  226 + subject { project_tags_path(project) }
  227 +
  228 + before do
  229 + # Speed increase
  230 + Project.any_instance.stub(:tags).and_return([])
  231 + end
  232 +
  233 + it { should be_allowed_for master }
  234 + it { should be_allowed_for reporter }
  235 + it { should be_allowed_for :admin }
  236 + it { should be_allowed_for guest }
  237 + it { should be_allowed_for :user }
  238 + it { should be_allowed_for :visitor }
  239 + end
  240 +
  241 + describe "GET /:project_path/hooks" do
  242 + subject { project_hooks_path(project) }
  243 +
  244 + it { should be_allowed_for master }
  245 + it { should be_denied_for reporter }
  246 + it { should be_allowed_for :admin }
  247 + it { should be_denied_for guest }
  248 + it { should be_denied_for :user }
  249 + it { should be_denied_for :visitor }
  250 + end
  251 +end
spec/features/security/project_access_spec.rb
@@ -1,474 +0,0 @@ @@ -1,474 +0,0 @@
1 -require 'spec_helper'  
2 -  
3 -describe "Application access" do  
4 - describe "GET /" do  
5 - it { root_path.should be_allowed_for :admin }  
6 - it { root_path.should be_allowed_for :user }  
7 - it { root_path.should be_denied_for :visitor }  
8 - end  
9 -  
10 - describe "GET /projects/new" do  
11 - it { new_project_path.should be_allowed_for :admin }  
12 - it { new_project_path.should be_allowed_for :user }  
13 - it { new_project_path.should be_denied_for :visitor }  
14 - end  
15 -  
16 - describe "Project" do  
17 - let(:project) { create(:project_with_code) }  
18 -  
19 - let(:master) { create(:user) }  
20 - let(:guest) { create(:user) }  
21 - let(:reporter) { create(:user) }  
22 -  
23 - before do  
24 - # full access  
25 - project.team << [master, :master]  
26 -  
27 - # readonly  
28 - project.team << [reporter, :reporter]  
29 - end  
30 -  
31 - describe "GET /project_code" do  
32 - subject { project_path(project) }  
33 -  
34 - it { should be_allowed_for master }  
35 - it { should be_allowed_for reporter }  
36 - it { should be_allowed_for :admin }  
37 - it { should be_denied_for guest }  
38 - it { should be_denied_for :user }  
39 - it { should be_denied_for :visitor }  
40 - end  
41 -  
42 - describe "GET /project_code/tree/master" do  
43 - subject { project_tree_path(project, project.repository.root_ref) }  
44 -  
45 - it { should be_allowed_for master }  
46 - it { should be_allowed_for reporter }  
47 - it { should be_allowed_for :admin }  
48 - it { should be_denied_for guest }  
49 - it { should be_denied_for :user }  
50 - it { should be_denied_for :visitor }  
51 - end  
52 -  
53 - describe "GET /project_code/commits/master" do  
54 - subject { project_commits_path(project, project.repository.root_ref, limit: 1) }  
55 -  
56 - it { should be_allowed_for master }  
57 - it { should be_allowed_for reporter }  
58 - it { should be_allowed_for :admin }  
59 - it { should be_denied_for guest }  
60 - it { should be_denied_for :user }  
61 - it { should be_denied_for :visitor }  
62 - end  
63 -  
64 - describe "GET /project_code/commit/:sha" do  
65 - subject { project_commit_path(project, project.repository.commit) }  
66 -  
67 - it { should be_allowed_for master }  
68 - it { should be_allowed_for reporter }  
69 - it { should be_allowed_for :admin }  
70 - it { should be_denied_for guest }  
71 - it { should be_denied_for :user }  
72 - it { should be_denied_for :visitor }  
73 - end  
74 -  
75 - describe "GET /project_code/compare" do  
76 - subject { project_compare_index_path(project) }  
77 -  
78 - it { should be_allowed_for master }  
79 - it { should be_allowed_for reporter }  
80 - it { should be_allowed_for :admin }  
81 - it { should be_denied_for guest }  
82 - it { should be_denied_for :user }  
83 - it { should be_denied_for :visitor }  
84 - end  
85 -  
86 - describe "GET /project_code/team" do  
87 - subject { project_team_index_path(project) }  
88 -  
89 - it { should be_allowed_for master }  
90 - it { should be_allowed_for reporter }  
91 - it { should be_allowed_for :admin }  
92 - it { should be_denied_for guest }  
93 - it { should be_denied_for :user }  
94 - it { should be_denied_for :visitor }  
95 - end  
96 -  
97 - describe "GET /project_code/wall" do  
98 - subject { project_wall_path(project) }  
99 -  
100 - it { should be_allowed_for master }  
101 - it { should be_allowed_for reporter }  
102 - it { should be_allowed_for :admin }  
103 - it { should be_denied_for guest }  
104 - it { should be_denied_for :user }  
105 - it { should be_denied_for :visitor }  
106 - end  
107 -  
108 - describe "GET /project_code/blob" do  
109 - before do  
110 - commit = project.repository.commit  
111 - path = commit.tree.contents.select { |i| i.is_a?(Grit::Blob) }.first.name  
112 - @blob_path = project_blob_path(project, File.join(commit.id, path))  
113 - end  
114 -  
115 - it { @blob_path.should be_allowed_for master }  
116 - it { @blob_path.should be_allowed_for reporter }  
117 - it { @blob_path.should be_allowed_for :admin }  
118 - it { @blob_path.should be_denied_for guest }  
119 - it { @blob_path.should be_denied_for :user }  
120 - it { @blob_path.should be_denied_for :visitor }  
121 - end  
122 -  
123 - describe "GET /project_code/edit" do  
124 - subject { edit_project_path(project) }  
125 -  
126 - it { should be_allowed_for master }  
127 - it { should be_denied_for reporter }  
128 - it { should be_allowed_for :admin }  
129 - it { should be_denied_for guest }  
130 - it { should be_denied_for :user }  
131 - it { should be_denied_for :visitor }  
132 - end  
133 -  
134 - describe "GET /project_code/deploy_keys" do  
135 - subject { project_deploy_keys_path(project) }  
136 -  
137 - it { should be_allowed_for master }  
138 - it { should be_denied_for reporter }  
139 - it { should be_allowed_for :admin }  
140 - it { should be_denied_for guest }  
141 - it { should be_denied_for :user }  
142 - it { should be_denied_for :visitor }  
143 - end  
144 -  
145 - describe "GET /project_code/issues" do  
146 - subject { project_issues_path(project) }  
147 -  
148 - it { should be_allowed_for master }  
149 - it { should be_allowed_for reporter }  
150 - it { should be_allowed_for :admin }  
151 - it { should be_denied_for guest }  
152 - it { should be_denied_for :user }  
153 - it { should be_denied_for :visitor }  
154 - end  
155 -  
156 - describe "GET /project_code/snippets" do  
157 - subject { project_snippets_path(project) }  
158 -  
159 - it { should be_allowed_for master }  
160 - it { should be_allowed_for reporter }  
161 - it { should be_allowed_for :admin }  
162 - it { should be_denied_for guest }  
163 - it { should be_denied_for :user }  
164 - it { should be_denied_for :visitor }  
165 - end  
166 -  
167 - describe "GET /project_code/merge_requests" do  
168 - subject { project_merge_requests_path(project) }  
169 -  
170 - it { should be_allowed_for master }  
171 - it { should be_allowed_for reporter }  
172 - it { should be_allowed_for :admin }  
173 - it { should be_denied_for guest }  
174 - it { should be_denied_for :user }  
175 - it { should be_denied_for :visitor }  
176 - end  
177 -  
178 - describe "GET /project_code/branches/recent" do  
179 - subject { recent_project_branches_path(project) }  
180 -  
181 - it { should be_allowed_for master }  
182 - it { should be_allowed_for reporter }  
183 - it { should be_allowed_for :admin }  
184 - it { should be_denied_for guest }  
185 - it { should be_denied_for :user }  
186 - it { should be_denied_for :visitor }  
187 - end  
188 -  
189 - describe "GET /project_code/branches" do  
190 - subject { project_branches_path(project) }  
191 -  
192 - before do  
193 - # Speed increase  
194 - Project.any_instance.stub(:branches).and_return([])  
195 - end  
196 -  
197 - it { should be_allowed_for master }  
198 - it { should be_allowed_for reporter }  
199 - it { should be_allowed_for :admin }  
200 - it { should be_denied_for guest }  
201 - it { should be_denied_for :user }  
202 - it { should be_denied_for :visitor }  
203 - end  
204 -  
205 - describe "GET /project_code/tags" do  
206 - subject { project_tags_path(project) }  
207 -  
208 - before do  
209 - # Speed increase  
210 - Project.any_instance.stub(:tags).and_return([])  
211 - end  
212 -  
213 - it { should be_allowed_for master }  
214 - it { should be_allowed_for reporter }  
215 - it { should be_allowed_for :admin }  
216 - it { should be_denied_for guest }  
217 - it { should be_denied_for :user }  
218 - it { should be_denied_for :visitor }  
219 - end  
220 -  
221 - describe "GET /project_code/hooks" do  
222 - subject { project_hooks_path(project) }  
223 -  
224 - it { should be_allowed_for master }  
225 - it { should be_allowed_for reporter }  
226 - it { should be_allowed_for :admin }  
227 - it { should be_denied_for guest }  
228 - it { should be_denied_for :user }  
229 - it { should be_denied_for :visitor }  
230 - end  
231 - end  
232 -  
233 -  
234 - describe "PublicProject" do  
235 - let(:project) { create(:project_with_code) }  
236 -  
237 - let(:master) { create(:user) }  
238 - let(:guest) { create(:user) }  
239 - let(:reporter) { create(:user) }  
240 -  
241 - let(:admin) { create(:user) }  
242 -  
243 - before do  
244 - # public project  
245 - project.public = true  
246 - project.save!  
247 -  
248 - # full access  
249 - project.team << [master, :master]  
250 -  
251 - # readonly  
252 - project.team << [reporter, :reporter]  
253 -  
254 - end  
255 -  
256 - describe "Project should be public" do  
257 - subject { project }  
258 -  
259 - its(:public?) { should be_true }  
260 - end  
261 -  
262 - describe "GET /project_code" do  
263 - subject { project_path(project) }  
264 -  
265 - it { should be_allowed_for master }  
266 - it { should be_allowed_for reporter }  
267 - it { should be_allowed_for admin }  
268 - it { should be_allowed_for guest }  
269 - it { should be_allowed_for :user }  
270 - it { should be_denied_for :visitor }  
271 - end  
272 -  
273 - describe "GET /project_code/tree/master" do  
274 - subject { project_tree_path(project, project.repository.root_ref) }  
275 -  
276 - it { should be_allowed_for master }  
277 - it { should be_allowed_for reporter }  
278 - it { should be_allowed_for :admin }  
279 - it { should be_allowed_for guest }  
280 - it { should be_allowed_for :user }  
281 - it { should be_denied_for :visitor }  
282 - end  
283 -  
284 - describe "GET /project_code/commits/master" do  
285 - subject { project_commits_path(project, project.repository.root_ref, limit: 1) }  
286 -  
287 - it { should be_allowed_for master }  
288 - it { should be_allowed_for reporter }  
289 - it { should be_allowed_for :admin }  
290 - it { should be_allowed_for guest }  
291 - it { should be_allowed_for :user }  
292 - it { should be_denied_for :visitor }  
293 - end  
294 -  
295 - describe "GET /project_code/commit/:sha" do  
296 - subject { project_commit_path(project, project.repository.commit) }  
297 -  
298 - it { should be_allowed_for master }  
299 - it { should be_allowed_for reporter }  
300 - it { should be_allowed_for :admin }  
301 - it { should be_allowed_for guest }  
302 - it { should be_allowed_for :user }  
303 - it { should be_denied_for :visitor }  
304 - end  
305 -  
306 - describe "GET /project_code/compare" do  
307 - subject { project_compare_index_path(project) }  
308 -  
309 - it { should be_allowed_for master }  
310 - it { should be_allowed_for reporter }  
311 - it { should be_allowed_for :admin }  
312 - it { should be_allowed_for guest }  
313 - it { should be_allowed_for :user }  
314 - it { should be_denied_for :visitor }  
315 - end  
316 -  
317 - describe "GET /project_code/team" do  
318 - subject { project_team_index_path(project) }  
319 -  
320 - it { should be_allowed_for master }  
321 - it { should be_allowed_for reporter }  
322 - it { should be_allowed_for :admin }  
323 - it { should be_allowed_for guest }  
324 - it { should be_allowed_for :user }  
325 - it { should be_denied_for :visitor }  
326 - end  
327 -  
328 - describe "GET /project_code/wall" do  
329 - subject { project_wall_path(project) }  
330 -  
331 - it { should be_allowed_for master }  
332 - it { should be_allowed_for reporter }  
333 - it { should be_allowed_for :admin }  
334 - it { should be_allowed_for guest }  
335 - it { should be_allowed_for :user }  
336 - it { should be_denied_for :visitor }  
337 - end  
338 -  
339 - describe "GET /project_code/blob" do  
340 - before do  
341 - commit = project.repository.commit  
342 - path = commit.tree.contents.select { |i| i.is_a?(Grit::Blob) }.first.name  
343 - @blob_path = project_blob_path(project, File.join(commit.id, path))  
344 - end  
345 -  
346 - it { @blob_path.should be_allowed_for master }  
347 - it { @blob_path.should be_allowed_for reporter }  
348 - it { @blob_path.should be_allowed_for :admin }  
349 - it { @blob_path.should be_allowed_for guest }  
350 - it { @blob_path.should be_allowed_for :user }  
351 - it { @blob_path.should be_denied_for :visitor }  
352 - end  
353 -  
354 - describe "GET /project_code/edit" do  
355 - subject { edit_project_path(project) }  
356 -  
357 - it { should be_allowed_for master }  
358 - it { should be_denied_for reporter }  
359 - it { should be_allowed_for :admin }  
360 - it { should be_denied_for guest }  
361 - it { should be_denied_for :user }  
362 - it { should be_denied_for :visitor }  
363 - end  
364 -  
365 - describe "GET /project_code/deploy_keys" do  
366 - subject { project_deploy_keys_path(project) }  
367 -  
368 - it { should be_allowed_for master }  
369 - it { should be_denied_for reporter }  
370 - it { should be_allowed_for :admin }  
371 - it { should be_denied_for guest }  
372 - it { should be_denied_for :user }  
373 - it { should be_denied_for :visitor }  
374 - end  
375 -  
376 - describe "GET /project_code/issues" do  
377 - subject { project_issues_path(project) }  
378 -  
379 - it { should be_allowed_for master }  
380 - it { should be_allowed_for reporter }  
381 - it { should be_allowed_for :admin }  
382 - it { should be_allowed_for guest }  
383 - it { should be_allowed_for :user }  
384 - it { should be_denied_for :visitor }  
385 - end  
386 -  
387 - describe "GET /project_code/snippets" do  
388 - subject { project_snippets_path(project) }  
389 -  
390 - it { should be_allowed_for master }  
391 - it { should be_allowed_for reporter }  
392 - it { should be_allowed_for :admin }  
393 - it { should be_allowed_for guest }  
394 - it { should be_allowed_for :user }  
395 - it { should be_denied_for :visitor }  
396 - end  
397 -  
398 - describe "GET /project_code/snippets/new" do  
399 - subject { new_project_snippet_path(project) }  
400 -  
401 - it { should be_allowed_for master }  
402 - it { should be_allowed_for reporter }  
403 - it { should be_allowed_for :admin }  
404 - it { should be_denied_for guest }  
405 - it { should be_denied_for :user }  
406 - it { should be_denied_for :visitor }  
407 - end  
408 -  
409 - describe "GET /project_code/merge_requests" do  
410 - subject { project_merge_requests_path(project) }  
411 -  
412 - it { should be_allowed_for master }  
413 - it { should be_allowed_for reporter }  
414 - it { should be_allowed_for :admin }  
415 - it { should be_allowed_for guest }  
416 - it { should be_allowed_for :user }  
417 - it { should be_denied_for :visitor }  
418 - end  
419 -  
420 - describe "GET /project_code/branches/recent" do  
421 - subject { recent_project_branches_path(project) }  
422 -  
423 - it { should be_allowed_for master }  
424 - it { should be_allowed_for reporter }  
425 - it { should be_allowed_for :admin }  
426 - it { should be_allowed_for guest }  
427 - it { should be_allowed_for :user }  
428 - it { should be_denied_for :visitor }  
429 - end  
430 -  
431 - describe "GET /project_code/branches" do  
432 - subject { project_branches_path(project) }  
433 -  
434 - before do  
435 - # Speed increase  
436 - Project.any_instance.stub(:branches).and_return([])  
437 - end  
438 -  
439 - it { should be_allowed_for master }  
440 - it { should be_allowed_for reporter }  
441 - it { should be_allowed_for :admin }  
442 - it { should be_allowed_for guest }  
443 - it { should be_allowed_for :user }  
444 - it { should be_denied_for :visitor }  
445 - end  
446 -  
447 - describe "GET /project_code/tags" do  
448 - subject { project_tags_path(project) }  
449 -  
450 - before do  
451 - # Speed increase  
452 - Project.any_instance.stub(:tags).and_return([])  
453 - end  
454 -  
455 - it { should be_allowed_for master }  
456 - it { should be_allowed_for reporter }  
457 - it { should be_allowed_for :admin }  
458 - it { should be_allowed_for guest }  
459 - it { should be_allowed_for :user }  
460 - it { should be_denied_for :visitor }  
461 - end  
462 -  
463 - describe "GET /project_code/hooks" do  
464 - subject { project_hooks_path(project) }  
465 -  
466 - it { should be_allowed_for master }  
467 - it { should be_allowed_for reporter }  
468 - it { should be_allowed_for :admin }  
469 - it { should be_allowed_for guest }  
470 - it { should be_allowed_for :user }  
471 - it { should be_denied_for :visitor }  
472 - end  
473 - end  
474 -end