Commit 58188d549873eb9c4db71cf4584f42bc22cb5f8e
1 parent
64b4bd83
Exists in
staging
and in
4 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 | 24 | unless user_provider |
| 25 | 25 | user_provider = user.oauth_user_providers.create(:user => user, :provider => provider, :enabled => true) |
| 26 | 26 | end |
| 27 | - if user_provider.enabled? | |
| 27 | + if user_provider.enabled? && provider.enabled? | |
| 28 | 28 | session[:user] = user.id |
| 29 | 29 | else |
| 30 | 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 @@ |
| 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 @@ |
| 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 | ... | ... |