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 |