<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,6 +7,9 @@ if defined?(Merb::Plugins)
   
   Merb::BootLoader.after_app_loads do
     require 'merb_openid/controller_extensions'
+    
+    Merb::Controller.class_eval { include MerbOpenID::ControllerExtensions }
+    MerbOpenID.store = (Merb::Config[:merb_openid] &amp;&amp; Merb::Config[:merb_openid][:store]) || OpenID::Store::Memory.new
   end
   
 end
\ No newline at end of file</diff>
      <filename>lib/merb_openid.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ module MerbOpenID
   module ControllerExtensions
     
     def openid_request?(open_id_param=params[:openid_url])
-      !!((open_id_param &amp;&amp; !open_id_param.blank?) || params[:openid_complete])
+      !!((open_id_param &amp;&amp; !open_id_param.strip.empty?) || params[:openid_complete])
     end
     
     def openid_authenticate(options={}, &amp;block)
@@ -28,12 +28,12 @@ module MerbOpenID
       end
     end
     
+    private
+    
     def openid_consumer
       @@openid_consumer ||= OpenID::Consumer.new session, MerbOpenID.store
     end
     
-    private
-    
     def begin_openid_authentication(openid_url, options={})
       fields = options[:sreg] || {}
       immediate = (options[:immediate] === true)
@@ -101,10 +101,4 @@ module MerbOpenID
     
   end
   
-end
-
-Merb::Controller.class_eval do
-  include MerbOpenID::ControllerExtensions
-end
-
-MerbOpenID.store = (Merb::Config[:merb_openid] &amp;&amp; Merb::Config[:merb_openid][:store]) || OpenID::Store::Memory.new
\ No newline at end of file
+end
\ No newline at end of file</diff>
      <filename>lib/merb_openid/controller_extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,90 @@
 require File.dirname(__FILE__) + '/spec_helper'
+require 'merb_openid/controller_extensions'
 
-describe &quot;merb_openid&quot; do
-  it &quot;should do nothing&quot; do
-    true.should == true
+describe &quot;Controller with merb_openid mixed in&quot; do
+  before(:each) do
+    mock_consumer = mock('openid_consumer')
+    
+    mock_openid_request = mock('openid_request')
+    mock_openid_request.stub!(:return_to_args).and_return({})
+    mock_openid_request.stub!(:add_extension)
+    mock_openid_request.stub!(:redirect_url).and_return('http://openidprovider.com')
+    
+    
+    @controller = Class.new {
+      include MerbOpenID::ControllerExtensions
+      
+      attr_accessor :params, :session, :mock_consumer, :mock_request
+      
+      def initialize
+        @params, @session = {}, {}
+      end
+      
+      def openid_consumer
+        @mock_openid_consumer ||= begin 
+          c = mock_consumer
+          c.stub!(:begin).and_return(mock_request)
+          c
+        end
+      end
+      
+      def request
+        Struct.new(:protocol, :host, :uri).new('http://', 'danwebb.net', '/foreskin')
+      end
+      
+      def redirect(url)
+      end
+      
+    }.new
+    
+    @controller.mock_consumer = mock_consumer
+    @controller.mock_request = mock_openid_request
   end
+  
+  it 'should be an OpenID request if openid_url param provided' do
+    @controller.params[:openid_url] = 'aurl.com'
+    
+    @controller.should be_openid_request
+  end
+  
+  it 'should be an OpenID request if open_id_complete param is provided' do
+    @controller.params[:openid_complete] = '1'
+    
+    @controller.should be_openid_request
+  end
+  
+  it 'should not be an openid request if openid_url is provided but its blank' do
+    @controller.params[:openid_url] = '   '
+    
+    @controller.should_not be_openid_request
+  end
+  
+  it 'openid_authenticate should begin a OpenID request if openid_complete is not in the params hash' do
+    @controller.params[:openid_url] = 'danwebb.net'
+    @controller.should_receive(:begin_openid_authentication)
+    @controller.openid_authenticate
+  end
+  
+  it 'openid_authenticate should complete a OpenID request if openid_complete is in the params hash' do
+    @controller.params[:openid_complete] = '1'
+    @controller.should_receive(:complete_openid_authentication)
+    @controller.openid_authenticate
+  end
+  
+  it 'should add sreg fields if fields option given' do
+    @controller.params[:openid_url] = 'danwebb.net'
+    
+    @controller.mock_request.should_receive(:add_extension)
+    
+    @controller.openid_authenticate(:sreg =&gt; [:email])
+  end
+  
+  it 'should redirect to OpenID provider' do
+     @controller.params[:openid_url] = 'danwebb.net'
+     
+     @controller.should_receive(:redirect).with('http://openidprovider.com')
+     
+     @controller.openid_authenticate
+  end
+  
 end
\ No newline at end of file</diff>
      <filename>spec/merb_openid_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2daddc056a02e4c42c65c9f62b413de36d730558</id>
    </parent>
  </parents>
  <author>
    <name>Dan Webb</name>
    <email>dan@danwebb.net</email>
  </author>
  <url>http://github.com/danwrong/merb_openid/commit/17637ad3e82d8e31ce1f9ececa409e74606cf992</url>
  <id>17637ad3e82d8e31ce1f9ececa409e74606cf992</id>
  <committed-date>2008-06-23T09:42:07-07:00</committed-date>
  <authored-date>2008-06-23T09:42:07-07:00</authored-date>
  <message>added some very simple specs</message>
  <tree>a98e76aabf7324aa85dad41b3711458ebc06f6f4</tree>
  <committer>
    <name>Dan Webb</name>
    <email>dan@danwebb.net</email>
  </committer>
</commit>
