Sha256: 5e906010dd272db694e2e8b99cb693d7f6f572fbe97309d28832ccc21257ed56

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

module SwitchUser
  module RSpecFeatureHelpers

    class InvalidArgument < StandardError; end

    def switch_user(user_record_or_scope, user_id=nil)
      _user_scope =
        case user_record_or_scope
        when ActiveRecord::Base
          user_record_or_scope.model_name.singular
        else
          user_record_or_scope
        end

      _user_scope = _user_scope.to_s

      unless (SwitchUser.available_scopes.include?(_user_scope) or SwitchUser.available_scopes.include?(_user_scope.to_sym))
        raise SwitchUser::InvalidScope.new("don't allow this user sign in, please check config.available_users")
      end

      _user_id =
        case user_record_or_scope
        when ActiveRecord::Base
          identifier = SwitchUser.available_users_identifiers[_user_scope] || SwitchUser.available_users_identifiers[_user_scope.to_sym]
          if identifier.nil?
            raise SwitchUser::InvalidScope.new("don't allow switch this user, please check config.available_users_identifiers")
          end
          user_record_or_scope.send identifier
        else
          user_id
        end

      if _user_id.to_s.empty?
        raise InvalidArgument.new("don't allow switch this user, user_id is empty")
      end

      scope_identifier = "#{_user_scope}_#{_user_id}"

      visit "/switch_user?scope_identifier=#{scope_identifier}"
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
switch_user-1.4.0 lib/switch_user/rspec/feature_helpers.rb
switch_user-1.3.1 lib/switch_user/rspec/feature_helpers.rb
switch_user-1.3.0 lib/switch_user/rspec/feature_helpers.rb