Skip to content

Commit

Permalink
add specs for Salesforce provider
Browse files Browse the repository at this point in the history
  • Loading branch information
supremebeing7 authored and arnvald committed Dec 14, 2014
1 parent 9f50e64 commit f7ac9e7
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 11 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ source 'https://rubygems.org'

gem 'rails', '~> 3.2'
gem 'sqlite3'
gem 'pry'

group :mongomapper do
gem 'mongo_mapper'
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Hopefully, I've achieved this. If not, let me know.

## Useful Links

[Documentation](http://rubydoc.info/gems/sorcery) |
[Documentation](http://rubydoc.info/gems/sorcery) |
[Railscast](http://railscasts.com/episodes/283-authentication-with-sorcery) | [Simple tutorial](https://github.com/NoamB/sorcery/wiki/Simple-Password-Authentication) | [Example Rails 3 app](https://github.com/NoamB/sorcery-example-app)

Check out the tutorials in the [Wiki](https://github.com/NoamB/sorcery/wiki) for more!
Expand Down Expand Up @@ -245,7 +245,7 @@ STI is supported via a single setting in config/initializers/sorcery.rb.
**External** (see [lib/sorcery/controller/submodules/external.rb](https://github.com/NoamB/sorcery/blob/master/lib/sorcery/controller/submodules/external.rb)):

* OAuth1 and OAuth2 support (currently: Twitter, Facebook, Github, Google, Heroku,
LinkedIn, VK, LiveID and Xing)
LinkedIn, VK, LiveID, Xing, and Salesforce)
* configurable db field names and authentications table.


Expand Down
2 changes: 1 addition & 1 deletion lib/generators/sorcery/templates/initializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@


# -- external --
# What providers are supported by this app, i.e. [:twitter, :facebook, :github, :linkedin, :xing, :google, :liveid] .
# What providers are supported by this app, i.e. [:twitter, :facebook, :github, :linkedin, :xing, :google, :liveid, :salesforce] .
# Default: `[]`
#
# config.external_providers =
Expand Down
23 changes: 15 additions & 8 deletions spec/controllers/controller_oauth2_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
expect(flash[:notice]).to eq "Success!"
end

[:github, :google, :liveid, :vk].each do |provider|
[:github, :google, :liveid, :vk, :salesforce].each do |provider|

describe "with #{provider}" do

Expand Down Expand Up @@ -190,7 +190,7 @@
end

sorcery_reload!([:user_activation,:external], :user_activation_mailer => ::SorceryMailer)
sorcery_controller_property_set(:external_providers, [:facebook, :github, :google, :liveid, :vk])
sorcery_controller_property_set(:external_providers, [:facebook, :github, :google, :liveid, :vk, :salesforce])

sorcery_controller_external_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
Expand All @@ -207,6 +207,9 @@
sorcery_controller_external_property_set(:vk, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:vk, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
sorcery_controller_external_property_set(:vk, :callback_url, "http://blabla.com")
sorcery_controller_external_property_set(:salesforce, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:salesforce, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
sorcery_controller_external_property_set(:salesforce, :callback_url, "http://blabla.com")
end

after(:all) do
Expand Down Expand Up @@ -235,7 +238,7 @@
expect(ActionMailer::Base.deliveries.size).to eq old_size
end

[:github, :google, :liveid, :vk].each do |provider|
[:github, :google, :liveid, :vk, :salesforce].each do |provider|
it "does not send activation email to external users (#{provider})" do
old_size = ActionMailer::Base.deliveries.size
create_new_external_user provider
Expand Down Expand Up @@ -266,7 +269,7 @@
end
end

%w(facebook github google liveid vk).each do |provider|
%w(facebook github google liveid vk salesforce).each do |provider|
context "when #{provider}" do
before(:each) do
sorcery_controller_property_set(:register_login_time, true)
Expand Down Expand Up @@ -306,7 +309,7 @@

let(:user) { double('user', id: 42) }

%w(facebook github google liveid vk).each do |provider|
%w(facebook github google liveid vk salesforce).each do |provider|
context "when #{provider}" do
before(:each) do
sorcery_model_property_set(:authentications_class, Authentication)
Expand Down Expand Up @@ -346,6 +349,7 @@ def stub_all_oauth2_requests!
response = double(OAuth2::Response)
allow(response).to receive(:body) { {
"id"=>"123",
"user_id"=>"123", # Needed for Salesforce
"name"=>"Noam Ben Ari",
"first_name"=>"Noam",
"last_name"=>"Ben Ari",
Expand Down Expand Up @@ -376,7 +380,7 @@ def stub_all_oauth2_requests!
end

def set_external_property
sorcery_controller_property_set(:external_providers, [:facebook, :github, :google, :liveid, :vk])
sorcery_controller_property_set(:external_providers, [:facebook, :github, :google, :liveid, :vk, :salesforce])
sorcery_controller_external_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
sorcery_controller_external_property_set(:facebook, :callback_url, "http://blabla.com")
Expand All @@ -392,16 +396,19 @@ def set_external_property
sorcery_controller_external_property_set(:vk, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:vk, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
sorcery_controller_external_property_set(:vk, :callback_url, "http://blabla.com")
sorcery_controller_external_property_set(:salesforce, :key, "eYVNBjBDi33aa9GkA3w")
sorcery_controller_external_property_set(:salesforce, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
sorcery_controller_external_property_set(:salesforce, :callback_url, "http://blabla.com")
end

def provider_url(provider)
{
github: "https://github.com/login/oauth/authorize?client_id=#{::Sorcery::Controller::Config.github.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=&state=",
google: "https://accounts.google.com/o/oauth2/auth?client_id=#{::Sorcery::Controller::Config.google.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&state=",
liveid: "https://oauth.live.com/authorize?client_id=#{::Sorcery::Controller::Config.liveid.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=wl.basic+wl.emails+wl.offline_access&state=",
vk: "https://oauth.vk.com/authorize?client_id=#{::Sorcery::Controller::Config.vk.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=#{::Sorcery::Controller::Config.vk.scope}&state="
vk: "https://oauth.vk.com/authorize?client_id=#{::Sorcery::Controller::Config.vk.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=#{::Sorcery::Controller::Config.vk.scope}&state=",
salesforce: "https://login.salesforce.com/services/oauth2/authorize?client_id=#{::Sorcery::Controller::Config.salesforce.key}&display=&redirect_uri=http%3A%2F%2Fblabla.com&response_type=code&scope=#{::Sorcery::Controller::Config.salesforce.scope}&state="
}[provider]
end

end

20 changes: 20 additions & 0 deletions spec/rails_app/app/controllers/sorcery_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ def login_at_test_vk
login_at(:vk)
end

def login_at_test_salesforce
login_at(:salesforce)
end

def login_at_test_with_state
login_at(:facebook, {state: 'bla'})
end
Expand Down Expand Up @@ -168,6 +172,14 @@ def test_login_from_jira
end
end

def test_login_from_salesforce
if @user = login_from(:salesforce)
redirect_to 'bla', notice: 'Success!'
else
redirect_to 'blu', alert: 'Failed!'
end
end

def test_return_to_with_external_twitter
if @user = login_from(:twitter)
redirect_back_or_to 'bla', notice: 'Success!'
Expand Down Expand Up @@ -226,6 +238,14 @@ def test_return_to_with_external_vk
end
end

def test_return_to_with_external_salesforce
if @user = login_from(:salesforce)
redirect_back_or_to 'bla', notice: 'Success!'
else
redirect_to 'blu', alert: 'Failed!'
end
end

def test_create_from_provider
provider = params[:provider]
login_from(provider)
Expand Down
3 changes: 3 additions & 0 deletions spec/rails_app/config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
get :test_login_from_liveid
get :test_login_from_vk
get :test_login_from_jira
get :test_login_from_salesforce
get :login_at_test
get :login_at_test_twitter
get :login_at_test_facebook
Expand All @@ -31,6 +32,7 @@
get :login_at_test_liveid
get :login_at_test_vk
get :login_at_test_jira
get :login_at_test_salesforce
get :test_return_to_with_external
get :test_return_to_with_external_twitter
get :test_return_to_with_external_facebook
Expand All @@ -39,6 +41,7 @@
get :test_return_to_with_external_liveid
get :test_return_to_with_external_vk
get :test_return_to_with_external_jira
get :test_return_to_with_external_salesforce
get :test_http_basic_auth
get :some_action_making_a_non_persisted_change_to_the_user
post :test_login_with_remember
Expand Down

0 comments on commit f7ac9e7

Please sign in to comment.