authlogic_rpx 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/CHANGELOG.rdoc +45 -38
  2. data/MIT-LICENSE +20 -20
  3. data/Manifest +37 -37
  4. data/README.rdoc +751 -747
  5. data/Rakefile +54 -47
  6. data/authlogic_rpx.gemspec +101 -38
  7. data/generators/add_authlogic_rpx_migration/USAGE +18 -18
  8. data/generators/add_authlogic_rpx_migration/add_authlogic_rpx_migration_generator.rb +44 -44
  9. data/generators/add_authlogic_rpx_migration/templates/migration_internal_mapping.rb +34 -34
  10. data/generators/add_authlogic_rpx_migration/templates/migration_no_mapping.rb +29 -29
  11. data/lib/authlogic_rpx.rb +8 -8
  12. data/lib/authlogic_rpx/acts_as_authentic.rb +297 -281
  13. data/lib/authlogic_rpx/helper.rb +53 -43
  14. data/lib/authlogic_rpx/rpx_identifier.rb +4 -5
  15. data/lib/authlogic_rpx/session.rb +224 -218
  16. data/lib/authlogic_rpx/version.rb +50 -50
  17. data/test/fixtures/rpxresponses.yml +20 -20
  18. data/test/fixtures/users.yml +19 -19
  19. data/test/integration/basic_authentication_and_registration_test.rb +52 -52
  20. data/test/integration/internal_mapping/basic_authentication_and_registration_test.rb +3 -3
  21. data/test/integration/internal_mapping/settings_test.rb +9 -9
  22. data/test/integration/no_mapping/basic_authentication_and_registration_test.rb +3 -3
  23. data/test/integration/no_mapping/settings_test.rb +9 -9
  24. data/test/libs/ext_test_unit.rb +30 -30
  25. data/test/libs/mock_rpx_now.rb +33 -33
  26. data/test/libs/rails_trickery.rb +40 -40
  27. data/test/libs/rpxresponse.rb +2 -2
  28. data/test/libs/user.rb +2 -2
  29. data/test/libs/user_session.rb +2 -2
  30. data/test/test_helper.rb +84 -86
  31. data/test/test_internal_mapping_helper.rb +93 -95
  32. data/test/unit/acts_as_authentic_settings_test.rb +41 -41
  33. data/test/unit/session_settings_test.rb +37 -37
  34. data/test/unit/session_validation_test.rb +15 -15
  35. data/test/unit/verify_rpx_mock_test.rb +28 -28
  36. metadata +66 -32
