Merge branch 'fix_project_member_access_levels' into 'master'
Fix project member access levels Migrate invalid project members (owner -> master) Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/18616 See merge request !6957
This commit is contained in:
commit
6c09fbd889
5 changed files with 64 additions and 1 deletions
|
@ -146,6 +146,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
||||||
- Fix buggy iOS tooltip layering behavior.
|
- Fix buggy iOS tooltip layering behavior.
|
||||||
- Make guests unable to view MRs on private projects
|
- Make guests unable to view MRs on private projects
|
||||||
- Fix broken Project API docs (Takuya Noguchi)
|
- Fix broken Project API docs (Takuya Noguchi)
|
||||||
|
- Migrate invalid project members (owner -> master)
|
||||||
|
|
||||||
## 8.12.7
|
## 8.12.7
|
||||||
|
|
||||||
|
|
15
db/migrate/20161018124658_make_project_owners_masters.rb
Normal file
15
db/migrate/20161018124658_make_project_owners_masters.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
class MakeProjectOwnersMasters < ActiveRecord::Migration
|
||||||
|
include Gitlab::Database::MigrationHelpers
|
||||||
|
|
||||||
|
DOWNTIME = false
|
||||||
|
|
||||||
|
def up
|
||||||
|
update_column_in_batches(:members, :access_level, 40) do |table, query|
|
||||||
|
query.where(table[:access_level].eq(50).and(table[:source_type].eq('Project')))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
# do nothing
|
||||||
|
end
|
||||||
|
end
|
|
@ -228,4 +228,40 @@ describe Projects::ProjectMembersController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'POST create' do
|
||||||
|
let(:stranger) { create(:user) }
|
||||||
|
|
||||||
|
context 'when creating owner' do
|
||||||
|
before do
|
||||||
|
project.team << [user, :master]
|
||||||
|
sign_in(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not create a member' do
|
||||||
|
expect do
|
||||||
|
post :create, user_ids: stranger.id,
|
||||||
|
namespace_id: project.namespace,
|
||||||
|
access_level: Member::OWNER,
|
||||||
|
project_id: project
|
||||||
|
end.to change { project.members.count }.by(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when create master' do
|
||||||
|
before do
|
||||||
|
project.team << [user, :master]
|
||||||
|
sign_in(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a member' do
|
||||||
|
expect do
|
||||||
|
post :create, user_ids: stranger.id,
|
||||||
|
namespace_id: project.namespace,
|
||||||
|
access_level: Member::MASTER,
|
||||||
|
project_id: project
|
||||||
|
end.to change { project.members.count }.by(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -328,4 +328,15 @@ describe API::Members, api: true do
|
||||||
it_behaves_like 'DELETE /:sources/:id/members/:user_id', 'group' do
|
it_behaves_like 'DELETE /:sources/:id/members/:user_id', 'group' do
|
||||||
let(:source) { group }
|
let(:source) { group }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Adding owner to project' do
|
||||||
|
it 'returns 403' do
|
||||||
|
expect do
|
||||||
|
post api("/projects/#{project.id}/members", master),
|
||||||
|
user_id: stranger.id, access_level: Member::OWNER
|
||||||
|
|
||||||
|
expect(response).to have_http_status(422)
|
||||||
|
end.to change { project.members.count }.by(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue