spec/omnicontacts/middleware/base_oauth_spec.rb in omnicontacts-0.3.7 vs spec/omnicontacts/middleware/base_oauth_spec.rb in omnicontacts-0.3.10

- old
+ new

@@ -11,10 +11,18 @@ end def redirect_path "#{ MOUNT_PATH }testprovider/callback" end + + def self.mock_session + @mock_session ||= {} + end + + def session + TestProvider.mock_session + end end OmniContacts.integration_test.enabled = true end let(:app) { @@ -29,11 +37,11 @@ get "#{ MOUNT_PATH }testprovider" get "#{ MOUNT_PATH }testprovider/callback" last_request.env["omnicontacts.contacts"].first[:email].should eq("user@example.com") end - it "should redurect to failure url" do + it "should redirect to failure url" do OmniContacts.integration_test.mock(:testprovider, "some_error" ) get "#{ MOUNT_PATH }testprovider" get "#{MOUNT_PATH }testprovider/callback" last_response.should be_redirect last_response.headers["location"].should eq("#{ MOUNT_PATH }failure?error_message=internal_error&importer=testprovider") @@ -42,12 +50,33 @@ it "should pass through state query params to the failure url" do OmniContacts.integration_test.mock(:testprovider, "some_error" ) get "#{MOUNT_PATH }testprovider/callback?state=/parent/resource/id" last_response.headers["location"].should eq("#{ MOUNT_PATH }failure?error_message=internal_error&importer=testprovider&state=/parent/resource/id") end + + it "should store request params in session" do + OmniContacts.integration_test.mock(:testprovider, :email => "user@example.com") + get "#{ MOUNT_PATH }testprovider?foo=bar" + app.session['omnicontacts.params'].should eq({'foo' => 'bar'}) + end + + it "should pass the params from session to callback environment " do + OmniContacts.integration_test.mock(:testprovider, :email => "user@example.com") + app.session.merge!({'omnicontacts.params' => {'foo' => 'bar'}}) + get "#{MOUNT_PATH }testprovider/callback?state=/parent/resource/id" + last_request.env["omnicontacts.params"].should eq({'foo' => 'bar'}) + end + + it "should pass the params from session on failure" do + OmniContacts.integration_test.mock(:testprovider, "some_error" ) + get "#{ MOUNT_PATH }testprovider" + app.session.merge!({'omnicontacts.params' => {'foo' => 'bar'}}) + get "#{MOUNT_PATH }testprovider/callback" + last_response.should be_redirect + last_response.headers["location"].should be_include("foo=bar") + end after(:all) do OmniContacts.integration_test.enabled = false OmniContacts.integration_test.clear_mocks end - -end \ No newline at end of file +end