<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>config/routes.rb</filename>
    </added>
    <added>
      <filename>rails/init.rb</filename>
    </added>
    <added>
      <filename>spec/fixtures/fakeweb.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -8,11 +8,11 @@ Installation
 
 You can include TwitterAuth as a gem in your project like so:
 
-config.gem 'mbleigh-twitter-auth', :source =&gt; 'http://gems.github.com'
+    config.gem 'mbleigh-twitter-auth', :source =&gt; 'http://gems.github.com'
 
 Or you can install it as a traditional Rails plugin:
 
-script/plugin install git://github.com/mbleigh/twitter-auth.git
+    script/plugin install git://github.com/mbleigh/twitter-auth.git
 
 Note that because TwitterAuth utilizes Rails Engines functionality introduced in Rails 2.3, it will not work with earlier versions of Rails.
 
@@ -21,8 +21,8 @@ Usage
 
 To utilize TwitterAuth in your application you will need to run the generator:
 
-script/generate twitter_auth --strategy [oauth|basic]
+    script/generate twitter_auth --strategy [oauth|basic]
 
 This will generate a migration as well as set up the stubs needed to use the Rails Engines controllers and models set up by TwitterAuth. It will also create a User class that inherits from TwitterUser, abstracting away all of the Twitter authentication functionality and leaving you a blank slate to work with for your application.
 
-Copyright (c) 2009 (Michael Bleigh)[http://www.mbleigh.com] and (Intridea, Inc.)[http://www.intridea.com/], released under the MIT license
+Copyright (c) 2009 (Michael Bleigh)[http://www.mbleigh.com] and (Intridea, Inc.)[http://www.intridea.com/], released under the MIT License</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,23 @@
 class SessionsController &lt; ApplicationController
+  def new
+    if TwitterAuth.oauth?
+      @request_token = TwitterAuth.consumer.get_request_token
+      session[:request_token] = @request_token.token
+      session[:request_token_secret] = @request_token.secret
+      redirect_to @request_token.authorize_url
+    end
+  end
 
+  def oauth_callback
+    unless session[:request_token] &amp;&amp; session[:request_token_secret]
+      flash[:error] = 'No authentication information was found in the session. Please try again.'
+      redirect_to '/' and return
+    end   
+
+    @request_token = OAuth::RequestToken.new(TwitterAuth.consumer, session[:request_token], session[:request_token_secret])
+
+    @access_token = @request_token.get_access_token
+
+   render :text =&gt; @request_token.inspect 
+  end
 end</diff>
      <filename>app/controllers/sessions_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1 @@
-# Gem Dependencies
-config.gem 'oauth'
+require File.dirname(__FILE__) + '/rails/init'</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,74 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe SessionsController do
+  describe 'routes' do
+    it 'should route /session/new to SessionsController#new' do
+      params_from(:get, '/session/new').should == {:controller =&gt; 'sessions', :action =&gt; 'new'}
+    end
 
+    it 'should route /oauth_callback to SessionsController#oauth_callback' do
+      params_from(:get, '/oauth_callback').should == {:controller =&gt; 'sessions', :action =&gt; 'oauth_callback'}
+    end
+  end
+
+  describe 'with OAuth strategy' do
+    before do
+      stub_oauth!
+    end
+
+    describe '#new' do
+      it 'should retrieve a request token' do
+        get :new
+        assigns[:request_token].token.should == 'faketoken'
+        assigns[:request_token].secret.should == 'faketokensecret'
+      end
+
+      it 'should set session variables for the request token' do
+        get :new
+        session[:request_token].should == 'faketoken'
+        session[:request_token_secret].should == 'faketokensecret'
+      end
+
+      it 'should redirect to the oauth authorization url' do
+        get :new
+        response.should redirect_to('https://twitter.com/oauth/authorize?oauth_token=faketoken')
+      end
+    end
+
+    describe '#oauth_callback' do
+      describe 'with no session info' do
+        it 'should set the flash[:error]' do
+          get :oauth_callback
+          flash[:error].should == 'No authentication information was found in the session. Please try again.'
+        end
+
+        it 'should redirect to &quot;/&quot;' do
+          get :oauth_callback
+          response.should redirect_to('/')
+        end
+      end
+
+      describe 'with proper info' do
+        before do
+          session.should_receive(:[]).any_number_of_times.with(:request_token).and_return('faketoken')
+          session.should_receive(:[]).any_number_of_times.with(:request_token_secret).and_return('faketokensecret')
+          get :oauth_callback, :oauth_token =&gt; 'faketoken'
+        end
+
+        it 'should rebuild the request token' do
+          correct_token =  OAuth::RequestToken.new(TwitterAuth.consumer,'faketoken','faketokensecret')
+          
+          %w(token secret).each do |att|
+            assigns[:request_token].send(att).should == correct_token.send(att)
+          end
+        end
+
+        it 'should exchange the request token for an access token' do
+          assigns[:access_token].should be_a(OAuth::AccessToken)
+          assigns[:access_token].token.should == 'fakeaccesstoken'
+          assigns[:access_token].secret.should == 'fakeaccesstokensecret'
+        end
+      end
+    end
+  end
 end</diff>
      <filename>spec/controllers/sessions_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,15 @@ rescue LoadError
   exit
 end
 
+require File.dirname(__FILE__) + '/fixtures/fakeweb'
+
 plugin_spec_dir = File.dirname(__FILE__)
 ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + &quot;/debug.log&quot;)
 
+def stub_oauth!
+  TwitterAuth.stub!(:config).and_return({
+    'strategy' =&gt; 'oauth',
+    'oauth_consumer_key' =&gt; 'testkey',
+    'oauth_consumer_secret' =&gt; 'testsecret'
+  })
+end</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>152d76cb39114b1ff84acc4b48067c635ca9fec5</id>
    </parent>
  </parents>
  <author>
    <name>Michael Bleigh</name>
    <email>michael@intridea.com</email>
  </author>
  <url>http://github.com/mbleigh/twitter-auth/commit/2e4be4279d2f3602de9772673ce7cb38a5f14923</url>
  <id>2e4be4279d2f3602de9772673ce7cb38a5f14923</id>
  <committed-date>2009-03-16T10:41:24-07:00</committed-date>
  <authored-date>2009-03-16T10:41:24-07:00</authored-date>
  <message>Adding things to 1.0_dev</message>
  <tree>1820c8b4fafa89b2e8520857e6f87fb746709883</tree>
  <committer>
    <name>Michael Bleigh</name>
    <email>michael@intridea.com</email>
  </committer>
</commit>
