rack-oauth 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +13 -10
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/examples/rails-example/app/controllers/application_controller.rb +6 -0
- data/examples/rails-example/app/controllers/welcome_controller.rb +1 -4
- data/examples/rails-example/config/environment.rb +3 -1
- data/examples/rails-example/config/environments/test.rb +1 -0
- data/examples/rails-example/log/development.log +76 -0
- data/examples/rails-example/log/test.log +159 -0
- data/examples/rails-example/spec/integration/login_spec.rb +2 -12
- data/examples/rails-example/spec/spec_helper.rb +4 -0
- data/examples/rails-example/tmp/webrat-1257219890.html +211 -0
- data/examples/rails-example/tmp/webrat-1257219947.html +213 -0
- data/examples/rails-example/tmp/webrat-1257219957.html +213 -0
- data/examples/sinatra-twitter.rb +5 -22
- data/lib/rack-oauth.rb +49 -110
- data/spec/sample_sinatra_app_spec.rb +11 -40
- metadata +25 -3
    
        data/README.rdoc
    CHANGED
    
    | @@ -1,9 +1,3 @@ | |
| 1 | 
            -
            == OUT-OF-DATE
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            I'll be releasing new documentation shortly ... everything should be *nearly* entirely backwards compatible ...
         | 
| 4 | 
            -
            if it's not, I'll document changes you need to make to use 0.2.0
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 1 | 
             
            = Rack::OAuth
         | 
| 8 2 |  | 
| 9 3 | 
             
            Rack::OAuth is a Rack middleware for easily integrating OAuth into your Ruby web applications.
         | 
| @@ -39,11 +33,20 @@ There are a number of defaults that can be overridden.  Defaults can be viewed a | |
| 39 33 | 
             
                               :login        => '/path_that_will_goto_oauth_providers_login',
         | 
| 40 34 | 
             
                               :redirect     => '/path_to_redirect_to_after_oauth_authorization',
         | 
| 41 35 | 
             
                               :session_key  => 'name_of_session_variable_to_store_oauth_user_info_in',
         | 
| 42 | 
            -
                               :rack_session => 'name_of_rack_session_variable' | 
| 43 | 
            -
             | 
| 36 | 
            +
                               :rack_session => 'name_of_rack_session_variable'
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            The important thing to note is that, after you redirect to /oauth_login and the OAuth provider 
         | 
| 39 | 
            +
            redirects back to your web application at /oauth_complete, you can gain access to the user's 
         | 
| 40 | 
            +
            access token.  This is what lets you make requests to Twitter and whatnot to post tweets or 
         | 
| 41 | 
            +
            merely get the user's information.
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            The easiest way to do this is to include the Rack::OAuth::Methods module in your ApplicationController, 
         | 
| 44 | 
            +
            if you're using Rails, or your helpers block, if you're using Sinatra or ... wherever.  Once you've done 
         | 
| 45 | 
            +
            that, you can just call #get_access_token to get the access token.  For example, if you want to get the 
         | 
| 46 | 
            +
            user's twitter profile information you can:
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              json = get_access_token.get('/account/verify_credentials.json').body
         | 
| 44 49 |  | 
| 45 50 | 
             
            === Notes
         | 
| 46 51 |  | 
| 47 52 | 
             
            Rack::OAuth was created to work with Twitter OAuth and has, thus far, only been tested using Twitter's OAuth.  If this doesn't work for you for a different OAuth provider, please let me know!  Or, if you patch Rack::OAuth to support another provider, please send me a pull request with the patch.
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            Also, I haven't added any specs yet.  My bad.
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -15,7 +15,8 @@ begin | |
| 15 15 | 
             
                s.description = 'Rack Middleware for OAuth Authorization'
         | 
| 16 16 | 
             
                s.authors     = %w( remi )
         | 
| 17 17 | 
             
                s.files       = FileList['[A-Z]*', '{lib,spec,bin,examples}/**/*'] 
         | 
| 18 | 
            -
                 | 
| 18 | 
            +
                s.add_dependency 'oauth'
         | 
| 19 | 
            +
                s.add_dependency 'rack'
         | 
| 19 20 | 
             
                # s.executables << 'script'
         | 
| 20 21 | 
             
                # s.rubyforge_project = 'gemname'
         | 
| 21 22 | 
             
                s.extra_rdoc_files = %w( README.rdoc )
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.1. | 
| 1 | 
            +
            0.1.3
         | 
| @@ -16,10 +16,7 @@ class WelcomeController < ApplicationController | |
| 16 16 |  | 
| 17 17 | 
             
              # GET /oauth_complete
         | 
| 18 18 | 
             
              def after_login
         | 
| 19 | 
            -
                 | 
| 20 | 
            -
                  session[:info] = oauth_request_with_access_token oauth_access_token, '/account/verify_credentials.json'
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 19 | 
            +
                session[:info] = get_access_token.get('/account/verify_credentials.json').body
         | 
