Reduce differences in spec/support/matchers/access_matchers.rb

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2019-02-26 18:28:04 +01:00
parent be44024c51
commit 88d6bdcfec
No known key found for this signature in database
GPG Key ID: 98DFFD1C0C62B70B
1 changed files with 17 additions and 18 deletions

View File

@ -7,29 +7,28 @@ module AccessMatchers
extend RSpec::Matchers::DSL extend RSpec::Matchers::DSL
include Warden::Test::Helpers include Warden::Test::Helpers
def emulate_user(user, membership = nil) def emulate_user(user_type_or_trait, membership = nil)
case user case user_type_or_trait
when :user when :user, :admin
login_as(create(:user)) login_as(create(user_type_or_trait))
when :external, :auditor
login_as(create(:user, user_type_or_trait))
when :visitor when :visitor
logout logout
when :admin
login_as(create(:admin))
when :external
login_as(create(:user, external: true))
when User when User
login_as(user) login_as(user_type_or_trait)
when *Gitlab::Access.sym_options_with_owner.keys when *Gitlab::Access.sym_options_with_owner.keys
raise ArgumentError, "cannot emulate #{user} without membership parent" unless membership raise ArgumentError, "cannot emulate #{user_type_or_trait} without membership parent" unless membership
role = user role = user_type_or_trait
user =
if role == :owner && membership.owner if role == :owner && membership.owner
user = membership.owner membership.owner
else else
user = create(:user) create(:user).tap do |new_user|
membership.public_send(:"add_#{role}", user) membership.public_send(:"add_#{role}", new_user)
end end
end
login_as(user) login_as(user)
else else