69 lines
1.5 KiB
Ruby
69 lines
1.5 KiB
Ruby
|
module ZammadAuthenticatedAsHelper
|
||
|
# parse authenticated_as params for request and system test helpers
|
||
|
#
|
||
|
# @param input [Any] any to parse, see bellow for options
|
||
|
# @param return_type [Symbol] :credentials or :user
|
||
|
def authenticated_as_get_user(input, return_type:)
|
||
|
case input
|
||
|
when Proc
|
||
|
parse_meta instance_exec(&input), return_type: return_type
|
||
|
when Symbol
|
||
|
parse_meta instance_eval { send(input) }, return_type: return_type
|
||
|
else
|
||
|
parse_meta input, return_type: return_type
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def parse_meta(input, return_type:)
|
||
|
case return_type
|
||
|
when :credentials
|
||
|
parse_meta_credentials(input)
|
||
|
when :user
|
||
|
parse_meta_user_object(input)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parse_meta_user_object(input)
|
||
|
case input
|
||
|
when User
|
||
|
input
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parse_meta_credentials(input)
|
||
|
case input
|
||
|
when Hash
|
||
|
input.slice(:username, :password)
|
||
|
when User
|
||
|
parse_meta_user(input)
|
||
|
when true
|
||
|
{
|
||
|
username: 'master@example.com',
|
||
|
password: 'test',
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parse_meta_user(input)
|
||
|
password = input.password_plain
|
||
|
|
||
|
if password.blank?
|
||
|
password = 'automagically set by your friendly capybara helper'
|
||
|
input.update!(password: password)
|
||
|
end
|
||
|
|
||
|
{
|
||
|
username: input.email,
|
||
|
password: password,
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.configure do |config|
|
||
|
%i[request system].each do |type|
|
||
|
config.include ZammadAuthenticatedAsHelper, type: type
|
||
|
end
|
||
|
end
|