@@ -1,51 +1,51 @@
1
- module AuthlogicRpx
2
- # A class for describing the current version of a library. The version
3
- # consists of three parts: the +major+ number, the +minor+ number, and the
4
- # +tiny+ (or +patch+) number.
5
- class Version
6
- include Comparable
7
-
8
- # A convenience method for instantiating a new Version instance with the
9
- # given +major+, +minor+, and +tiny+ components.
10
- def self.[](major, minor, tiny)
11
- new(major, minor, tiny)
12
- end
13
-
14
- attr_reader :major, :minor, :tiny
15
-
16
- # Create a new Version object with the given components.
17
- def initialize(major, minor, tiny)
18
- @major, @minor, @tiny = major, minor, tiny
19
- end
20
-
21
- # Compare this version to the given +version+ object.
22
- def <=>(version)
23
- to_i <=> version.to_i
24
- end
25
-
26
- # Converts this version object to a string, where each of the three
27
- # version components are joined by the '.' character. E.g., 2.0.0.
28
- def to_s
29
- @to_s ||= [@major, @minor, @tiny].join(".")
30
- end
31
-
32
- # Converts this version to a canonical integer that may be compared
33
- # against other version objects.
34
- def to_i
35
- @to_i ||= @major * 1_000_000 + @minor * 1_000 + @tiny
36
- end
37
-
38
- def to_a
39
- [@major, @minor, @tiny]
40
- end
41
-
42
- MAJOR = 1
43
- MINOR = 1
44
- TINY = 1
45
-
46
- # The current version as a Version instance
47
- CURRENT = new(MAJOR, MINOR, TINY)
48
- # The current version as a String
49
- STRING = CURRENT.to_s
50
- end
1
+ module AuthlogicRpx
2
+ # A class for describing the current version of a library. The version
3
+ # consists of three parts: the +major+ number, the +minor+ number, and the
4
+ # +tiny+ (or +patch+) number.
5
+ class Version
6
+ include Comparable
7
+
8
+ # A convenience method for instantiating a new Version instance with the
9
+ # given +major+, +minor+, and +tiny+ components.
10
+ def self.[](major, minor, tiny)
11
+ new(major, minor, tiny)
12
+ end
13
+
14
+ attr_reader :major, :minor, :tiny
15
+
16
+ # Create a new Version object with the given components.
17
+ def initialize(major, minor, tiny)
18
+ @major, @minor, @tiny = major, minor, tiny
19
+ end
20
+
21
+ # Compare this version to the given +version+ object.
22
+ def <=>(version)
23
+ to_i <=> version.to_i
24
+ end
25
+
26
+ # Converts this version object to a string, where each of the three
27
+ # version components are joined by the '.' character. E.g., 2.0.0.
28
+ def to_s
29
+ @to_s ||= [@major, @minor, @tiny].join(".")
30
+ end
31
+
32
+ # Converts this version to a canonical integer that may be compared
33
+ # against other version objects.
34
+ def to_i
35
+ @to_i ||= @major * 1_000_000 + @minor * 1_000 + @tiny
36
+ end
37
+
38
+ def to_a
39
+ [@major, @minor, @tiny]
40
+ end
41
+
42
+ MAJOR = 1
43
+ MINOR = 2
44
+ TINY = 0
45
+
46
+ # The current version as a Version instance
47
+ CURRENT = new(MAJOR, MINOR, TINY)
48
+ # The current version as a String
49
+ STRING = CURRENT.to_s
50
+ end
51
51
  end
@@ -1,20 +1,20 @@
1
- valid_rpx_auth_user_one:
2
- identifier : http://provider.one/valid_rpx_auth_user_one
3
- provider_name: provider.one
4
- username: valid_rpx_auth_user_one
5
- verified_email: valid_rpx_auth_user_one@provider.one
6
- display_name: valid rpx auth user one
7
-
8
- valid_rpx_auth_user_two:
9
- identifier : http://provider.one/valid_rpx_auth_user_two
10
- provider_name: provider.one
11
- username: valid_rpx_auth_user_two
12
- verified_email: valid_rpx_auth_user_two@provider.one
13
- display_name: valid rpx auth user two
14
-
15
- unregistered_rpx_auth_user_one:
16
- identifier : http://provider.one/unregistered_rpx_auth_user_one
17
- provider_name: provider.one
18
- username: unregistered_rpx_auth_user_one
19
- verified_email: unregistered_rpx_auth_user_one@provider.one
20
- display_name: unregistered rpx auth user one
1
+ valid_rpx_auth_user_one:
2
+ identifier : http://provider.one/valid_rpx_auth_user_one
3
+ provider_name: provider.one
4
+ username: valid_rpx_auth_user_one
5
+ verified_email: valid_rpx_auth_user_one@provider.one
6
+ display_name: valid rpx auth user one
7
+
8
+ valid_rpx_auth_user_two:
9
+ identifier : http://provider.one/valid_rpx_auth_user_two
10
+ provider_name: provider.one
11
+ username: valid_rpx_auth_user_two
12
+ verified_email: valid_rpx_auth_user_two@provider.one
13
+ display_name: valid rpx auth user two
14
+
15
+ unregistered_rpx_auth_user_one:
16
+ identifier : http://provider.one/unregistered_rpx_auth_user_one
17
+ provider_name: provider.one
18
+ username: unregistered_rpx_auth_user_one
19
+ verified_email: unregistered_rpx_auth_user_one@provider.one
20
+ display_name: unregistered rpx auth user one
@@ -1,20 +1,20 @@
1
- valid_rpx_auth_user_one:
2
- login: valid_rpx_auth_user_one
3
- email: valid_rpx_auth_user_one@provider.one
4
- persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
5
- single_access_token: <%= Authlogic::Random.friendly_token %>
6
- perishable_token: <%= Authlogic::Random.friendly_token %>
7
- rpx_identifier : http://provider.one/valid_rpx_auth_user_one
8
-
9
- valid_rpx_auth_user_two:
10
- login: valid_rpx_auth_user_two
11
- email: valid_rpx_auth_user_two@provider.one
12
- persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
13
- single_access_token: <%= Authlogic::Random.friendly_token %>
14
- perishable_token: <%= Authlogic::Random.friendly_token %>
15
- rpx_identifier : http://provider.one/valid_rpx_auth_user_two
16
-
17
- invalid_rpx_auth_user_one:
18
- login: invalid_rpx_auth_user_one
19
-
1
+ valid_rpx_auth_user_one:
2
+ login: valid_rpx_auth_user_one
3
+ email: valid_rpx_auth_user_one@provider.one
4
+ persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
5
+ single_access_token: <%= Authlogic::Random.friendly_token %>
6
+ perishable_token: <%= Authlogic::Random.friendly_token %>
7
+ rpx_identifier : http://provider.one/valid_rpx_auth_user_one
8
+
9
+ valid_rpx_auth_user_two:
10
+ login: valid_rpx_auth_user_two
11
+ email: valid_rpx_auth_user_two@provider.one
12
+ persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
13
+ single_access_token: <%= Authlogic::Random.friendly_token %>
14
+ perishable_token: <%= Authlogic::Random.friendly_token %>
15
+ rpx_identifier : http://provider.one/valid_rpx_auth_user_two
16
+
17
+ invalid_rpx_auth_user_one:
18
+ login: invalid_rpx_auth_user_one
19
+
20
20
 
