diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 18:25:58 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 18:25:58 +0000 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /spec/support/helpers/access_matchers_helpers.rb | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff) | |
download | gitlab-ce-a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4.tar.gz |
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'spec/support/helpers/access_matchers_helpers.rb')
-rw-r--r-- | spec/support/helpers/access_matchers_helpers.rb | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/spec/support/helpers/access_matchers_helpers.rb b/spec/support/helpers/access_matchers_helpers.rb index 9100f245d36..035653172c1 100644 --- a/spec/support/helpers/access_matchers_helpers.rb +++ b/spec/support/helpers/access_matchers_helpers.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true module AccessMatchersHelpers + include Gitlab::Utils::StrongMemoize + USER_ACCESSOR_METHOD_NAME = 'user' def provide_user(role, membership = nil) @@ -61,11 +63,6 @@ module AccessMatchersHelpers # (or defined by `method_name`) method generated by `let` definition in example group before it's used by `subject`. # This override is per concrete example only because the example group class gets re-created for each example. instance_eval(<<~CODE, __FILE__, __LINE__ + 1) - if instance_variable_get(:@__#{USER_ACCESSOR_METHOD_NAME}_patched) - raise ArgumentError, 'An access matcher be_allowed_for/be_denied_for can be used only once per example (`it` block)' - end - instance_variable_set(:@__#{USER_ACCESSOR_METHOD_NAME}_patched, true) - def #{USER_ACCESSOR_METHOD_NAME} @#{USER_ACCESSOR_METHOD_NAME} ||= User.find(#{user.id}) end @@ -81,6 +78,13 @@ module AccessMatchersHelpers end end + def reset_matcher_environment + instance_eval(<<~CODE, __FILE__, __LINE__ + 1) + clear_memoization(:#{USER_ACCESSOR_METHOD_NAME}) + undef #{USER_ACCESSOR_METHOD_NAME} if defined? user + CODE + end + def run_matcher(action, role, membership, owned_objects) raise_if_non_block_expectation!(action) @@ -91,5 +95,7 @@ module AccessMatchersHelpers else action.call end + + reset_matcher_environment end end |