Merge branch 'issue-23306-fix' into 'master'

Add missing routes to make group edits work

6b90ccb9fd changed the routes so that users/groups can be accessed via`/:id`, but the Rails `form_for` method expects to use the `groups#show` path helper for the form action URL. This causes group edits and deletes to fail because the PUT/PATCH/DELETE methods did not exist for `/:id`.  This MR adds these methods so that `form_for` continues to work.

Closes #23306 


See merge request !6874
This commit is contained in:
Dmitriy Zaporozhets 2016-10-14 12:25:56 +00:00
commit 48d223d7c9
4 changed files with 61 additions and 43 deletions

View file

@ -3,6 +3,9 @@ require 'constraints/group_url_constrainer'
constraints(GroupUrlConstrainer.new) do
scope(path: ':id', as: :group, controller: :groups) do
get '/', action: :show
patch '/', action: :update
put '/', action: :update
delete '/', action: :destroy
end
end

View file

@ -39,11 +39,6 @@ Feature: Groups
When I visit group "Owned" merge requests page
Then I should not see merge requests from the archived project
Scenario: I should see edit group "Owned" page
When I visit group "Owned" settings page
And I change group "Owned" name to "new-name"
Then I should see new group "Owned" name
Scenario: I edit group "Owned" avatar
When I visit group "Owned" settings page
And I change group "Owned" avatar

View file

@ -73,18 +73,6 @@ class Spinach::Features::Groups < Spinach::FeatureSteps
author: current_user
end
step 'I change group "Owned" name to "new-name"' do
fill_in 'group_name', with: 'new-name'
fill_in 'group_path', with: 'new-name'
click_button "Save group"
end
step 'I should see new group "Owned" name' do
page.within ".navbar-gitlab" do
expect(page).to have_content "new-name"
end
end
step 'I change group "Owned" avatar' do
attach_file(:group_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif'))
click_button "Save group"

View file

@ -11,11 +11,12 @@ feature 'Group', feature: true do
end
end
describe 'creating a group with space in group path' do
describe 'create a group' do
before { visit new_group_path }
describe 'with space in group path' do
it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'space group'
click_button 'Create group'
expect(current_path).to eq(groups_path)
@ -23,11 +24,9 @@ feature 'Group', feature: true do
end
end
describe 'creating a group with .atom at end of group path' do
describe 'with .atom at end of group path' do
it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'atom_group.atom'
click_button 'Create group'
expect(current_path).to eq(groups_path)
@ -35,43 +34,76 @@ feature 'Group', feature: true do
end
end
describe 'creating a group with .git at end of group path' do
describe 'with .git at end of group path' do
it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'git_group.git'
click_button 'Create group'
expect(current_path).to eq(groups_path)
expect(page).to have_namespace_error_message
end
end
end
describe 'description' do
describe 'group edit' do
let(:group) { create(:group) }
let(:path) { edit_group_path(group) }
let(:new_name) { 'new-name' }
before { visit path }
it 'saves new settings' do
fill_in 'group_name', with: new_name
click_button 'Save group'
expect(page).to have_content 'successfully updated'
expect(find('#group_name').value).to eq(new_name)
page.within ".navbar-gitlab" do
expect(page).to have_content new_name
end
end
it 'removes group' do
click_link 'Remove Group'
expect(page).to have_content "scheduled for deletion"
end
end
describe 'group page with markdown description' do
let(:group) { create(:group) }
let(:path) { group_path(group) }
it 'parses Markdown' do
group.update_attribute(:description, 'This is **my** group')
visit path
expect(page).to have_css('.description > p > strong')
end
it 'passes through html-pipeline' do
group.update_attribute(:description, 'This group is the :poop:')
visit path
expect(page).to have_css('.description > p > img')
end
it 'sanitizes unwanted tags' do
group.update_attribute(:description, '# Group Description')
visit path
expect(page).not_to have_css('.description h1')
end
it 'permits `rel` attribute on links' do
group.update_attribute(:description, 'https://google.com/')
visit path
expect(page).to have_css('.description a[rel]')
end
end