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,11 +11,12 @@ feature 'Group', feature: true do ...@@ -11,11 +11,12 @@ feature 'Group', feature: true do
end end
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 it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'space group' fill_in 'Group path', with: 'space group'
click_button 'Create group' click_button 'Create group'
expect(current_path).to eq(groups_path) expect(current_path).to eq(groups_path)
...@@ -23,11 +24,9 @@ feature 'Group', feature: true do ...@@ -23,11 +24,9 @@ feature 'Group', feature: true do
end end
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 it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'atom_group.atom' fill_in 'Group path', with: 'atom_group.atom'
click_button 'Create group' click_button 'Create group'
expect(current_path).to eq(groups_path) expect(current_path).to eq(groups_path)
...@@ -35,43 +34,76 @@ feature 'Group', feature: true do ...@@ -35,43 +34,76 @@ feature 'Group', feature: true do
end end
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 it 'renders new group form with validation errors' do
visit new_group_path
fill_in 'Group path', with: 'git_group.git' fill_in 'Group path', with: 'git_group.git'
click_button 'Create 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
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(: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