Ensures default user limits when external user is unchecked
This commit is contained in:
parent
537e60c0c6
commit
db33c0fb63
3 changed files with 45 additions and 6 deletions
|
@ -153,7 +153,7 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
after_update :update_emails_with_primary_email, if: ->(user) { user.email_changed? }
|
after_update :update_emails_with_primary_email, if: ->(user) { user.email_changed? }
|
||||||
before_save :ensure_authentication_token, :ensure_incoming_email_token
|
before_save :ensure_authentication_token, :ensure_incoming_email_token
|
||||||
before_save :ensure_external_user_rights
|
before_save :ensure_user_rights_and_limits, if: ->(user) { user.external_changed? }
|
||||||
after_save :ensure_namespace_correct
|
after_save :ensure_namespace_correct
|
||||||
after_initialize :set_projects_limit
|
after_initialize :set_projects_limit
|
||||||
after_destroy :post_destroy_hook
|
after_destroy :post_destroy_hook
|
||||||
|
@ -1033,11 +1033,14 @@ class User < ActiveRecord::Base
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
def ensure_external_user_rights
|
def ensure_user_rights_and_limits
|
||||||
return unless external?
|
if external?
|
||||||
|
|
||||||
self.can_create_group = false
|
self.can_create_group = false
|
||||||
self.projects_limit = 0
|
self.projects_limit = 0
|
||||||
|
else
|
||||||
|
self.can_create_group = true
|
||||||
|
self.projects_limit = current_application_settings.default_projects_limit
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def signup_domain_valid?
|
def signup_domain_valid?
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Ensures default user limits when external user is unchecked
|
||||||
|
merge_request: 12218
|
||||||
|
author:
|
|
@ -451,6 +451,38 @@ describe User, models: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#ensure_user_rights_and_limits' do
|
||||||
|
describe 'with external user' do
|
||||||
|
let(:user) { create(:user, external: true) }
|
||||||
|
|
||||||
|
it 'receives callback when external changes' do
|
||||||
|
expect(user).to receive(:ensure_user_rights_and_limits)
|
||||||
|
|
||||||
|
user.update_attributes(external: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'ensures correct rights and limits for user' do
|
||||||
|
expect { user.update_attributes(external: false) }.to change { user.can_create_group }.to(true)
|
||||||
|
.and change { user.projects_limit }.to(current_application_settings.default_projects_limit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'without external user' do
|
||||||
|
let(:user) { create(:user, external: false) }
|
||||||
|
|
||||||
|
it 'receives callback when external changes' do
|
||||||
|
expect(user).to receive(:ensure_user_rights_and_limits)
|
||||||
|
|
||||||
|
user.update_attributes(external: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'ensures correct rights and limits for user' do
|
||||||
|
expect { user.update_attributes(external: true) }.to change { user.can_create_group }.to(false)
|
||||||
|
.and change { user.projects_limit }.to(0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'rss token' do
|
describe 'rss token' do
|
||||||
it 'ensures an rss token on read' do
|
it 'ensures an rss token on read' do
|
||||||
user = create(:user, rss_token: nil)
|
user = create(:user, rss_token: nil)
|
||||||
|
|
Loading…
Reference in a new issue