| 23 20 | 
             
                redirect_to root_path
         | 
| 24 21 | 
             
              end
         | 
| 25 22 |  | 
| @@ -9,6 +9,8 @@ require File.join(File.dirname(__FILE__), 'boot') | |
| 9 9 | 
             
            require File.dirname(__FILE__) + '/../../../lib/rack-oauth'
         | 
| 10 10 |  | 
| 11 11 | 
             
            Rails::Initializer.run do |config|
         | 
| 12 | 
            -
              config.middleware.use Rack::OAuth, : | 
| 12 | 
            +
              config.middleware.use Rack::OAuth, :site   => 'http://twitter.com', 
         | 
| 13 | 
            +
                                                 :key    => '4JjFmhjfZyQ6rdbiql5A', 
         | 
| 14 | 
            +
                                                 :secret => 'rv4ZaCgvxVPVjxHIDbMxTGFbIMxUa4KkIdPqL7HmaQo'
         | 
| 13 15 | 
             
              config.time_zone = 'UTC'
         | 
| 14 16 | 
             
            end
         | 
| @@ -163,3 +163,79 @@ Completed in 2ms (DB: 0) | 302 Found [http://localhost/oauth_complete] | |
| 163 163 |  | 
| 164 164 | 
             
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 16:51:07) [GET]
         | 
| 165 165 | 
             
            Completed in 2ms (View: 0, DB: 0) | 200 OK [http://localhost/]
         | 
| 166 | 
            +
             | 
| 167 | 
            +
             | 
| 168 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 18:13:52) [GET]
         | 
