authlogic_rpx 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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