@@ -1,53 +1,53 @@
1
- # requires test_helper to be loaded first
2
-
3
- class BasicAuthenticationAndRegistrationTest < ActiveSupport::TestCase
4
-
5
- must "authenticate valid existing user" do
6
- test_user = users(:valid_rpx_auth_user_one)
7
- controller.params[:token] = test_user.login
8
- session = UserSession.new
9
- assert_true session.save, "should be a valid session"
10
- assert_false session.new_registration?, "should not be a new registration"
11
- assert_true session.registration_complete?, "registration should be complete"
12
- assert_equal test_user, session.record
13
- end
14
-
15
- must "do not authenticate invalidate non-existent user" do
16
- controller.params[:token] = ''
17
- session = UserSession.new
18
- assert_false session.save, "should not be a valid session"
19
- end
20
-
21
-
22
- must "auto-register an unregistered user" do
23
- # enforce Authlogic settings required for test
24
- UserSession.auto_register true
25
- User.account_merge_enabled false
26
- User.account_mapping_mode :none
27
-
28
- # get response template. set the controller token (used by RPX mock to match mock response)
29
- test_user = rpxresponses(:unregistered_rpx_auth_user_one)
30
- controller.params[:token] = test_user.username
31
-
32
- session = UserSession.new
33
- assert_true session.save, "should be a valid session"
34
- assert_true session.new_registration?, "should be a new registration"
35
- assert_true session.registration_complete?, "registration should be complete"
36
- end
37
-
38
-
39
- must "auto-register disabled for an unregistered user" do
40
- # enforce Authlogic settings required for test
41
- UserSession.auto_register false
42
- User.account_merge_enabled false
43
- User.account_mapping_mode :none
44
-
45
- # get response template. set the controller token (used by RPX mock to match mock response)
46
- test_user = rpxresponses(:unregistered_rpx_auth_user_one)
47
- controller.params[:token] = test_user.username
48
-
49
- session = UserSession.new
50
- assert_false session.save, "should not be a valid session"
51
- end
52
-
1
+ # requires test_helper to be loaded first
2
+
3
+ class BasicAuthenticationAndRegistrationTest < ActiveSupport::TestCase
4
+
5
+ must "authenticate valid existing user" do
6
+ test_user = users(:valid_rpx_auth_user_one)
7
+ controller.params[:token] = test_user.login
8
+ session = UserSession.new
9
+ assert_true session.save, "should be a valid session"
10
+ assert_false session.new_registration?, "should not be a new registration"
11
+ assert_true session.registration_complete?, "registration should be complete"
12
+ assert_equal test_user, session.record
13
+ end
14
+
15
+ must "do not authenticate invalidate non-existent user" do
16
+ controller.params[:token] = ''
17
+ session = UserSession.new
18
+ assert_false session.save, "should not be a valid session"
19
+ end
20
+
21
+
22
+ must "auto-register an unregistered user" do
23
+ # enforce Authlogic settings required for test
24
+ UserSession.auto_register true
25
+ User.account_merge_enabled false
26
+ User.account_mapping_mode :none
27
+
28
+ # get response template. set the controller token (used by RPX mock to match mock response)
29
+ test_user = rpxresponses(:unregistered_rpx_auth_user_one)
30
+ controller.params[:token] = test_user.username
31
+
32
+ session = UserSession.new
33
+ assert_true session.save, "should be a valid session"
34
+ assert_true session.new_registration?, "should be a new registration"
35
+ assert_true session.registration_complete?, "registration should be complete"
36
+ end
37
+
38
+
39
+ must "auto-register disabled for an unregistered user" do
40
+ # enforce Authlogic settings required for test
41
+ UserSession.auto_register false
42
+ User.account_merge_enabled false
43
+ User.account_mapping_mode :none
44
+
45
+ # get response template. set the controller token (used by RPX mock to match mock response)
46
+ test_user = rpxresponses(:unregistered_rpx_auth_user_one)
47
+ controller.params[:token] = test_user.username
48
+
49
+ session = UserSession.new
50
+ assert_false session.save, "should not be a valid session"
51
+ end
52
+
53
53
  end