| 169 | 
            +
            Completed in 5ms (View: 3, DB: 0) | 200 OK [http://localhost/]
         | 
| 170 | 
            +
             | 
| 171 | 
            +
             | 
| 172 | 
            +
            Processing WelcomeController#login (for 127.0.0.1 at 2009-11-02 18:13:55) [GET]
         | 
| 173 | 
            +
            Redirected to http://localhost:3000/oauth_login
         | 
| 174 | 
            +
            Completed in 2ms (DB: 0) | 302 Found [http://localhost/login]
         | 
| 175 | 
            +
            /!\ FAILSAFE /!\  Mon Nov 02 18:13:55 -0700 2009
         | 
| 176 | 
            +
              Status: 500 Internal Server Error
         | 
| 177 | 
            +
              401 Unauthorized
         | 
| 178 | 
            +
                /usr/lib/ruby/gems/1.8/gems/oauth-0.3.5/lib/oauth/consumer.rb:199:in `token_request'
         | 
| 179 | 
            +
                /usr/lib/ruby/gems/1.8/gems/oauth-0.3.5/lib/oauth/consumer.rb:125:in `get_request_token'
         | 
| 180 | 
            +
                /home/remi/projects/remi/rack-oauth/examples/rails-example/config/../../../lib/rack-oauth.rb:226:in `do_login'
         | 
| 181 | 
            +
                /home/remi/projects/remi/rack-oauth/examples/rails-example/config/../../../lib/rack-oauth.rb:211:in `call'
         | 
| 182 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in `call'
         | 
| 183 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in `call'
         | 
| 184 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/params_parser.rb:15:in `call'
         | 
| 185 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/session/cookie_store.rb:93:in `call'
         | 
| 186 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/failsafe.rb:26:in `call'
         | 
| 187 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 188 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `synchronize'
         | 
| 189 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 190 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:114:in `call'
         | 
| 191 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/reloader.rb:34:in `run'
         | 
| 192 | 
            +
                /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:108:in `call'
         | 
| 193 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/rails/rack/static.rb:31:in `call'
         | 
| 194 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:46:in `call'
         | 
| 195 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in `each'
         | 
| 196 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in `call'
         | 
| 197 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/rails/rack/log_tailer.rb:17:in `call'
         | 
| 198 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/content_length.rb:13:in `call'
         | 
| 199 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/chunked.rb:15:in `call'
         | 
| 200 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:61:in `process'
         | 
| 201 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
         | 
| 202 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
         | 
| 203 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
         | 
| 204 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
         | 
| 205 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
         | 
| 206 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
         | 
| 207 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
         | 
| 208 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
         | 
| 209 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
         | 
| 210 | 
            +
                /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
         | 
| 211 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:34:in `run'
         | 
| 212 | 
            +
                /usr/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/commands/server.rb:111
         | 
| 213 | 
            +
                /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
         | 
| 214 | 
            +
                /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
         | 
| 215 | 
            +
                ./script/server:3
         | 
| 216 | 
            +
             | 
| 217 | 
            +
             | 
| 218 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 18:14:47) [GET]
         | 
| 219 | 
            +
            Completed in 5ms (View: 2, DB: 0) | 200 OK [http://localhost/]
         | 
| 220 | 
            +
             | 
| 221 | 
            +
             | 
| 222 | 
            +
            Processing WelcomeController#login (for 127.0.0.1 at 2009-11-02 18:14:50) [GET]
         | 
| 223 | 
            +
            Redirected to http://localhost:3000/oauth_login
         | 
| 224 | 
            +
            Completed in 2ms (DB: 0) | 302 Found [http://localhost/login]
         | 
| 225 | 
            +
             | 
| 226 | 
            +
             | 
| 227 | 
            +
            Processing WelcomeController#after_login (for 127.0.0.1 at 2009-11-02 18:14:53) [GET]
         | 
| 228 | 
            +
            Redirected to http://localhost:3000/
         | 
| 229 | 
            +
            Completed in 7ms (DB: 0) | 302 Found [http://localhost/oauth_complete]
         | 
| 230 | 
            +
             | 
| 231 | 
            +
             | 
| 232 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 18:14:54) [GET]
         | 
| 233 | 
            +
            Completed in 8ms (View: 1, DB: 0) | 200 OK [http://localhost/]
         | 
| 234 | 
            +
             | 
| 235 | 
            +
             | 
| 236 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 18:15:40) [GET]
         | 
| 237 | 
            +
            Completed in 4ms (View: 1, DB: 0) | 200 OK [http://localhost/]
         | 
| 238 | 
            +
             | 
| 239 | 
            +
             | 
| 240 | 
            +
            Processing WelcomeController#after_login (for 127.0.0.1 at 2009-11-02 18:16:25) [GET]
         | 
| 241 | 
            +
            Completed in 3ms (View: 1, DB: 0) | 200 OK [http://localhost/oauth_complete]
         | 
| @@ -1589,3 +1589,162 @@ REQUESTING PAGE: GET / with {} and HTTP headers {"HTTP_REFERER"=>"http://www.exa | |
| 1589 1589 |  | 
| 1590 1590 | 
             
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 18:10:33) [GET]
         | 
| 1591 1591 | 
             
            Completed in 1ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| 1592 | 
            +
            REQUESTING PAGE: GET / with {} and HTTP headers {}
         | 
| 1593 | 
            +
             | 
| 1594 | 
            +
             | 
| 1595 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:44:50) [GET]
         | 
| 1596 | 
            +
             | 
| 1597 | 
            +
            NoMethodError (undefined method `logged_in?' for #<WelcomeController:0x7f0aa3be34f8>):
         | 
| 1598 | 
            +
              app/controllers/welcome_controller.rb:5:in `index'
         | 
| 1599 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `send'
         | 
| 1600 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `do_request'
         | 
| 1601 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:35:in `get'
         | 
| 1602 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:104:in `send'
         | 
| 1603 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:104:in `request_page'
         | 
| 1604 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:205:in `visit'
         | 
| 1605 | 
            +
              (eval):2:in `visit'
         | 
| 1606 | 
            +
              /spec/integration/login_spec.rb:8
         | 
| 1607 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `instance_eval'
         | 
| 1608 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `execute'
         | 
| 1609 | 
            +
              /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
         | 
| 1610 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:37:in `execute'
         | 
| 1611 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:207:in `run_examples'
         | 
| 1612 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `each'
         | 
| 1613 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `run_examples'
         | 
| 1614 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:103:in `run'
         | 
| 1615 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:23:in `run'
         | 
| 1616 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `each'
         | 
| 1617 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `run'
         | 
| 1618 | 
            +
              rspec (1.2.8) lib/spec/runner/options.rb:127:in `run_examples'
         | 
| 1619 | 
            +
              rspec (1.2.8) lib/spec/runner/command_line.rb:9:in `run'
         | 
| 1620 | 
            +
              rspec (1.2.8) bin/spec:4
         | 
| 1621 | 
            +
              /usr/bin/spec:19:in `load'
         | 
| 1622 | 
            +
              /usr/bin/spec:19
         | 
| 1623 | 
            +
             | 
| 1624 | 
            +
            Rendered rescues/_trace (193.6ms)
         | 
| 1625 | 
            +
            Rendered rescues/_request_and_response (1.6ms)
         | 
| 1626 | 
            +
            Rendering rescues/layout (internal_server_error)
         | 
| 1627 | 
            +
            REQUESTING PAGE: GET / with {} and HTTP headers {}
         | 
| 1628 | 
            +
             | 
| 1629 | 
            +
             | 
| 1630 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:45:47) [GET]
         | 
| 1631 | 
            +
            Completed in 6ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| 1632 | 
            +
            REQUESTING PAGE: GET /login with {} and HTTP headers {"HTTP_REFERER"=>"/"}
         | 
| 1633 | 
            +
             | 
| 1634 | 
            +
             | 
| 1635 | 
            +
            Processing WelcomeController#login (for 127.0.0.1 at 2009-11-02 20:45:47) [GET]
         | 
| 1636 | 
            +
            Redirected to http://www.example.com/oauth_login
         | 
| 1637 | 
            +
            Completed in 0ms (DB: 0) | 302 Found [http://www.example.com/login]
         | 
| 1638 | 
            +
            REQUESTING PAGE: GET http://www.example.com/oauth_login with {} and HTTP headers {"HTTP_REFERER"=>"/login"}
         | 
| 1639 | 
            +
            REQUESTING PAGE: GET /oauth_complete with {} and HTTP headers {"HTTP_REFERER"=>"http://www.example.com/oauth_login"}
         | 
| 1640 | 
            +
             | 
| 1641 | 
            +
             | 
| 1642 | 
            +
            Processing WelcomeController#after_login (for 127.0.0.1 at 2009-11-02 20:45:47) [GET]
         | 
| 1643 | 
            +
             | 
| 1644 | 
            +
            NameError (undefined local variable or method `oauth_access_token' for #<WelcomeController:0x7f45a7a74858>):
         | 
| 1645 | 
            +
              app/controllers/welcome_controller.rb:19:in `after_login'
         | 
| 1646 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `send'
         | 
| 1647 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `do_request'
         | 
| 1648 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:35:in `get'
         | 
| 1649 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:106:in `send'
         | 
| 1650 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:106:in `request_page'
         | 
| 1651 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:120:in `request_page'
         | 
| 1652 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:205:in `visit'
         | 
| 1653 | 
            +
              (eval):2:in `visit'
         | 
| 1654 | 
            +
              /spec/integration/login_spec.rb:11
         | 
| 1655 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `instance_eval'
         | 
| 1656 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `execute'
         | 
| 1657 | 
            +
              /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
         | 
| 1658 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:37:in `execute'
         | 
| 1659 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:207:in `run_examples'
         | 
| 1660 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `each'
         | 
| 1661 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `run_examples'
         | 
| 1662 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:103:in `run'
         | 
| 1663 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:23:in `run'
         | 
| 1664 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `each'
         | 
| 1665 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `run'
         | 
| 1666 | 
            +
              rspec (1.2.8) lib/spec/runner/options.rb:127:in `run_examples'
         | 
| 1667 | 
            +
              rspec (1.2.8) lib/spec/runner/command_line.rb:9:in `run'
         | 
| 1668 | 
            +
              rspec (1.2.8) bin/spec:4
         | 
| 1669 | 
            +
              /usr/bin/spec:19:in `load'
         | 
| 1670 | 
            +
              /usr/bin/spec:19
         | 
| 1671 | 
            +
             | 
| 1672 | 
            +
            Rendered rescues/_trace (118.3ms)
         | 
| 1673 | 
            +
            Rendered rescues/_request_and_response (1.5ms)
         | 
| 1674 | 
            +
            Rendering rescues/layout (internal_server_error)
         | 
| 1675 | 
            +
            REQUESTING PAGE: GET / with {} and HTTP headers {}
         | 
| 1676 | 
            +
             | 
| 1677 | 
            +
             | 
| 1678 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:45:57) [GET]
         | 
| 1679 | 
            +
            Completed in 6ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| 1680 | 
            +
            REQUESTING PAGE: GET /login with {} and HTTP headers {"HTTP_REFERER"=>"/"}
         | 
| 1681 | 
            +
             | 
| 1682 | 
            +
             | 
| 1683 | 
            +
            Processing WelcomeController#login (for 127.0.0.1 at 2009-11-02 20:45:57) [GET]
         | 
| 1684 | 
            +
            Redirected to http://www.example.com/oauth_login
         | 
| 1685 | 
            +
            Completed in 0ms (DB: 0) | 302 Found [http://www.example.com/login]
         | 
| 1686 | 
            +
            REQUESTING PAGE: GET http://www.example.com/oauth_login with {} and HTTP headers {"HTTP_REFERER"=>"/login"}
         | 
| 1687 | 
            +
            REQUESTING PAGE: GET /oauth_complete with {} and HTTP headers {"HTTP_REFERER"=>"http://www.example.com/oauth_login"}
         | 
| 1688 | 
            +
             | 
| 1689 | 
            +
             | 
| 1690 | 
            +
            Processing WelcomeController#after_login (for 127.0.0.1 at 2009-11-02 20:45:57) [GET]
         | 
| 1691 | 
            +
             | 
| 1692 | 
            +
            NameError (undefined local variable or method `oauth_access_token' for #<WelcomeController:0x7f6b2af39ca0>):
         | 
| 1693 | 
            +
              app/controllers/welcome_controller.rb:19:in `after_login'
         | 
| 1694 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `send'
         | 
| 1695 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:70:in `do_request'
         | 
| 1696 | 
            +
              webrat (0.4.4) lib/webrat/rails.rb:35:in `get'
         | 
| 1697 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:106:in `send'
         | 
| 1698 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:106:in `request_page'
         | 
| 1699 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:120:in `request_page'
         | 
| 1700 | 
            +
              webrat (0.4.4) lib/webrat/core/session.rb:205:in `visit'
         | 
| 1701 | 
            +
              (eval):2:in `visit'
         | 
| 1702 | 
            +
              /spec/integration/login_spec.rb:11
         | 
| 1703 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `instance_eval'
         | 
| 1704 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:40:in `execute'
         | 
| 1705 | 
            +
              /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
         | 
| 1706 | 
            +
              rspec (1.2.8) lib/spec/example/example_methods.rb:37:in `execute'
         | 
| 1707 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:207:in `run_examples'
         | 
| 1708 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `each'
         | 
| 1709 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:205:in `run_examples'
         | 
| 1710 | 
            +
              rspec (1.2.8) lib/spec/example/example_group_methods.rb:103:in `run'
         | 
| 1711 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:23:in `run'
         | 
| 1712 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `each'
         | 
| 1713 | 
            +
              rspec (1.2.8) lib/spec/runner/example_group_runner.rb:22:in `run'
         | 
| 1714 | 
            +
              rspec (1.2.8) lib/spec/runner/options.rb:127:in `run_examples'
         | 
| 1715 | 
            +
              rspec (1.2.8) lib/spec/runner/command_line.rb:9:in `run'
         | 
| 1716 | 
            +
              rspec (1.2.8) bin/spec:4
         | 
| 1717 | 
            +
              /usr/bin/spec:19:in `load'
         | 
| 1718 | 
            +
              /usr/bin/spec:19
         | 
| 1719 | 
            +
             | 
| 1720 | 
            +
            Rendered rescues/_trace (118.2ms)
         | 
| 1721 | 
            +
            Rendered rescues/_request_and_response (1.5ms)
         | 
| 1722 | 
            +
            Rendering rescues/layout (internal_server_error)
         | 
| 1723 | 
            +
            REQUESTING PAGE: GET / with {} and HTTP headers {}
         | 
| 1724 | 
            +
             | 
| 1725 | 
            +
             | 
| 1726 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:46:24) [GET]
         | 
| 1727 | 
            +
            Completed in 5ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| 1728 | 
            +
            REQUESTING PAGE: GET /login with {} and HTTP headers {"HTTP_REFERER"=>"/"}
         | 
| 1729 | 
            +
             | 
| 1730 | 
            +
             | 
| 1731 | 
            +
            Processing WelcomeController#login (for 127.0.0.1 at 2009-11-02 20:46:24) [GET]
         | 
| 1732 | 
            +
            Redirected to http://www.example.com/oauth_login
         | 
| 1733 | 
            +
            Completed in 0ms (DB: 0) | 302 Found [http://www.example.com/login]
         | 
| 1734 | 
            +
            REQUESTING PAGE: GET http://www.example.com/oauth_login with {} and HTTP headers {"HTTP_REFERER"=>"/login"}
         | 
| 1735 | 
            +
            REQUESTING PAGE: GET /oauth_complete with {} and HTTP headers {"HTTP_REFERER"=>"http://www.example.com/oauth_login"}
         | 
| 1736 | 
            +
             | 
| 1737 | 
            +
             | 
| 1738 | 
            +
            Processing WelcomeController#after_login (for 127.0.0.1 at 2009-11-02 20:46:24) [GET]
         | 
| 1739 | 
            +
            Redirected to http://www.example.com/
         | 
| 1740 | 
            +
            Completed in 3ms (DB: 0) | 302 Found [http://www.example.com/oauth_complete]
         | 
| 1741 | 
            +
            REQUESTING PAGE: GET http://www.example.com/ with {} and HTTP headers {"HTTP_REFERER"=>"/oauth_complete"}
         | 
| 1742 | 
            +
             | 
| 1743 | 
            +
             | 
| 1744 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:46:24) [GET]
         | 
| 1745 | 
            +
            Completed in 1ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| 1746 | 
            +
            REQUESTING PAGE: GET / with {} and HTTP headers {"HTTP_REFERER"=>"http://www.example.com/"}
         | 
| 1747 | 
            +
             | 
| 1748 | 
            +
             | 
| 1749 | 
            +
            Processing WelcomeController#index (for 127.0.0.1 at 2009-11-02 20:46:24) [GET]
         | 
| 1750 | 
            +
            Completed in 1ms (View: 0, DB: 0) | 200 OK [http://www.example.com/]
         | 
| @@ -4,24 +4,14 @@ Rack::OAuth.enable_test_mode | |
| 4 4 |  | 
| 5 5 | 
             
            describe 'Login' do
         | 
| 6 6 |  | 
| 7 | 
            -
              def example_json
         | 
| 8 | 
            -
                %[{"time_zone":"Pacific Time (US & Canada)","profile_image_url":"http://a3.twimg.com/profile_images/54765389/remi-rock-on_bak_normal.png","description":"Beer goes in, Code comes out","following":false,"profile_text_color":"3E4415","status":{"source":"web","in_reply_to_user_id":64218381,"in_reply_to_status_id":5352275994,"truncated":false,"created_at":"Mon Nov 02 02:00:26 +0000 2009","favorited":false,"in_reply_to_screen_name":"benatkin","id":5352407184,"text":"@benatkin For GoldBar, they would want to tell you when you buy something because lots of people are coming in and not buying anything  :/"},"profile_background_image_url":"http://s.twimg.com/a/1256928834/images/themes/theme5/bg.gif","followers_count":257,"screen_name":"remitaylor","profile_link_color":"D02B55","profile_background_tile":false,"friends_count":190,"url":"http://remi.org","created_at":"Tue Dec 11 09:13:43 +0000 2007","profile_background_color":"352726","notifications":false,"favourites_count":0,"statuses_count":1700,"profile_sidebar_fill_color":"99CC33","protected":false,"geo_enabled":false,"location":"Phoenix, AZ","name":"remitaylor","profile_sidebar_border_color":"829D5E","id":11043342,"verified":false,"utc_offset":-28800}]
         | 
| 9 | 
            -
              end
         | 
| 10 | 
            -
             | 
| 11 7 | 
             
              it 'should be able to mock a twitter login and web API call' do
         | 
| 12 | 
            -
                Rack::OAuth.mock_request '/account/verify_credentials.json', example_json
         | 
| 13 | 
            -
             | 
| 14 8 | 
             
                visit root_path
         | 
| 15 | 
            -
                response.should_not contain(' | 
| 9 | 
            +
                response.should_not contain('THE_REAL_SHAQ')
         | 
| 16 10 |  | 
| 17 11 | 
             
                visit login_path # should auto login
         | 
| 18 12 |  | 
| 19 13 | 
             
                visit root_path
         | 
| 20 | 
            -
                response.should contain(' | 
| 14 | 
            +
                response.should contain('THE_REAL_SHAQ')
         | 
| 21 15 | 
             
              end
         | 
| 22 16 |  | 
| 23 | 
            -
              it 'should be able to mock logging in as a different user'
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              it "should be able to get the accesstoken for a user after they've logged in once"
         | 
| 26 | 
            -
             | 
| 27 17 | 
             
            end
         | 
| @@ -10,3 +10,7 @@ end | |
| 10 10 | 
             
            Spec::Runner.configure do |config|
         | 
| 11 11 | 
             
              config.include(Webrat::Matchers, :type => [:integration])
         | 
| 12 12 | 
             
            end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            FakeWeb.allow_net_connect = false
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            FakeWeb.register_uri :get, 'http://twitter.com/account/verify_credentials.json', :body => %{{"friends_count":190,"utc_offset":-28800,"profile_sidebar_border_color":"829D5E","status":{"in_reply_to_screen_name":null,"text":"Come on people, don't you realize that smoking isn't cool anymore?  Try a healthier stimulant.  Maybe one that doesn't irritate my sinuses?","in_reply_to_user_id":null,"in_reply_to_status_id":null,"source":"web","truncated":false,"favorited":false,"id":5177704516,"created_at":"Mon Oct 26 17:15:10 +0000 2009"},"notifications":false,"statuses_count":1689,"time_zone":"Pacific Time (US & Canada)","verified":false,"profile_text_color":"3E4415","profile_image_url":"http://a3.twimg.com/profile_images/54765389/remi-rock-on_bak_normal.png","profile_background_image_url":"http://s.twimg.com/a/1256577591/images/themes/theme5/bg.gif","location":"Phoenix, AZ","following":false,"favourites_count":0,"profile_link_color":"D02B55","screen_name":"THE_REAL_SHAQ","geo_enabled":false,"profile_background_tile":false,"protected":false,"profile_background_color":"352726","name":"THE_REAL_SHAQ","followers_count":255,"url":"http://remi.org","id":11043342,"created_at":"Tue Dec 11 09:13:43 +0000 2007","profile_sidebar_fill_color":"99CC33","description":"Beer goes in, Code comes out"}}
         | 
| @@ -0,0 +1,211 @@ | |
| 1 | 
            +
            <html xmlns="http://www.w3.org/1999/xhtml">
         | 
| 2 | 
            +
            <head>
         | 
| 3 | 
            +
              <title>Action Controller: Exception caught</title>
         | 
| 4 | 
            +
              <style>
         | 
| 5 | 
            +
                body { background-color: #fff; color: #333; }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                body, p, ol, ul, td {
         | 
| 8 | 
            +
                  font-family: verdana, arial, helvetica, sans-serif;
         | 
| 9 | 
            +
                  font-size:   13px;
         | 
| 10 | 
            +
                  line-height: 18px;
         | 
| 11 | 
            +
                }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                pre {
         | 
| 14 | 
            +
                  background-color: #eee;
         | 
| 15 | 
            +
                  padding: 10px;
         | 
| 16 | 
            +
                  font-size: 11px;
         | 
| 17 | 
            +
                }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                a { color: #000; }
         | 
| 20 | 
            +
                a:visited { color: #666; }
         | 
| 21 | 
            +
                a:hover { color: #fff; background-color:#000; }
         | 
| 22 | 
            +
              </style>
         | 
| 23 | 
            +
            </head>
         | 
| 24 | 
            +
            <body>
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            <h1>
         | 
| 27 | 
            +
              NoMethodError
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
                in WelcomeController#index
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
            </h1>
         | 
| 32 | 
            +
            <pre>undefined method `logged_in?' for #<WelcomeController:0x7f0aa3be34f8></pre>
         | 
| 33 | 
            +
             | 
| 34 | 
            +
             | 
| 35 | 
            +
             | 
| 36 | 
            +
            <p><code>RAILS_ROOT: /home/remi/projects/remi/rack-oauth/examples/rails-example</code></p>
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            <div id="traces">
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
                
         | 
| 41 | 
            +
                <a href="#" onclick="document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Application-Trace').style.display='block';; return false;">Application Trace</a> |
         | 
| 42 | 
            +
              
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                <a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='block';; return false;">Framework Trace</a> |
         | 
| 45 | 
            +
              
         | 
| 46 | 
            +
                
         | 
| 47 | 
            +
                <a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='block';; return false;">Full Trace</a> 
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              
         | 
| 51 | 
            +
                <div id="Application-Trace" style="display: block;">
         | 
| 52 | 
            +
                  <pre><code>/home/remi/projects/remi/rack-oauth/examples/rails-example/app/controllers/welcome_controller.rb:5:in `index'</code></pre>
         | 
| 53 | 
            +
                </div>
         | 
| 54 | 
            +
              
         | 
| 55 | 
            +
                <div id="Framework-Trace" style="display: none;">
         | 
| 56 | 
            +
                  <pre><code>/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in `send'
         | 
| 57 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in `perform_action_without_filters'
         | 
| 58 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:617:in `call_filters'
         | 
| 59 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
         | 
| 60 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
         | 
| 61 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in `ms'
         | 
| 62 | 
            +
            /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
         | 
| 63 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in `ms'
         | 
| 64 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
         | 
| 65 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
         | 
| 66 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/flash.rb:146:in `perform_action'
         | 
| 67 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in `send'
         | 
| 68 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in `process_without_filters'
         | 
| 69 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:606:in `process'
         | 
| 70 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:391:in `process'
         | 
| 71 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:386:in `call'
         | 
| 72 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:437:in `call'
         | 
| 73 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:87:in `dispatch'
         | 
| 74 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:121:in `_call'
         | 
| 75 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:130:in `build_middleware_stack'
         | 
| 76 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:in `call'
         | 
| 77 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:in `call'
         | 
| 78 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
         | 
| 79 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:9:in `cache'
         | 
| 80 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:28:in `call'
         | 
| 81 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
         | 
| 82 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in `call'
         | 
| 83 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in `call'
         | 
| 84 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/params_parser.rb:15:in `call'
         | 
| 85 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/session/cookie_store.rb:93:in `call'
         | 
| 86 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/failsafe.rb:26:in `call'
         | 
| 87 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 88 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `synchronize'
         | 
| 89 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 90 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:106:in `call'
         | 
| 91 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lint.rb:47:in `_call'
         | 
| 92 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lint.rb:35:in `call'
         | 
| 93 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:313:in `process'
         | 
| 94 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:196:in `get'
         | 
| 95 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:491:in `__send__'
         | 
| 96 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:491:in `get'
         | 
| 97 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:70:in `send'
         | 
| 98 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:70:in `do_request'
         | 
| 99 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:35:in `get'
         | 
| 100 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:104:in `send'
         | 
| 101 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:104:in `request_page'
         | 
| 102 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:205:in `visit'
         | 
| 103 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:40:in `instance_eval'
         | 
| 104 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:40:in `execute'
         | 
| 105 | 
            +
            /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
         | 
| 106 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:37:in `execute'
         | 
| 107 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:207:in `run_examples'
         | 
| 108 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:205:in `each'
         | 
| 109 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:205:in `run_examples'
         | 
| 110 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:103:in `run'
         | 
| 111 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:23:in `run'
         | 
| 112 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:22:in `each'
         | 
| 113 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:22:in `run'
         | 
| 114 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/options.rb:127:in `run_examples'
         | 
| 115 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/command_line.rb:9:in `run'
         | 
| 116 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/bin/spec:4</code></pre>
         | 
| 117 | 
            +
                </div>
         | 
| 118 | 
            +
              
         | 
| 119 | 
            +
                <div id="Full-Trace" style="display: none;">
         | 
| 120 | 
            +
                  <pre><code>/home/remi/projects/remi/rack-oauth/examples/rails-example/app/controllers/welcome_controller.rb:5:in `index'
         | 
| 121 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in `send'
         | 
| 122 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in `perform_action_without_filters'
         | 
| 123 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:617:in `call_filters'
         | 
| 124 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
         | 
| 125 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
         | 
| 126 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in `ms'
         | 
| 127 | 
            +
            /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
         | 
| 128 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in `ms'
         | 
| 129 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
         | 
| 130 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
         | 
| 131 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/flash.rb:146:in `perform_action'
         | 
| 132 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in `send'
         | 
| 133 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in `process_without_filters'
         | 
| 134 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:606:in `process'
         | 
| 135 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:391:in `process'
         | 
| 136 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:386:in `call'
         | 
| 137 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:437:in `call'
         | 
| 138 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:87:in `dispatch'
         | 
| 139 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:121:in `_call'
         | 
| 140 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:130:in `build_middleware_stack'
         | 
| 141 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:in `call'
         | 
| 142 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:in `call'
         | 
| 143 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
         | 
| 144 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:9:in `cache'
         | 
| 145 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:28:in `call'
         | 
| 146 | 
            +
            /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
         | 
| 147 | 
            +
            ../../lib/rack-oauth.rb:186:in `call'
         | 
| 148 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in `call'
         | 
| 149 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in `call'
         | 
| 150 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/params_parser.rb:15:in `call'
         | 
| 151 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/session/cookie_store.rb:93:in `call'
         | 
| 152 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/failsafe.rb:26:in `call'
         | 
| 153 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 154 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `synchronize'
         | 
| 155 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in `call'
         | 
| 156 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:106:in `call'
         | 
| 157 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lint.rb:47:in `_call'
         | 
| 158 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/lint.rb:35:in `call'
         | 
| 159 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:313:in `process'
         | 
| 160 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:196:in `get'
         | 
| 161 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:491:in `__send__'
         | 
| 162 | 
            +
            /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.4/lib/action_controller/integration.rb:491:in `get'
         | 
| 163 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:70:in `send'
         | 
| 164 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:70:in `do_request'
         | 
| 165 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/rails.rb:35:in `get'
         | 
| 166 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:104:in `send'
         | 
| 167 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:104:in `request_page'
         | 
| 168 | 
            +
            /usr/lib/ruby/gems/1.8/gems/webrat-0.4.4/lib/webrat/core/session.rb:205:in `visit'
         | 
| 169 | 
            +
            (eval):2:in `visit'
         | 
| 170 | 
            +
            spec/integration/login_spec.rb:8
         | 
| 171 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:40:in `instance_eval'
         | 
| 172 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:40:in `execute'
         | 
| 173 | 
            +
            /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
         | 
| 174 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_methods.rb:37:in `execute'
         | 
| 175 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:207:in `run_examples'
         | 
| 176 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:205:in `each'
         | 
| 177 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:205:in `run_examples'
         | 
| 178 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/example/example_group_methods.rb:103:in `run'
         | 
| 179 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:23:in `run'
         | 
| 180 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:22:in `each'
         | 
| 181 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/example_group_runner.rb:22:in `run'
         | 
| 182 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/options.rb:127:in `run_examples'
         | 
| 183 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/lib/spec/runner/command_line.rb:9:in `run'
         | 
| 184 | 
            +
            /usr/lib/ruby/gems/1.8/gems/rspec-1.2.8/bin/spec:4
         | 
| 185 | 
            +
            /usr/bin/spec:19:in `load'
         | 
| 186 | 
            +
            /usr/bin/spec:19</code></pre>
         | 
| 187 | 
            +
                </div>
         | 
| 188 | 
            +
              
         | 
| 189 | 
            +
            </div>
         | 
| 190 | 
            +
             | 
| 191 | 
            +
             | 
| 192 | 
            +
             | 
| 193 | 
            +
             | 
| 194 | 
            +
             | 
| 195 | 
            +
             | 
| 196 | 
            +
            <h2 style="margin-top: 30px">Request</h2>
         | 
| 197 | 
            +
            <p><b>Parameters</b>: <pre>None</pre></p>
         | 
| 198 | 
            +
             | 
| 199 | 
            +
            <p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
         | 
| 200 | 
            +
            <div id="session_dump" style="display:none"><pre class='debug_dump'>--- 
         | 
| 201 | 
            +
            </pre></div>
         | 
| 202 | 
            +
             | 
| 203 | 
            +
             | 
| 204 | 
            +
            <h2 style="margin-top: 30px">Response</h2>
         | 
| 205 | 
            +
            <p><b>Headers</b>: <pre>{"Content-Type"=>"",
         | 
| 206 | 
            +
             "Cache-Control"=>"no-cache"}</pre></p>
         | 
| 207 | 
            +
             | 
| 208 | 
            +
             | 
| 209 | 
            +
             | 
| 210 | 
            +
            </body>
         | 
| 211 | 
            +
            </html>
         |