Class: Sorcery::TestHelpers::Sinatra::SessionData

Inherits:
Object
  • Object
show all
Defined in:
lib/sorcery/test_helpers/sinatra.rb

Instance Method Summary collapse

Constructor Details

#initialize(cookies) ⇒ SessionData

Returns a new instance of SessionData.



60
61
62
63
64
65
66
67
68
69
# File 'lib/sorcery/test_helpers/sinatra.rb', line 60

def initialize(cookies)
  @cookies = cookies
  @data = cookies['rack.session']
  if @data
    @data = @data.unpack("m*").first
    @data = Marshal.load(@data)
  else
    @data = {}
  end
end

Instance Method Details

#[](key) ⇒ Object



71
72
73
# File 'lib/sorcery/test_helpers/sinatra.rb', line 71

def [](key)
  @data[key]
end

#[]=(key, value) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/sorcery/test_helpers/sinatra.rb', line 75

def []=(key, value)
  @data[key] = value
  session_data = Marshal.dump(@data)
  session_data = [session_data].pack("m*")
  @cookies.merge("rack.session=#{Rack::Utils.escape(session_data)}", URI.parse("//example.org//"))
  raise "session variable not set" unless @cookies['rack.session'] == session_data
end