@@ -1,3 +1,3 @@
1
- require File.dirname(__FILE__) + '/../../test_internal_mapping_helper.rb'
2
- require File.dirname(__FILE__) + '/../basic_authentication_and_registration_test.rb'
3
-
1
+ require File.dirname(__FILE__) + '/../../test_internal_mapping_helper.rb'
2
+ require File.dirname(__FILE__) + '/../basic_authentication_and_registration_test.rb'
3
+
@@ -1,10 +1,10 @@
1
- require File.dirname(__FILE__) + '/../../test_internal_mapping_helper.rb'
2
-
3
- class SettingsTest < ActiveSupport::TestCase
4
-
5
- must "account_mapping_mode :auto should resolve to :internal" do
6
- assert_equal :auto, User.account_mapping_mode
7
- assert_equal :internal, User.account_mapping_mode_used
8
- end
9
-
1
+ require File.dirname(__FILE__) + '/../../test_internal_mapping_helper.rb'
2
+
3
+ class SettingsTest < ActiveSupport::TestCase
4
+
5
+ must "account_mapping_mode :auto should resolve to :internal" do
6
+ assert_equal :auto, User.account_mapping_mode
7
+ assert_equal :internal, User.account_mapping_mode_used
8
+ end
9
+
10
10
  end
@@ -1,3 +1,3 @@
1
- require File.dirname(__FILE__) + '/../../test_helper.rb'
2
- require File.dirname(__FILE__) + '/../basic_authentication_and_registration_test.rb'
3
-
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ require File.dirname(__FILE__) + '/../basic_authentication_and_registration_test.rb'
3
+
@@ -1,10 +1,10 @@
1
- require File.dirname(__FILE__) + '/../../test_helper.rb'
2
-
3
- class SettingsTest < ActiveSupport::TestCase
4
-
5
- must "account_mapping_mode :auto should resolve to :none" do
6
- assert_equal :auto, User.account_mapping_mode
7
- assert_equal :none, User.account_mapping_mode_used
8
- end
9
-
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class SettingsTest < ActiveSupport::TestCase
4
+
5
+ must "account_mapping_mode :auto should resolve to :none" do
6
+ assert_equal :auto, User.account_mapping_mode
7
+ assert_equal :none, User.account_mapping_mode_used
8
+ end
9
+
10
10
  end
