Class: SonarSession

Inherits:
Object
  • Object
show all
Includes:
Sonar
Defined in:
lib/sonar/session.rb

Defined Under Namespace

Classes: MockDigestRequest

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Sonar

#follow_redirect!, #map, #request

Constructor Details

#initialize(app) ⇒ SonarSession

Returns a new instance of SonarSession.



8
9
10
11
12
13
14
# File 'lib/sonar/session.rb', line 8

def initialize app
  app.respond_to?(:call) ||
      raise('app should be a valid Rack app')

  @app = app
  @headers, @cookies = {}, ::SonarCookies.new
end

Instance Attribute Details

#cookiesObject (readonly)

Returns the value of attribute cookies.



5
6
7
# File 'lib/sonar/session.rb', line 5

def cookies
  @cookies
end

#headersObject (readonly) Also known as: header

Returns the value of attribute headers.



5
6
7
# File 'lib/sonar/session.rb', line 5

def headers
  @headers
end

#last_requestObject (readonly)

Returns the value of attribute last_request.



5
6
7
# File 'lib/sonar/session.rb', line 5

def last_request
  @last_request
end

#last_responseObject (readonly)

Returns the value of attribute last_response.



5
6
7
# File 'lib/sonar/session.rb', line 5

def last_response
  @last_response
end

Instance Method Details

#__sonar__session__Object



63
64
65
# File 'lib/sonar/session.rb', line 63

def __sonar__session__
  self
end

#app(*args) ⇒ Object



73
74
75
76
# File 'lib/sonar/session.rb', line 73

def app *args
  args.any? && raise('It makes no sense to use `%s` with manually created sessions. To test another app, just create a new session.' % __method__)
  @app
end

#basic_authorize(user, pass) ⇒ Object Also known as: authorize, auth



16
17
18
# File 'lib/sonar/session.rb', line 16

def basic_authorize user, pass
  @basic_auth = [user, pass]
end

#digest_authorize(user, pass) ⇒ Object Also known as: digest_auth



23
24
25
# File 'lib/sonar/session.rb', line 23

def digest_authorize user, pass
  @digest_auth = [user, pass]
end

#invoke_request(request_method, uri, params, env) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/sonar/session.rb', line 42

def invoke_request request_method, uri, params, env

  default_env = ::SonarConstants::DEFAULT_ENV.dup.merge(env)
  default_env.update :method => request_method
  default_env.update :params => params
  default_env.update 'HTTP_COOKIE' => cookies.to_s(uri)
  default_env.update basic_auth_header

  process_request uri, default_env

  if @digest_auth && @last_response.status == 401 && (challenge = @last_response['WWW-Authenticate'])
    default_env.update digest_auth_header(challenge, uri.path, request_method)
    process_request uri, default_env
  end

  cookies.persist(@last_response.header['Set-Cookie'], uri)

  @last_response.respond_to?(:finish) && @last_response.finish
  @last_response
end

#reset_app!Object Also known as: reset_browser!



67
68
69
# File 'lib/sonar/session.rb', line 67

def reset_app!
  raise 'It makes no sense to use `%s` with manually created sessions. To test another app, just create a new session.' % __method__
end

#reset_auth!Object



37
38
39
40
# File 'lib/sonar/session.rb', line 37

def reset_auth!
  reset_basic_auth!
  reset_digest_auth!
end

#reset_basic_auth!Object



29
30
31
# File 'lib/sonar/session.rb', line 29

def reset_basic_auth!
  @basic_auth = nil
end

#reset_digest_auth!Object



33
34
35
# File 'lib/sonar/session.rb', line 33

def reset_digest_auth!
  @digest_auth = nil
end