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 | 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 | ... | ... |