jam-cloud/web/spec/support/cuprite_adapter.rb

53 lines
1.4 KiB
Ruby

module ShowMeTheCookies
class Cuprite
def initialize(driver)
@browser = driver.browser
end
def get_me_the_cookie(cookie_name)
c = @browser.cookies[cookie_name]
c ? {:name => c.name, :value => c.value, :expires => c.expires, :path => c.path} : nil
end
def get_me_the_cookies
@browser.cookies.values.map { |c| {:name => c.name, :value => c.value, :expires => c.expires, :path => c.path} }
end
def expire_cookies
@browser.clear_cookies
end
def delete_cookie(cookie_name)
c = @browser.cookies[cookie_name]
if c
@browser.cookies.remove(name: cookie_name, domain: c.domain)
else
# If we can't find it, we try to remove it from the current domain as a best effort
begin
url = @browser.url
domain = URI.parse(url).host
@browser.cookies.remove(name: cookie_name, domain: domain)
rescue
# ignore if it fails
end
end
end
def create_cookie(cookie_name, cookie_value, options = {})
opts = options.dup
opts[:name] = cookie_name
opts[:value] = cookie_value
# Cuprite/Ferrum expects domain to be set if we want it to stick
if !opts[:domain] && !opts[:url]
begin
opts[:domain] = URI.parse(@browser.url).host
rescue
end
end
@browser.cookies.set(opts)
end
end
end
ShowMeTheCookies.register_adapter(:cuprite, ShowMeTheCookies::Cuprite)