@@ -1,30 +1,30 @@
1
- module Test::Unit
2
-
3
- class TestCase
4
-
5
- def self.must(name, &block)
6
- test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
7
- defined = instance_method(test_name) rescue false
8
- raise "#{test_name} is already defined in #{self}" if defined
9
- if block_given?
10
- define_method(test_name, &block)
11
- else
12
- define_method(test_name) do
13
- flunk "No implementation provided for #{name}"
14
- end
15
- end
16
- end
17
-
18
- end
19
- end
20
-
21
-
22
- module Test::Unit::Assertions
23
- def assert_false(object, message="")
24
- assert_equal(false, object, message)
25
- end
26
- def assert_true(object, message="")
27
- assert_equal(true, object, message)
28
- end
29
- end
30
-
1
+ module Test::Unit
2
+
3
+ class TestCase
4
+
5
+ def self.must(name, &block)
6
+ test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
7
+ defined = instance_method(test_name) rescue false
8
+ raise "#{test_name} is already defined in #{self}" if defined
9
+ if block_given?
10
+ define_method(test_name, &block)
11
+ else
12
+ define_method(test_name) do
13
+ flunk "No implementation provided for #{name}"
14
+ end
15
+ end
16
+ end
17
+
18
+ end
19
+ end
20
+
21
+
22
+ module Test::Unit::Assertions
23
+ def assert_false(object, message="")
24
+ assert_equal(false, object, message)
25
+ end
26
+ def assert_true(object, message="")
27
+ assert_equal(true, object, message)
28
+ end
29
+ end
30
+
@@ -1,34 +1,34 @@
1
- require File.dirname(__FILE__) + '/rpxresponse.rb'
2
-
3
- module RPXNow
4
-
5
- def self.user_data(token, options={})
6
- data = get_test_data(token)
7
- if block_given? then yield(data) else parse_user_data(data) end
8
- end
9
-
10
- def self.parse_user_data(data)
11
- data
12
- end
13
-
14
- def self.get_test_data(token)
15
-
16
- response = Rpxresponse.find_by_username(token)
17
- if response
18
- data = {}
19
- data['profile'] = {}
20
- data['profile']['identifier'] = response.identifier
21
- data['profile']['providerName'] = response.provider_name
22
- data['profile']['preferredUsername'] = response.username
23
- data['profile']['email'] = response.verified_email
24
-
25
- data[:identifier] = data['profile']['identifier']
26
- data[:providerName] = data['profile']['providerName']
27
- data[:email] = response.verified_email
28
- data[:username] = data['profile']['preferredUsername']
29
- data[:name] = response.display_name
30
- end
31
-
32
- data
33
- end
1
+ require File.dirname(__FILE__) + '/rpxresponse.rb'
2
+
3
+ module RPXNow
4
+
5
+ def self.user_data(token, options={})
6
+ data = get_test_data(token)
7
+ if block_given? then yield(data) else parse_user_data(data) end
8
+ end
9
+
10
+ def self.parse_user_data(data)
11
+ data
12
+ end
13
+
14
+ def self.get_test_data(token)
15
+
16
+ response = Rpxresponse.find_by_username(token)
17
+ if response
18
+ data = {}
19
+ data['profile'] = {}
20
+ data['profile']['identifier'] = response.identifier
21
+ data['profile']['providerName'] = response.provider_name
22
+ data['profile']['preferredUsername'] = response.username
23
+ data['profile']['email'] = response.verified_email
24
+
25
+ data[:identifier] = data['profile']['identifier']
26
+ data[:providerName] = data['profile']['providerName']
27
+ data[:email] = response.verified_email
28
+ data[:username] = data['profile']['preferredUsername']
29
+ data[:name] = response.display_name
30
+ end
31
+
32
+ data
33
+ end
34
34
  end