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:
commit
48d223d7c9
4 changed files with 61 additions and 43 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -11,67 +11,99 @@ feature 'Group', feature: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'creating a group 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'
|
||||
describe 'create a group' do
|
||||
before { visit new_group_path }
|
||||
|
||||
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(page).to have_namespace_error_message
|
||||
expect(current_path).to eq(groups_path)
|
||||
expect(page).to have_namespace_error_message
|
||||
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(page).to have_namespace_error_message
|
||||
expect(current_path).to eq(groups_path)
|
||||
expect(page).to have_namespace_error_message
|
||||
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 '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
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue