Commit 58188d549873eb9c4db71cf4584f42bc22cb5f8e
1 parent
64b4bd83
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
oauth_client: added more tests
Showing
3 changed files
with
91 additions
and
1 deletions
Show diff stats
plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb
| @@ -24,7 +24,7 @@ class OauthClientPluginPublicController < PublicController | @@ -24,7 +24,7 @@ class OauthClientPluginPublicController < PublicController | ||
| 24 | unless user_provider | 24 | unless user_provider |
| 25 | user_provider = user.oauth_user_providers.create(:user => user, :provider => provider, :enabled => true) | 25 | user_provider = user.oauth_user_providers.create(:user => user, :provider => provider, :enabled => true) |
| 26 | end | 26 | end |
| 27 | - if user_provider.enabled? | 27 | + if user_provider.enabled? && provider.enabled? |
| 28 | session[:user] = user.id | 28 | session[:user] = user.id |
| 29 | else | 29 | else |
| 30 | session[:notice] = _("Can't login with #{provider.name}") | 30 | session[:notice] = _("Can't login with #{provider.name}") |
plugins/oauth_client/test/functional/oauth_client_plugin_public_controller_test.rb
0 → 100644
| @@ -0,0 +1,80 @@ | @@ -0,0 +1,80 @@ | ||
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
| 2 | + | ||
| 3 | +class OauthClientPluginPublicControllerTest < ActionController::TestCase | ||
| 4 | + | ||
| 5 | + def setup | ||
| 6 | + @auth = mock | ||
| 7 | + @auth.stubs(:info).returns(mock) | ||
| 8 | + request.env["omniauth.auth"] = @auth | ||
| 9 | + @environment = Environment.default | ||
| 10 | + @provider = OauthClientPlugin::Provider.create!(:name => 'provider', :strategy => 'provider', :identifier =>'provider', :enabled => true) | ||
| 11 | + end | ||
| 12 | + attr_reader :auth, :environment, :provider | ||
| 13 | + | ||
| 14 | + should 'redirect to signup when user is not found' do | ||
| 15 | + auth.info.stubs(:email).returns("xyz123@noosfero.org") | ||
| 16 | + auth.info.stubs(:name).returns('xyz123') | ||
| 17 | + session[:provider_id] = provider.id | ||
| 18 | + | ||
| 19 | + get :callback | ||
| 20 | + assert_match /.*\/account\/signup/, @response.redirect_url | ||
| 21 | + end | ||
| 22 | + | ||
| 23 | + should 'redirect to login when user is found' do | ||
| 24 | + user = fast_create(User, :environment_id => environment.id) | ||
| 25 | + auth.info.stubs(:email).returns(user.email) | ||
| 26 | + auth.info.stubs(:name).returns(user.name) | ||
| 27 | + session[:provider_id] = provider.id | ||
| 28 | + | ||
| 29 | + get :callback | ||
| 30 | + assert_redirected_to :controller => :account, :action => :login | ||
| 31 | + assert_equal user.id, session[:user] | ||
| 32 | + end | ||
| 33 | + | ||
| 34 | + should 'do not login when the provider is disabled' do | ||
| 35 | + user = fast_create(User, :environment_id => environment.id) | ||
| 36 | + auth.info.stubs(:email).returns(user.email) | ||
| 37 | + auth.info.stubs(:name).returns(user.name) | ||
| 38 | + session[:provider_id] = provider.id | ||
| 39 | + provider.update_attribute(:enabled, false) | ||
| 40 | + | ||
| 41 | + get :callback | ||
| 42 | + assert_redirected_to :controller => :account, :action => :login | ||
| 43 | + assert_equal nil, session[:user] | ||
| 44 | + end | ||
| 45 | + | ||
| 46 | + should 'do not login when the provider is disabled for a user' do | ||
| 47 | + user = fast_create(User, :environment_id => environment.id) | ||
| 48 | + auth.info.stubs(:email).returns(user.email) | ||
| 49 | + auth.info.stubs(:name).returns(user.name) | ||
| 50 | + session[:provider_id] = provider.id | ||
| 51 | + user.oauth_user_providers.create(:user => user, :provider => provider, :enabled => false) | ||
| 52 | + | ||
| 53 | + get :callback | ||
| 54 | + assert_redirected_to :controller => :account, :action => :login | ||
| 55 | + assert_equal nil, session[:user] | ||
| 56 | + end | ||
| 57 | + | ||
| 58 | + should 'save provider when an user login with it' do | ||
| 59 | + user = fast_create(User, :environment_id => environment.id) | ||
| 60 | + auth.info.stubs(:email).returns(user.email) | ||
| 61 | + auth.info.stubs(:name).returns(user.name) | ||
| 62 | + session[:provider_id] = provider.id | ||
| 63 | + | ||
| 64 | + get :callback | ||
| 65 | + assert_equal [provider], user.oauth_providers | ||
| 66 | + end | ||
| 67 | + | ||
| 68 | + should 'do not duplicate relations between an user and a provider when the same provider was used again in a login' do | ||
| 69 | + user = fast_create(User, :environment_id => environment.id) | ||
| 70 | + auth.info.stubs(:email).returns(user.email) | ||
| 71 | + auth.info.stubs(:name).returns(user.name) | ||
| 72 | + session[:provider_id] = provider.id | ||
| 73 | + | ||
| 74 | + get :callback | ||
| 75 | + assert_no_difference 'user.oauth_user_providers.count' do | ||
| 76 | + 3.times { get :callback } | ||
| 77 | + end | ||
| 78 | + end | ||
| 79 | + | ||
| 80 | +end |
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
| 2 | + | ||
| 3 | +class UserTest < ActiveSupport::TestCase | ||
| 4 | + | ||
| 5 | + should 'be able to add oauth providers in a environment' do | ||
| 6 | + env = fast_create(Environment) | ||
| 7 | + env.oauth_providers << OauthClientPlugin::Provider.new(:name => 'test', :identifier => 'test', :strategy => 'test') | ||
| 8 | + end | ||
| 9 | + | ||
| 10 | +end |