Commit 48d223d7 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

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

Add missing routes to make group edits work

6b90ccb9 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
parents 66855f62 d7324f0e
...@@ -3,6 +3,9 @@ require 'constraints/group_url_constrainer' ...@@ -3,6 +3,9 @@ require 'constraints/group_url_constrainer'
constraints(GroupUrlConstrainer.new) do constraints(GroupUrlConstrainer.new) do
scope(path: ':id', as: :group, controller: :groups) do scope(path: ':id', as: :group, controller: :groups) do
get '/', action: :show get '/', action: :show
patch '/', action: :update
put '/', action: :update
delete '/', action: :destroy
end end
end end
......
...@@ -39,11 +39,6 @@ Feature: Groups ...@@ -39,11 +39,6 @@ Feature: Groups
When I visit group "Owned" merge requests page When I visit group "Owned" merge requests page
Then I should not see merge requests from the archived project 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 Scenario: I edit group "Owned" avatar
When I visit group "Owned" settings page When I visit group "Owned" settings page
And I change group "Owned" avatar And I change group "Owned" avatar
......
...@@ -73,18 +73,6 @@ class Spinach::Features::Groups < Spinach::FeatureSteps ...@@ -73,18 +73,6 @@ class Spinach::Features::Groups < Spinach::FeatureSteps
author: current_user author: current_user
end 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 step 'I change group "Owned" avatar' do
attach_file(:group_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif')) attach_file(:group_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif'))
click_button "Save group" click_button "Save group"
......
...@@ -11,67 +11,99 @@ feature 'Group', feature: true do ...@@ -11,67 +11,99 @@ feature 'Group', feature: true do
end end
end end
describe 'creating a group with space in group path' do describe 'create a group' do
it 'renders new group form with validation errors' do before { visit new_group_path }
visit new_group_path
fill_in 'Group path', with: 'space group'
click_button 'Create group' describe 'with space in group path' do
it 'renders new group form with validation errors' do
fill_in 'Group path', with: 'space group'
click_button 'Create group'
expect(current_path).to eq(groups_path) expect(current_path).to eq(groups_path)
expect(page).to have_namespace_error_message expect(page).to have_namespace_error_message
end
end end
end
describe 'creating a group 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' describe 'with .atom at end of group path' do
it 'renders new group form with validation errors' do
fill_in 'Group path', with: 'atom_group.atom'
click_button 'Create group'
expect(current_path).to eq(groups_path) expect(current_path).to eq(groups_path)
expect(page).to have_namespace_error_message expect(page).to have_namespace_error_message
end
end
describe 'with .git at end of group path' do
it 'renders new group form with validation errors' do
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
end end
describe 'creating a group 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' 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)
expect(current_path).to eq(groups_path) page.within ".navbar-gitlab" do
expect(page).to have_namespace_error_message 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
end end
describe 'description' do describe 'group page with markdown description' do
let(:group) { create(:group) } let(:group) { create(:group) }
let(:path) { group_path(group) } let(:path) { group_path(group) }
it 'parses Markdown' do it 'parses Markdown' do
group.update_attribute(:description, 'This is **my** group') group.update_attribute(:description, 'This is **my** group')
visit path visit path
expect(page).to have_css('.description > p > strong') expect(page).to have_css('.description > p > strong')
end end
it 'passes through html-pipeline' do it 'passes through html-pipeline' do
group.update_attribute(:description, 'This group is the :poop:') group.update_attribute(:description, 'This group is the :poop:')
visit path visit path
expect(page).to have_css('.description > p > img') expect(page).to have_css('.description > p > img')
end end
it 'sanitizes unwanted tags' do it 'sanitizes unwanted tags' do
group.update_attribute(:description, '# Group Description') group.update_attribute(:description, '# Group Description')
visit path visit path
expect(page).not_to have_css('.description h1') expect(page).not_to have_css('.description h1')
end end
it 'permits `rel` attribute on links' do it 'permits `rel` attribute on links' do
group.update_attribute(:description, 'https://google.com/') group.update_attribute(:description, 'https://google.com/')
visit path visit path
expect(page).to have_css('.description a[rel]') expect(page).to have_css('.description a[rel]')
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment