Commit 6e78a1d7c8d8fe433a120f403d40379919d958db
Exists in
master
and in
4 other branches
Merge branch 'improve/project_transfer'
Showing
21 changed files
with
154 additions
and
356 deletions
Show diff stats
... | ... | @@ -0,0 +1,27 @@ |
1 | +module Projects | |
2 | + class TransferContext < BaseContext | |
3 | + def execute(role = :default) | |
4 | + namespace_id = params[:project].delete(:namespace_id) | |
5 | + allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin | |
6 | + | |
7 | + if allowed_transfer && namespace_id.present? | |
8 | + if namespace_id == Namespace.global_id | |
9 | + if project.namespace.present? | |
10 | + # Transfer to global namespace from anyone | |
11 | + project.transfer(nil) | |
12 | + end | |
13 | + elsif namespace_id.to_i != project.namespace_id | |
14 | + # Transfer to someone namespace | |
15 | + namespace = Namespace.find(namespace_id) | |
16 | + project.transfer(namespace) | |
17 | + end | |
18 | + end | |
19 | + | |
20 | + rescue ProjectTransferService::TransferError => ex | |
21 | + project.reload | |
22 | + project.errors.add(:namespace_id, ex.message) | |
23 | + false | |
24 | + end | |
25 | + end | |
26 | +end | |
27 | + | ... | ... |
app/contexts/projects/update_context.rb
1 | 1 | module Projects |
2 | 2 | class UpdateContext < BaseContext |
3 | 3 | def execute(role = :default) |
4 | - namespace_id = params[:project].delete(:namespace_id) | |
4 | + params[:project].delete(:namespace_id) | |
5 | 5 | params[:project].delete(:public) unless can?(current_user, :change_public_mode, project) |
6 | - | |
7 | - allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin | |
8 | - | |
9 | - if allowed_transfer && namespace_id.present? | |
10 | - if namespace_id == Namespace.global_id | |
11 | - if project.namespace.present? | |
12 | - # Transfer to global namespace from anyone | |
13 | - project.transfer(nil) | |
14 | - end | |
15 | - elsif namespace_id.to_i != project.namespace_id | |
16 | - # Transfer to someone namespace | |
17 | - namespace = Namespace.find(namespace_id) | |
18 | - project.transfer(namespace) | |
19 | - end | |
20 | - end | |
21 | - | |
22 | 6 | project.update_attributes(params[:project], as: role) |
23 | 7 | end |
24 | 8 | end | ... | ... |
app/controllers/admin/projects_controller.rb
... | ... | @@ -19,34 +19,6 @@ class Admin::ProjectsController < Admin::ApplicationController |
19 | 19 | @users = @users.all |
20 | 20 | end |
21 | 21 | |
22 | - def edit | |
23 | - end | |
24 | - | |
25 | - def team_update | |
26 | - @project.team.add_users_ids(params[:user_ids], params[:project_access]) | |
27 | - | |
28 | - redirect_to [:admin, @project], notice: 'Project was successfully updated.' | |
29 | - end | |
30 | - | |
31 | - def update | |
32 | - project.creator = current_user unless project.creator | |
33 | - | |
34 | - status = ::Projects::UpdateContext.new(project, current_user, params).execute(:admin) | |
35 | - | |
36 | - if status | |
37 | - redirect_to [:admin, @project], notice: 'Project was successfully updated.' | |
38 | - else | |
39 | - render action: "edit" | |
40 | - end | |
41 | - end | |
42 | - | |
43 | - def destroy | |
44 | - @project.team.truncate | |
45 | - @project.destroy | |
46 | - | |
47 | - redirect_to admin_projects_path, notice: 'Project was successfully deleted.' | |
48 | - end | |
49 | - | |
50 | 22 | protected |
51 | 23 | |
52 | 24 | def project | ... | ... |
app/controllers/projects_controller.rb
... | ... | @@ -4,7 +4,7 @@ class ProjectsController < ProjectResourceController |
4 | 4 | |
5 | 5 | # Authorize |
6 | 6 | before_filter :authorize_read_project!, except: [:index, :new, :create] |
7 | - before_filter :authorize_admin_project!, only: [:edit, :update, :destroy] | |
7 | + before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer] | |
8 | 8 | before_filter :require_non_empty_project, only: [:blob, :tree, :graph] |
9 | 9 | |
10 | 10 | layout 'application', only: [:new, :create] |
... | ... | @@ -45,10 +45,10 @@ class ProjectsController < ProjectResourceController |
45 | 45 | format.js |
46 | 46 | end |
47 | 47 | end |
48 | + end | |
48 | 49 | |
49 | - rescue Project::TransferError => ex | |
50 | - @error = ex | |
51 | - render :update_failed | |
50 | + def transfer | |
51 | + ::Projects::TransferContext.new(project, current_user, params).execute | |
52 | 52 | end |
53 | 53 | |
54 | 54 | def show | ... | ... |
app/models/ability.rb
app/models/project.rb
... | ... | @@ -26,8 +26,6 @@ class Project < ActiveRecord::Base |
26 | 26 | include Gitlab::ShellAdapter |
27 | 27 | extend Enumerize |
28 | 28 | |
29 | - class TransferError < StandardError; end | |
30 | - | |
31 | 29 | attr_accessible :name, :path, :description, :default_branch, :issues_tracker, |
32 | 30 | :issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, |
33 | 31 | :wiki_enabled, :public, :import_url, as: [:default, :admin] | ... | ... |
app/services/project_transfer_service.rb
... | ... | @@ -5,6 +5,8 @@ |
5 | 5 | class ProjectTransferService |
6 | 6 | include Gitlab::ShellAdapter |
7 | 7 | |
8 | + class TransferError < StandardError; end | |
9 | + | |
8 | 10 | attr_accessor :project |
9 | 11 | |
10 | 12 | def transfer(project, new_namespace) |
... | ... | @@ -19,14 +21,18 @@ class ProjectTransferService |
19 | 21 | project.namespace = new_namespace |
20 | 22 | project.save! |
21 | 23 | |
24 | + # Move main repository | |
22 | 25 | unless gitlab_shell.mv_repository(old_path, new_path) |
23 | 26 | raise TransferError.new('Cannot move project') |
24 | 27 | end |
25 | 28 | |
29 | + # Move wiki repo also if present | |
30 | + if project.wikis.any? | |
31 | + gitlab_shell.mv_repository("#{old_path}.wiki", "#{new_path}.wiki") | |
32 | + end | |
33 | + | |
26 | 34 | true |
27 | 35 | end |
28 | - rescue => ex | |
29 | - raise Project::TransferError.new(ex.message) | |
30 | 36 | end |
31 | 37 | end |
32 | 38 | ... | ... |
app/views/admin/projects/_form.html.haml
... | ... | @@ -1,86 +0,0 @@ |
1 | -= form_for [:admin, project] do |f| | |
2 | - -if project.errors.any? | |
3 | - .alert.alert-error | |
4 | - %ul | |
5 | - - project.errors.full_messages.each do |msg| | |
6 | - %li= msg | |
7 | - | |
8 | - .clearfix.project_name_holder | |
9 | - = f.label :name do | |
10 | - Project name is | |
11 | - .input | |
12 | - = f.text_field :name, placeholder: "Example Project", class: "xxlarge" | |
13 | - | |
14 | - - if project.repo_exists? | |
15 | - %fieldset.adv_settings | |
16 | - %legend Advanced settings: | |
17 | - .clearfix | |
18 | - = f.label :path do | |
19 | - Path | |
20 | - .input | |
21 | - = text_field_tag :ppath, @project.repository.path_to_repo, class: "xlarge", disabled: true | |
22 | - | |
23 | - .clearfix | |
24 | - = f.label :default_branch, "Default Branch" | |
25 | - .input= f.select(:default_branch, @project.repository.heads.map(&:name), {}, style: "width:210px;") | |
26 | - | |
27 | - %fieldset.adv_settings | |
28 | - %legend Features: | |
29 | - | |
30 | - .clearfix | |
31 | - = f.label :issues_enabled, "Issues" | |
32 | - .input= f.check_box :issues_enabled | |
33 | - | |
34 | - - if Project.issues_tracker.values.count > 1 | |
35 | - .clearfix | |
36 | - = f.label :issues_tracker, "Issues tracker", class: 'control-label' | |
37 | - .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) | |
38 | - | |
39 | - .clearfix | |
40 | - = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label' | |
41 | - .input= f.text_field :issues_tracker_id, class: "xxlarge", disabled: !@project.can_have_issues_tracker_id? | |
42 | - | |
43 | - .clearfix | |
44 | - = f.label :merge_requests_enabled, "Merge Requests" | |
45 | - .input= f.check_box :merge_requests_enabled | |
46 | - | |
47 | - .clearfix | |
48 | - = f.label :wall_enabled, "Wall" | |
49 | - .input= f.check_box :wall_enabled | |
50 | - | |
51 | - .clearfix | |
52 | - = f.label :wiki_enabled, "Wiki" | |
53 | - .input= f.check_box :wiki_enabled | |
54 | - | |
55 | - %fieldset.features | |
56 | - %legend Public mode: | |
57 | - .clearfix | |
58 | - = f.label :public do | |
59 | - %span Allow public http clone | |
60 | - .input= f.check_box :public | |
61 | - | |
62 | - %fieldset.features | |
63 | - %legend Transfer: | |
64 | - .control-group | |
65 | - = f.label :namespace_id do | |
66 | - %span Namespace | |
67 | - .controls | |
68 | - = f.select :namespace_id, namespaces_options(@project.namespace_id, :all), {}, {class: 'chosen'} | |
69 | - %br | |
70 | - %ul.prepend-top-10.cred | |
71 | - %li Be careful. Changing project namespace can have unintended side effects | |
72 | - %li You can transfer project only to namespaces you can manage | |
73 | - %li You will need to update your local repositories to point to the new location. | |
74 | - | |
75 | - | |
76 | - .actions | |
77 | - = f.submit 'Save Project', class: "btn btn-save" | |
78 | - = link_to 'Cancel', admin_projects_path, class: "btn btn-cancel" | |
79 | - | |
80 | - | |
81 | - | |
82 | -:javascript | |
83 | - $(function(){ | |
84 | - new Projects(); | |
85 | - }) | |
86 | - |
app/views/admin/projects/edit.html.haml
app/views/admin/projects/index.html.haml
... | ... | @@ -52,8 +52,8 @@ |
52 | 52 | %i.icon-lock.cgreen |
53 | 53 | = link_to project.name_with_namespace, [:admin, project] |
54 | 54 | .pull-right |
55 | - = link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small" | |
56 | - = link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove" | |
55 | + = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small" | |
56 | + = link_to 'Destroy', [project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove" | |
57 | 57 | - if @projects.blank? |
58 | 58 | %p.nothing_here_message 0 projects matches |
59 | 59 | - else | ... | ... |
app/views/admin/projects/show.html.haml
1 | 1 | %h3.page_title |
2 | 2 | Project: #{@project.name_with_namespace} |
3 | - = link_to edit_admin_project_path(@project), class: "btn pull-right" do | |
3 | + = link_to edit_project_path(@project), class: "btn pull-right" do | |
4 | 4 | %i.icon-edit |
5 | 5 | Edit |
6 | +%hr | |
7 | +.row | |
8 | + .span6 | |
9 | + .ui-box | |
10 | + %h5.title | |
11 | + Project info: | |
12 | + %ul.well-list | |
13 | + %li | |
14 | + %span.light Name: | |
15 | + %strong= @project.name | |
16 | + %li | |
17 | + %span.light Namespace: | |
18 | + %strong | |
19 | + - if @project.namespace | |
20 | + = link_to @project.namespace.human_name, [:admin, @project.group || @project.owner] | |
21 | + - else | |
22 | + Global | |
23 | + %li | |
24 | + %span.light Owned by: | |
25 | + %strong | |
26 | + - if @project.owner | |
27 | + = link_to @project.owner_name, admin_user_path(@project.owner) | |
28 | + - else | |
29 | + (deleted) | |
6 | 30 | |
31 | + %li | |
32 | + %span.light Created by: | |
33 | + %strong | |
34 | + = @project.creator.try(:name) || '(deleted)' | |
7 | 35 | |
8 | -%br | |
9 | -%table.zebra-striped | |
10 | - %thead | |
11 | - %tr | |
12 | - %th Project | |
13 | - %th | |
14 | - %tr | |
15 | - %td | |
16 | - %b | |
17 | - Name: | |
18 | - %td | |
19 | - = @project.name | |
20 | - %tr | |
21 | - %td | |
22 | - %b | |
23 | - Namespace: | |
24 | - %td | |
25 | - - if @project.namespace | |
26 | - = @project.namespace.human_name | |
27 | - - else | |
28 | - Global | |
29 | - %tr | |
30 | - %td | |
31 | - %b | |
32 | - Owned by: | |
33 | - %td | |
34 | - - if @project.owner | |
35 | - = link_to @project.owner_name, admin_user_path(@project.owner) | |
36 | - - else | |
37 | - (deleted) | |
38 | - %tr | |
39 | - %td | |
40 | - %b | |
41 | - Created by: | |
42 | - %td | |
43 | - = @project.creator.try(:name) || '(deleted)' | |
44 | - %tr | |
45 | - %td | |
46 | - %b | |
47 | - Created at: | |
48 | - %td | |
49 | - = @project.created_at.stamp("March 1, 1999") | |
50 | - %tr | |
51 | - %td | |
52 | - %b | |
53 | - Smart HTTP: | |
54 | - %td | |
55 | - = link_to @project.http_url_to_repo | |
56 | - %tr | |
57 | - %td | |
58 | - %b | |
59 | - SSH: | |
60 | - %td | |
61 | - = link_to @project.ssh_url_to_repo | |
62 | - - if @project.public | |
63 | - %tr.bgred | |
64 | - %td | |
65 | - %b | |
66 | - Public Read-Only Code access: | |
67 | - %td | |
68 | - = check_box_tag 'public', nil, @project.public | |
36 | + %li | |
37 | + %span.light Created at: | |
38 | + %strong | |
39 | + = @project.created_at.stamp("March 1, 1999") | |
69 | 40 | |
70 | -- if @repository | |
71 | - %table.zebra-striped | |
72 | - %thead | |
73 | - %tr | |
74 | - %th Repository | |
75 | - %th | |
76 | - %tr | |
77 | - %td | |
78 | - %b | |
79 | - FS Path: | |
80 | - %td | |
81 | - %code= @repository.path_to_repo | |
82 | - %tr | |
83 | - %td | |
84 | - %b | |
85 | - Last commit at: | |
86 | - %td | |
87 | - = last_commit(@project) | |
41 | + %li | |
42 | + %span.light http: | |
43 | + %strong | |
44 | + = link_to @project.http_url_to_repo | |
45 | + %li | |
46 | + %span.light ssh: | |
47 | + %strong | |
48 | + = link_to @project.ssh_url_to_repo | |
49 | + %li | |
50 | + %span.light fs: | |
51 | + %strong | |
52 | + = @repository.path_to_repo | |
88 | 53 | |
89 | -%br | |
90 | -%h5 | |
91 | - Team | |
92 | - %small | |
93 | - (#{@project.users.count}) | |
94 | -%br | |
95 | -%table.zebra-striped.team_members | |
96 | - %thead | |
97 | - %tr | |
98 | - %th Name | |
99 | - %th Project Access | |
100 | - %th Repository Access | |
101 | - %th | |
54 | + %li | |
55 | + %span.light last commit: | |
56 | + %strong | |
57 | + - if @repository | |
58 | + = last_commit(@project) | |
59 | + - else | |
60 | + never | |
102 | 61 | |
103 | - - @project.users.each do |tm| | |
104 | - %tr | |
105 | - %td | |
106 | - = link_to tm.name, admin_user_path(tm) | |
107 | - %td= @project.project_access_human(tm) | |
108 | - %td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn btn-small" | |
109 | - %td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove small" | |
110 | - | |
111 | -%br | |
112 | -%h5 Add new team member | |
113 | -%br | |
114 | -= form_tag team_update_admin_project_path(@project), class: "bulk_import", method: :put do | |
115 | - %table.zebra-striped | |
116 | - %thead | |
117 | - %tr | |
118 | - %th Users | |
119 | - %th Project Access: | |
120 | - | |
121 | - %tr | |
122 | - %td= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5' | |
123 | - %td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"} | |
124 | - | |
125 | - %tr | |
126 | - %td= submit_tag 'Add', class: "btn btn-primary" | |
127 | - %td | |
128 | - Read more about project permissions | |
129 | - %strong= link_to "here", help_permissions_path, class: "vlink" | |
62 | + %li | |
63 | + %span.light access: | |
64 | + %strong | |
65 | + - if @project.public | |
66 | + %span.cblue | |
67 | + %i.icon-share | |
68 | + Public | |
69 | + - else | |
70 | + %span.cgreen | |
71 | + %i.icon-lock | |
72 | + Private | |
73 | + .span6 | |
74 | + .ui-box | |
75 | + %h5.title | |
76 | + Team | |
77 | + %small | |
78 | + (#{@project.users.count}) | |
79 | + = link_to project_team_index_path(@project), class: "btn btn-tiny" do | |
80 | + %i.icon-edit | |
81 | + Edit Team | |
82 | + %ul.well-list.team_members | |
83 | + - @project.users.each do |tm| | |
84 | + %li | |
85 | + %strong | |
86 | + = link_to tm.name, admin_user_path(tm) | |
87 | + %span.pull-right.light= @project.project_access_human(tm) | ... | ... |
app/views/admin/projects/team.html.haml
app/views/projects/_form.html.haml
... | ... | @@ -107,8 +107,9 @@ |
107 | 107 | - if can?(current_user, :change_namespace, @project) |
108 | 108 | .ui-box.ui-box-danger |
109 | 109 | %h5.title Transfer project |
110 | + .errors-holder | |
110 | 111 | .form-holder |
111 | - = form_for(@project, remote: true, html: { class: 'transfer-project' }) do |f| | |
112 | + = form_for(@project, url: transfer_project_path(@project), remote: true, html: { class: 'transfer-project' }) do |f| | |
112 | 113 | .control-group |
113 | 114 | = f.label :namespace_id do |
114 | 115 | %span Namespace | ... | ... |
... | ... | @@ -0,0 +1,7 @@ |
1 | +- if @project.errors[:namespace_id].present? | |
2 | + :plain | |
3 | + $("#tab-transfer .errors-holder").replaceWith(errorMessage('#{escape_javascript(@project.errors[:namespace_id].first)}')); | |
4 | + $("#tab-transfer .form-actions input").removeAttr('disabled').removeClass('disabled'); | |
5 | +- else | |
6 | + :plain | |
7 | + location.href = "#{edit_project_path(@project)}"; | ... | ... |
app/views/projects/update_failed.js.haml
config/routes.rb
... | ... | @@ -85,11 +85,7 @@ Gitlab::Application.routes.draw do |
85 | 85 | resource :logs, only: [:show] |
86 | 86 | resource :resque, controller: 'resque', only: [:show] |
87 | 87 | |
88 | - resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, except: [:new, :create] do | |
89 | - member do | |
90 | - get :team | |
91 | - put :team_update | |
92 | - end | |
88 | + resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, only: [:index, :show] do | |
93 | 89 | scope module: :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do |
94 | 90 | resources :members, only: [:edit, :update, :destroy] |
95 | 91 | end |
... | ... | @@ -167,6 +163,10 @@ Gitlab::Application.routes.draw do |
167 | 163 | # Project Area |
168 | 164 | # |
169 | 165 | resources :projects, constraints: { id: /(?:[a-zA-Z.0-9_\-]+\/)?[a-zA-Z.0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do |
166 | + member do | |
167 | + put :transfer | |
168 | + end | |
169 | + | |
170 | 170 | resources :blob, only: [:show], constraints: {id: /.+/} |
171 | 171 | resources :tree, only: [:show], constraints: {id: /.+/, format: /(html|js)/ } |
172 | 172 | resources :edit_tree, only: [:show, :update], constraints: {id: /.+/}, path: 'edit' | ... | ... |
features/steps/admin/admin_projects.rb
... | ... | @@ -16,9 +16,7 @@ class AdminProjects < Spinach::FeatureSteps |
16 | 16 | Then 'I should see project details' do |
17 | 17 | project = Project.first |
18 | 18 | current_path.should == admin_project_path(project) |
19 | - | |
20 | 19 | page.should have_content(project.name_with_namespace) |
21 | 20 | page.should have_content(project.creator.name) |
22 | - page.should have_content('Add new team member') | |
23 | 21 | end |
24 | 22 | end | ... | ... |
lib/tasks/gitlab/check.rake
... | ... | @@ -637,8 +637,8 @@ namespace :gitlab do |
637 | 637 | |
638 | 638 | def check_gitlab_shell |
639 | 639 | print "GitLab Shell version? ... " |
640 | - if gitlab_shell_version.strip == '1.1.0' | |
641 | - puts 'OK (1.1.0)'.green | |
640 | + if gitlab_shell_version.strip == '1.2.0' | |
641 | + puts 'OK (1.2.0)'.green | |
642 | 642 | else |
643 | 643 | puts 'FAIL. Please update gitlab-shell to v1.1.0'.red |
644 | 644 | end | ... | ... |
spec/features/admin/admin_projects_spec.rb
... | ... | @@ -31,46 +31,4 @@ describe "Admin::Projects" do |
31 | 31 | page.should have_content(@project.name) |
32 | 32 | end |
33 | 33 | end |
34 | - | |
35 | - describe "GET /admin/projects/:id/edit" do | |
36 | - before do | |
37 | - visit admin_projects_path | |
38 | - click_link "edit_project_#{@project.id}" | |
39 | - end | |
40 | - | |
41 | - it "should have project edit page" do | |
42 | - page.should have_content("Edit project") | |
43 | - page.should have_button("Save Project") | |
44 | - end | |
45 | - | |
46 | - describe "Update project" do | |
47 | - before do | |
48 | - fill_in "project_name", with: "Big Bang" | |
49 | - click_button "Save Project" | |
50 | - @project.reload | |
51 | - end | |
52 | - | |
53 | - it "should show page with new data" do | |
54 | - page.should have_content("Big Bang") | |
55 | - end | |
56 | - | |
57 | - it "should change project entry" do | |
58 | - @project.name.should == "Big Bang" | |
59 | - end | |
60 | - end | |
61 | - end | |
62 | - | |
63 | - describe "Add new team member" do | |
64 | - before do | |
65 | - @new_user = create(:user) | |
66 | - visit admin_project_path(@project) | |
67 | - end | |
68 | - | |
69 | - it "should create new user" do | |
70 | - select @new_user.name, from: "user_ids" | |
71 | - expect { click_button "Add" }.to change { UsersProject.count }.by(1) | |
72 | - page.should have_content @new_user.name | |
73 | - current_path.should == admin_project_path(@project) | |
74 | - end | |
75 | - end | |
76 | 34 | end | ... | ... |
spec/features/security/project_access_spec.rb
... | ... | @@ -33,7 +33,7 @@ describe "Application access" do |
33 | 33 | |
34 | 34 | it { should be_allowed_for master } |
35 | 35 | it { should be_allowed_for reporter } |
36 | - it { should be_denied_for :admin } | |
36 | + it { should be_allowed_for :admin } | |
37 | 37 | it { should be_denied_for guest } |
38 | 38 | it { should be_denied_for :user } |
39 | 39 | it { should be_denied_for :visitor } |
... | ... | @@ -44,7 +44,7 @@ describe "Application access" do |
44 | 44 | |
45 | 45 | it { should be_allowed_for master } |
46 | 46 | it { should be_allowed_for reporter } |
47 | - it { should be_denied_for :admin } | |
47 | + it { should be_allowed_for :admin } | |
48 | 48 | it { should be_denied_for guest } |
49 | 49 | it { should be_denied_for :user } |
50 | 50 | it { should be_denied_for :visitor } |
... | ... | @@ -55,7 +55,7 @@ describe "Application access" do |
55 | 55 | |
56 | 56 | it { should be_allowed_for master } |
57 | 57 | it { should be_allowed_for reporter } |
58 | - it { should be_denied_for :admin } | |
58 | + it { should be_allowed_for :admin } | |
59 | 59 | it { should be_denied_for guest } |
60 | 60 | it { should be_denied_for :user } |
61 | 61 | it { should be_denied_for :visitor } |
... | ... | @@ -66,7 +66,7 @@ describe "Application access" do |
66 | 66 | |
67 | 67 | it { should be_allowed_for master } |
68 | 68 | it { should be_allowed_for reporter } |
69 | - it { should be_denied_for :admin } | |
69 | + it { should be_allowed_for :admin } | |
70 | 70 | it { should be_denied_for guest } |
71 | 71 | it { should be_denied_for :user } |
72 | 72 | it { should be_denied_for :visitor } |
... | ... | @@ -77,7 +77,7 @@ describe "Application access" do |
77 | 77 | |
78 | 78 | it { should be_allowed_for master } |
79 | 79 | it { should be_allowed_for reporter } |
80 | - it { should be_denied_for :admin } | |
80 | + it { should be_allowed_for :admin } | |
81 | 81 | it { should be_denied_for guest } |
82 | 82 | it { should be_denied_for :user } |
83 | 83 | it { should be_denied_for :visitor } |
... | ... | @@ -88,7 +88,7 @@ describe "Application access" do |
88 | 88 | |
89 | 89 | it { should be_allowed_for master } |
90 | 90 | it { should be_allowed_for reporter } |
91 | - it { should be_denied_for :admin } | |
91 | + it { should be_allowed_for :admin } | |
92 | 92 | it { should be_denied_for guest } |
93 | 93 | it { should be_denied_for :user } |
94 | 94 | it { should be_denied_for :visitor } |
... | ... | @@ -99,7 +99,7 @@ describe "Application access" do |
99 | 99 | |
100 | 100 | it { should be_allowed_for master } |
101 | 101 | it { should be_allowed_for reporter } |
102 | - it { should be_denied_for :admin } | |
102 | + it { should be_allowed_for :admin } | |
103 | 103 | it { should be_denied_for guest } |
104 | 104 | it { should be_denied_for :user } |
105 | 105 | it { should be_denied_for :visitor } |
... | ... | @@ -114,7 +114,7 @@ describe "Application access" do |
114 | 114 | |
115 | 115 | it { @blob_path.should be_allowed_for master } |
116 | 116 | it { @blob_path.should be_allowed_for reporter } |
117 | - it { @blob_path.should be_denied_for :admin } | |
117 | + it { @blob_path.should be_allowed_for :admin } | |
118 | 118 | it { @blob_path.should be_denied_for guest } |
119 | 119 | it { @blob_path.should be_denied_for :user } |
120 | 120 | it { @blob_path.should be_denied_for :visitor } |
... | ... | @@ -125,7 +125,7 @@ describe "Application access" do |
125 | 125 | |
126 | 126 | it { should be_allowed_for master } |
127 | 127 | it { should be_denied_for reporter } |
128 | - it { should be_denied_for :admin } | |
128 | + it { should be_allowed_for :admin } | |
129 | 129 | it { should be_denied_for guest } |
130 | 130 | it { should be_denied_for :user } |
131 | 131 | it { should be_denied_for :visitor } |
... | ... | @@ -136,7 +136,7 @@ describe "Application access" do |
136 | 136 | |
137 | 137 | it { should be_allowed_for master } |
138 | 138 | it { should be_denied_for reporter } |
139 | - it { should be_denied_for :admin } | |
139 | + it { should be_allowed_for :admin } | |
140 | 140 | it { should be_denied_for guest } |
141 | 141 | it { should be_denied_for :user } |
142 | 142 | it { should be_denied_for :visitor } |
... | ... | @@ -147,7 +147,7 @@ describe "Application access" do |
147 | 147 | |
148 | 148 | it { should be_allowed_for master } |
149 | 149 | it { should be_allowed_for reporter } |
150 | - it { should be_denied_for :admin } | |
150 | + it { should be_allowed_for :admin } | |
151 | 151 | it { should be_denied_for guest } |
152 | 152 | it { should be_denied_for :user } |
153 | 153 | it { should be_denied_for :visitor } |
... | ... | @@ -158,7 +158,7 @@ describe "Application access" do |
158 | 158 | |
159 | 159 | it { should be_allowed_for master } |
160 | 160 | it { should be_allowed_for reporter } |
161 | - it { should be_denied_for :admin } | |
161 | + it { should be_allowed_for :admin } | |
162 | 162 | it { should be_denied_for guest } |
163 | 163 | it { should be_denied_for :user } |
164 | 164 | it { should be_denied_for :visitor } |
... | ... | @@ -169,7 +169,7 @@ describe "Application access" do |
169 | 169 | |
170 | 170 | it { should be_allowed_for master } |
171 | 171 | it { should be_allowed_for reporter } |
172 | - it { should be_denied_for :admin } | |
172 | + it { should be_allowed_for :admin } | |
173 | 173 | it { should be_denied_for guest } |
174 | 174 | it { should be_denied_for :user } |
175 | 175 | it { should be_denied_for :visitor } |
... | ... | @@ -180,7 +180,7 @@ describe "Application access" do |
180 | 180 | |
181 | 181 | it { should be_allowed_for master } |
182 | 182 | it { should be_allowed_for reporter } |
183 | - it { should be_denied_for :admin } | |
183 | + it { should be_allowed_for :admin } | |
184 | 184 | it { should be_denied_for guest } |
185 | 185 | it { should be_denied_for :user } |
186 | 186 | it { should be_denied_for :visitor } |
... | ... | @@ -196,7 +196,7 @@ describe "Application access" do |
196 | 196 | |
197 | 197 | it { should be_allowed_for master } |
198 | 198 | it { should be_allowed_for reporter } |
199 | - it { should be_denied_for :admin } | |
199 | + it { should be_allowed_for :admin } | |
200 | 200 | it { should be_denied_for guest } |
201 | 201 | it { should be_denied_for :user } |
202 | 202 | it { should be_denied_for :visitor } |
... | ... | @@ -212,7 +212,7 @@ describe "Application access" do |
212 | 212 | |
213 | 213 | it { should be_allowed_for master } |
214 | 214 | it { should be_allowed_for reporter } |
215 | - it { should be_denied_for :admin } | |
215 | + it { should be_allowed_for :admin } | |
216 | 216 | it { should be_denied_for guest } |
217 | 217 | it { should be_denied_for :user } |
218 | 218 | it { should be_denied_for :visitor } |
... | ... | @@ -223,7 +223,7 @@ describe "Application access" do |
223 | 223 | |
224 | 224 | it { should be_allowed_for master } |
225 | 225 | it { should be_allowed_for reporter } |
226 | - it { should be_denied_for :admin } | |
226 | + it { should be_allowed_for :admin } | |
227 | 227 | it { should be_denied_for guest } |
228 | 228 | it { should be_denied_for :user } |
229 | 229 | it { should be_denied_for :visitor } | ... | ... |
spec/routing/admin_routing_spec.rb
... | ... | @@ -66,33 +66,13 @@ end |
66 | 66 | # PUT /admin/projects/:id(.:format) admin/projects#update {:id=>/[^\/]+/} |
67 | 67 | # DELETE /admin/projects/:id(.:format) admin/projects#destroy {:id=>/[^\/]+/} |
68 | 68 | describe Admin::ProjectsController, "routing" do |
69 | - it "to #team" do | |
70 | - get("/admin/projects/gitlab/team").should route_to('admin/projects#team', id: 'gitlab') | |
71 | - end | |
72 | - | |
73 | - it "to #team_update" do | |
74 | - put("/admin/projects/gitlab/team_update").should route_to('admin/projects#team_update', id: 'gitlab') | |
75 | - end | |
76 | - | |
77 | 69 | it "to #index" do |
78 | 70 | get("/admin/projects").should route_to('admin/projects#index') |
79 | 71 | end |
80 | 72 | |
81 | - it "to #edit" do | |
82 | - get("/admin/projects/gitlab/edit").should route_to('admin/projects#edit', id: 'gitlab') | |
83 | - end | |
84 | - | |
85 | 73 | it "to #show" do |
86 | 74 | get("/admin/projects/gitlab").should route_to('admin/projects#show', id: 'gitlab') |
87 | 75 | end |
88 | - | |
89 | - it "to #update" do | |
90 | - put("/admin/projects/gitlab").should route_to('admin/projects#update', id: 'gitlab') | |
91 | - end | |
92 | - | |
93 | - it "to #destroy" do | |
94 | - delete("/admin/projects/gitlab").should route_to('admin/projects#destroy', id: 'gitlab') | |
95 | - end | |
96 | 76 | end |
97 | 77 | |
98 | 78 | # edit_admin_project_member GET /admin/projects/:project_id/members/:id/edit(.:format) admin/projects/members#edit {:id=>/[^\/]+/, :project_id=>/[^\/]+/} | ... | ... |