sorcery 0.3.1 → 0.4.2

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 (138) hide show
  1. data/Gemfile +3 -2
  2. data/Gemfile.lock +13 -11
  3. data/README.rdoc +89 -61
  4. data/Rakefile +4 -4
  5. data/VERSION +1 -1
  6. data/lib/generators/sorcery_migration/templates/core.rb +2 -2
  7. data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
  8. data/lib/sorcery/controller.rb +16 -18
  9. data/lib/sorcery/crypto_providers/bcrypt.rb +3 -5
  10. data/lib/sorcery/crypto_providers/common.rb +35 -0
  11. data/lib/sorcery/crypto_providers/md5.rb +3 -23
  12. data/lib/sorcery/crypto_providers/sha1.rb +4 -16
  13. data/lib/sorcery/crypto_providers/sha256.rb +3 -23
  14. data/lib/sorcery/crypto_providers/sha512.rb +3 -23
  15. data/lib/sorcery/engine.rb +4 -0
  16. data/lib/sorcery/initializers/initializer.rb +86 -0
  17. data/lib/sorcery/model/submodules/activity_logging.rb +1 -1
  18. data/lib/sorcery/model/submodules/brute_force_protection.rb +1 -1
  19. data/lib/sorcery/model/submodules/reset_password.rb +1 -1
  20. data/lib/sorcery/model.rb +25 -3
  21. data/lib/sorcery/railties/tasks.rake +10 -0
  22. data/lib/sorcery/sinatra.rb +0 -9
  23. data/lib/sorcery/test_helpers/internal/rails.rb +52 -0
  24. data/lib/sorcery/test_helpers/internal/sinatra.rb +122 -0
  25. data/lib/sorcery/test_helpers/internal.rb +55 -0
  26. data/lib/sorcery/test_helpers/rails.rb +5 -46
  27. data/lib/sorcery/test_helpers/sinatra.rb +58 -104
  28. data/lib/sorcery/test_helpers.rb +0 -35
  29. data/lib/sorcery.rb +8 -0
  30. data/sorcery.gemspec +140 -146
  31. data/spec/Gemfile +2 -2
  32. data/spec/Gemfile.lock +20 -12
  33. data/spec/Rakefile +1 -0
  34. data/spec/rails3/.rspec +1 -1
  35. data/spec/rails3/{app_root/Gemfile → Gemfile} +4 -4
  36. data/spec/rails3/{app_root/Gemfile.lock → Gemfile.lock} +20 -20
  37. data/spec/rails3/{app_root/Rakefile → Rakefile} +1 -0
  38. data/spec/rails3/config/database.yml +27 -0
  39. data/spec/rails3/{app_root/spec → spec}/controller_activity_logging_spec.rb +2 -4
  40. data/spec/rails3/{app_root/spec → spec}/controller_brute_force_protection_spec.rb +3 -2
  41. data/spec/rails3/{app_root/spec → spec}/controller_oauth2_spec.rb +10 -9
  42. data/spec/rails3/{app_root/spec → spec}/controller_oauth_spec.rb +8 -8
  43. data/spec/rails3/spec/controller_session_timeout_spec.rb +55 -0
  44. data/spec/rails3/{app_root/spec → spec}/controller_spec.rb +6 -16
  45. data/spec/rails3/spec/spec.opts +2 -0
  46. data/spec/rails3/spec/spec_helper.rb +70 -0
  47. data/spec/rails3/{app_root/spec → spec}/user_activation_spec.rb +7 -13
  48. data/spec/rails3/{app_root/spec → spec}/user_brute_force_protection_spec.rb +2 -30
  49. data/spec/rails3/{app_root/spec → spec}/user_oauth_spec.rb +3 -3
  50. data/spec/rails3/{app_root/spec → spec}/user_remember_me_spec.rb +3 -11
  51. data/spec/rails3/{app_root/spec → spec}/user_reset_password_spec.rb +20 -17
  52. data/spec/rails3/{app_root/spec → spec}/user_spec.rb +19 -9
  53. data/spec/sinatra/Gemfile +3 -3
  54. data/spec/sinatra/Gemfile.lock +17 -17
  55. data/spec/sinatra/Rakefile +1 -0
  56. data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +3 -2
  57. data/spec/sinatra/spec/controller_oauth2_spec.rb +10 -9
  58. data/spec/sinatra/spec/controller_oauth_spec.rb +5 -5
  59. data/spec/sinatra/spec/controller_session_timeout_spec.rb +28 -23
  60. data/spec/sinatra/spec/spec.opts +2 -4
  61. data/spec/sinatra/spec/spec_helper.rb +4 -2
  62. data/spec/sorcery_crypto_providers_spec.rb +5 -4
  63. data/spec/spec.opts +2 -0
  64. data/spec/spec_helper.rb +3 -4
  65. metadata +151 -149
  66. data/lib/sorcery/controller/submodules/email.rb +0 -44
  67. data/lib/sorcery/controller/submodules/oauth.rb +0 -95
  68. data/spec/rails3/app_root/.rspec +0 -1
  69. data/spec/rails3/app_root/config/database.yml +0 -27
  70. data/spec/rails3/app_root/spec/controller_session_timeout_spec.rb +0 -50
  71. data/spec/rails3/app_root/spec/spec_helper.rb +0 -62
  72. data/spec/sinatra/spec/user_activation_spec.rb +0 -188
  73. data/spec/sinatra/spec/user_activity_logging_spec.rb +0 -36
  74. data/spec/sinatra/spec/user_brute_force_protection_spec.rb +0 -76
  75. data/spec/sinatra/spec/user_oauth_spec.rb +0 -39
  76. data/spec/sinatra/spec/user_remember_me_spec.rb +0 -66
  77. data/spec/sinatra/spec/user_reset_password_spec.rb +0 -178
  78. data/spec/sinatra/spec/user_spec.rb +0 -317
  79. /data/spec/rails3/{app_root/.gitignore → .gitignore} +0 -0
  80. /data/spec/rails3/{app_root/README → README} +0 -0
  81. /data/spec/rails3/{app_root/Rakefile.unused → Rakefile.unused} +0 -0
  82. /data/spec/rails3/{app_root/app → app}/controllers/application_controller.rb +0 -0
  83. /data/spec/rails3/{app_root/app → app}/helpers/application_helper.rb +0 -0
  84. /data/spec/rails3/{app_root/app → app}/mailers/sorcery_mailer.rb +0 -0
  85. /data/spec/rails3/{app_root/app → app}/models/authentication.rb +0 -0
  86. /data/spec/rails3/{app_root/app → app}/models/user.rb +0 -0
  87. /data/spec/rails3/{app_root/app → app}/views/layouts/application.html.erb +0 -0
  88. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_email.html.erb +0 -0
  89. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_email.text.erb +0 -0
  90. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  91. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  92. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  93. /data/spec/rails3/{app_root/app → app}/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  94. /data/spec/rails3/{app_root/config → config}/application.rb +0 -0
  95. /data/spec/rails3/{app_root/config → config}/boot.rb +0 -0
  96. /data/spec/rails3/{app_root/config → config}/environment.rb +0 -0
  97. /data/spec/rails3/{app_root/config → config}/environments/development.rb +0 -0
  98. /data/spec/rails3/{app_root/config → config}/environments/in_memory.rb +0 -0
  99. /data/spec/rails3/{app_root/config → config}/environments/production.rb +0 -0
  100. /data/spec/rails3/{app_root/config → config}/environments/test.rb +0 -0
  101. /data/spec/rails3/{app_root/config → config}/initializers/backtrace_silencers.rb +0 -0
  102. /data/spec/rails3/{app_root/config → config}/initializers/inflections.rb +0 -0
  103. /data/spec/rails3/{app_root/config → config}/initializers/mime_types.rb +0 -0
  104. /data/spec/rails3/{app_root/config → config}/initializers/secret_token.rb +0 -0
  105. /data/spec/rails3/{app_root/config → config}/initializers/session_store.rb +0 -0
  106. /data/spec/rails3/{app_root/config → config}/locales/en.yml +0 -0
  107. /data/spec/rails3/{app_root/config → config}/routes.rb +0 -0
  108. /data/spec/rails3/{app_root/config.ru → config.ru} +0 -0
  109. /data/spec/rails3/{app_root/db → db}/migrate/activation/20101224223622_add_activation_to_users.rb +0 -0
  110. /data/spec/rails3/{app_root/db → db}/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
  111. /data/spec/rails3/{app_root/db → db}/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  112. /data/spec/rails3/{app_root/db → db}/migrate/core/20101224223620_create_users.rb +0 -0
  113. /data/spec/rails3/{app_root/db → db}/migrate/external/20101224223628_create_authentications.rb +0 -0
  114. /data/spec/rails3/{app_root/db → db}/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  115. /data/spec/rails3/{app_root/db → db}/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  116. /data/spec/rails3/{app_root/db → db}/schema.rb +0 -0
  117. /data/spec/rails3/{app_root/db → db}/seeds.rb +0 -0
  118. /data/spec/rails3/{app_root/lib → lib}/tasks/.gitkeep +0 -0
  119. /data/spec/rails3/{app_root/public → public}/404.html +0 -0
  120. /data/spec/rails3/{app_root/public → public}/422.html +0 -0
  121. /data/spec/rails3/{app_root/public → public}/500.html +0 -0
  122. /data/spec/rails3/{app_root/public → public}/favicon.ico +0 -0
  123. /data/spec/rails3/{app_root/public → public}/images/rails.png +0 -0
  124. /data/spec/rails3/{app_root/public → public}/index.html +0 -0
  125. /data/spec/rails3/{app_root/public → public}/javascripts/application.js +0 -0
  126. /data/spec/rails3/{app_root/public → public}/javascripts/controls.js +0 -0
  127. /data/spec/rails3/{app_root/public → public}/javascripts/dragdrop.js +0 -0
  128. /data/spec/rails3/{app_root/public → public}/javascripts/effects.js +0 -0
  129. /data/spec/rails3/{app_root/public → public}/javascripts/prototype.js +0 -0
  130. /data/spec/rails3/{app_root/public → public}/javascripts/rails.js +0 -0
  131. /data/spec/rails3/{app_root/public → public}/robots.txt +0 -0
  132. /data/spec/rails3/{app_root/public → public}/stylesheets/.gitkeep +0 -0
  133. /data/spec/rails3/{app_root/script → script}/rails +0 -0
  134. /data/spec/rails3/{app_root/spec → spec}/controller_http_basic_auth_spec.rb +0 -0
  135. /data/spec/rails3/{app_root/spec → spec}/controller_remember_me_spec.rb +0 -0
  136. /data/spec/rails3/{app_root/spec → spec}/spec_helper.orig.rb +0 -0
  137. /data/spec/rails3/{app_root/spec → spec}/user_activity_logging_spec.rb +0 -0
  138. /data/spec/rails3/{app_root/vendor → vendor}/plugins/.gitkeep +0 -0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../../
3
3
  specs:
4
- sorcery (0.3.1)
4
+ sorcery (0.4.2)
5
5
  bcrypt-ruby (~> 2.1.4)
6
6
  json (>= 1.5.1)
7
7
  oauth (>= 0.4.4)
@@ -40,7 +40,7 @@ GEM
40
40
  activemodel (= 3.0.3)
41
41
  activesupport (= 3.0.3)
42
42
  activesupport (3.0.3)
43
- addressable (2.2.4)
43
+ addressable (2.2.5)
44
44
  archive-tar-minitar (0.5.2)
45
45
  arel (2.0.7)
46
46
  bcrypt-ruby (2.1.4)
@@ -49,7 +49,7 @@ GEM
49
49
  diff-lcs (1.1.2)
50
50
  erubis (2.6.6)
51
51
  abstract (>= 1.0.0)
52
- faraday (0.5.5)
52
+ faraday (0.6.1)
53
53
  addressable (~> 2.2.4)
54
54
  multipart-post (~> 1.1.0)
55
55
  rack (< 2, >= 1.1.0)
@@ -66,12 +66,12 @@ GEM
66
66
  multi_json (0.0.5)
67
67
  multipart-post (1.1.0)
68
68
  oauth (0.4.4)
69
- oauth2 (0.1.1)
70
- faraday (~> 0.5.0)
69
+ oauth2 (0.4.0)
70
+ faraday (~> 0.6.0)
71
71
  multi_json (~> 0.0.4)
72
72
  polyglot (0.3.1)
73
73
  rack (1.2.1)
74
- rack-mount (0.6.13)
74
+ rack-mount (0.6.14)
75
75
  rack (>= 1.0.0)
76
76
  rack-test (0.5.7)
77
77
  rack (>= 1.0)
@@ -89,14 +89,14 @@ GEM
89
89
  rake (>= 0.8.7)
90
90
  thor (~> 0.14.4)
91
91
  rake (0.8.7)
92
- rspec (2.4.0)
93
- rspec-core (~> 2.4.0)
94
- rspec-expectations (~> 2.4.0)
95
- rspec-mocks (~> 2.4.0)
96
- rspec-core (2.4.0)
97
- rspec-expectations (2.4.0)
92
+ rspec (2.5.0)
93
+ rspec-core (~> 2.5.0)
94
+ rspec-expectations (~> 2.5.0)
95
+ rspec-mocks (~> 2.5.0)
96
+ rspec-core (2.5.1)
97
+ rspec-expectations (2.5.0)
98
98
  diff-lcs (~> 1.1.2)
99
- rspec-mocks (2.4.0)
99
+ rspec-mocks (2.5.0)
100
100
  ruby-debug-base19 (0.11.24)
101
101
  columnize (>= 0.3.1)
102
102
  linecache19 (>= 0.5.11)
@@ -113,10 +113,10 @@ GEM
113
113
  sinatra (1.2.0)
114
114
  rack (~> 1.1)
115
115
  tilt (< 2.0, >= 1.2.2)
116
- spork (0.9.0.rc3)
117
116
  sqlite3-ruby (1.3.2)
118
117
  thor (0.14.6)
119
118
  tilt (1.2.2)
119
+ timecop (0.3.5)
120
120
  treetop (1.4.9)
121
121
  polyglot (>= 0.3.1)
122
122
  tzinfo (0.3.24)
@@ -125,10 +125,10 @@ PLATFORMS
125
125
  ruby
126
126
 
127
127
  DEPENDENCIES
128
- rspec
128
+ rspec (~> 2.5.0)
129
129
  ruby-debug19
130
130
  simplecov (>= 0.3.8)
131
131
  sinatra (>= 1.2.0)
132
- sorcery (= 0.3.1)!
133
- spork (~> 0.9.0.rc)
132
+ sorcery (>= 0.1.0)!
134
133
  sqlite3-ruby
134
+ timecop
@@ -7,4 +7,5 @@ task :default => :spec
7
7
  desc "Run all specs"
8
8
  RSpec::Core::RakeTask.new(:spec) do |t|
9
9
  t.pattern = '**/*_spec.rb'
10
+ t.rspec_opts = ["--options #{File.dirname(__FILE__)}/spec/spec.opts"]
10
11
  end
@@ -23,6 +23,7 @@ describe Sinatra::Application do
23
23
  Sorcery::Controller::Config.reset!
24
24
  sorcery_controller_property_set(:user_class, User)
25
25
  User.delete_all
26
+ Timecop.return
26
27
  end
27
28
 
28
29
  it "should count login retries" do
@@ -50,7 +51,7 @@ describe Sinatra::Application do
50
51
  get "/test_login", :username => 'gizmo', :password => 'blabla'
51
52
  get "/test_login", :username => 'gizmo', :password => 'blabla'
52
53
  User.find_by_username('gizmo').lock_expires_at.should_not be_nil
53
- sleep 0.3
54
+ Timecop.travel(Time.now+0.3)
54
55
  get "/test_login", :username => 'gizmo', :password => 'blabla'
55
56
  User.find_by_username('gizmo').lock_expires_at.should be_nil
56
57
  end
@@ -61,7 +62,7 @@ describe Sinatra::Application do
61
62
  get "/test_login", :username => 'gizmo', :password => 'blabla'
62
63
  get "/test_login", :username => 'gizmo', :password => 'blabla'
63
64
  unlock_date = User.find_by_username('gizmo').lock_expires_at
64
- sleep 1
65
+ Timecop.travel(Time.now+1)
65
66
  get "/test_login", :username => 'gizmo', :password => 'blabla'
66
67
  User.find_by_username('gizmo').lock_expires_at.to_s.should == unlock_date.to_s
67
68
  end
@@ -15,9 +15,9 @@ describe 'MyApp' do
15
15
  ActiveRecord::Migrator.migrate("#{APP_ROOT}/db/migrate/external")
16
16
  sorcery_reload!([:external])
17
17
  sorcery_controller_property_set(:external_providers, [:facebook])
18
- sorcery_controller_oauth_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
19
- sorcery_controller_oauth_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
20
- sorcery_controller_oauth_property_set(:facebook, :callback_url, "http://blabla.com")
18
+ sorcery_controller_external_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
19
+ sorcery_controller_external_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
20
+ sorcery_controller_external_property_set(:facebook, :callback_url, "http://blabla.com")
21
21
  end
22
22
 
23
23
  after(:all) do
@@ -39,7 +39,8 @@ describe 'MyApp' do
39
39
  create_new_user
40
40
  get "/login_at_test2"
41
41
  last_response.should be_a_redirect
42
- last_response.should redirect_to("http://myapi.com/oauth/authorize?client_id=key&redirect_uri=http%3A%2F%2Fblabla.com&scope=email%2Coffline_access&type=web_server")
42
+ #last_response.should redirect_to("http://myapi.com/oauth/authorize?client_id=key&redirect_uri=http%3A%2F%2Fblabla.com&scope=email%2Coffline_access&type=web_server")
43
+ last_response.should redirect_to("http://myapi.com/oauth/authorize?client_id=key&redirect_uri=http%3A%2F%2Fblabla.com&scope=email%2Coffline_access&response_type=code")
43
44
  end
44
45
 
45
46
  it "'login_from' logins if user exists" do
@@ -66,7 +67,7 @@ describe 'MyApp' do
66
67
 
67
68
  it "should create a new user" do
68
69
  sorcery_model_property_set(:authentications_class, Authentication)
69
- sorcery_controller_oauth_property_set(:facebook, :user_info_mapping, {:username => "name"})
70
+ sorcery_controller_external_property_set(:facebook, :user_info_mapping, {:username => "name"})
70
71
  lambda do
71
72
  get "/test_create_from_provider", :provider => "facebook"
72
73
  end.should change(User, :count).by(1)
@@ -75,7 +76,7 @@ describe 'MyApp' do
75
76
 
76
77
  it "should support nested attributes" do
77
78
  sorcery_model_property_set(:authentications_class, Authentication)
78
- sorcery_controller_oauth_property_set(:facebook, :user_info_mapping, {:username => "hometown/name"})
79
+ sorcery_controller_external_property_set(:facebook, :user_info_mapping, {:username => "hometown/name"})
79
80
  lambda do
80
81
  get "/test_create_from_provider", :provider => "facebook"
81
82
  end.should change(User, :count).by(1)
@@ -88,9 +89,9 @@ describe 'MyApp' do
88
89
  ActiveRecord::Migrator.migrate("#{APP_ROOT}/db/migrate/activation")
89
90
  sorcery_reload!([:user_activation,:external], :user_activation_mailer => ::SorceryMailer)
90
91
  sorcery_controller_property_set(:external_providers, [:facebook])
91
- sorcery_controller_oauth_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
92
- sorcery_controller_oauth_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
93
- sorcery_controller_oauth_property_set(:facebook, :callback_url, "http://blabla.com")
92
+ sorcery_controller_external_property_set(:facebook, :key, "eYVNBjBDi33aa9GkA3w")
93
+ sorcery_controller_external_property_set(:facebook, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
94
+ sorcery_controller_external_property_set(:facebook, :callback_url, "http://blabla.com")
94
95
  end
95
96
 
96
97
  after(:all) do
@@ -21,9 +21,9 @@ describe Sinatra::Application do
21
21
  ActiveRecord::Migrator.migrate("#{APP_ROOT}/db/migrate/external")
22
22
  sorcery_reload!([:external])
23
23
  sorcery_controller_property_set(:external_providers, [:twitter])
24
- sorcery_controller_oauth_property_set(:twitter, :key, "eYVNBjBDi33aa9GkA3w")
25
- sorcery_controller_oauth_property_set(:twitter, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
26
- sorcery_controller_oauth_property_set(:twitter, :callback_url, "http://blabla.com")
24
+ sorcery_controller_external_property_set(:twitter, :key, "eYVNBjBDi33aa9GkA3w")
25
+ sorcery_controller_external_property_set(:twitter, :secret, "XpbeSdCoaKSmQGSeokz5qcUATClRW5u08QWNfv71N8")
26
+ sorcery_controller_external_property_set(:twitter, :callback_url, "http://blabla.com")
27
27
  end
28
28
 
29
29
  after(:all) do
@@ -72,7 +72,7 @@ describe Sinatra::Application do
72
72
 
73
73
  it "should create a new user" do
74
74
  sorcery_model_property_set(:authentications_class, Authentication)
75
- sorcery_controller_oauth_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
75
+ sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
76
76
  lambda do
77
77
  get :test_create_from_provider, :provider => "twitter"
78
78
  end.should change(User, :count).by(1)
@@ -81,7 +81,7 @@ describe Sinatra::Application do
81
81
 
82
82
  it "should support nested attributes" do
83
83
  sorcery_model_property_set(:authentications_class, Authentication)
84
- sorcery_controller_oauth_property_set(:twitter, :user_info_mapping, {:username => "status/text"})
84
+ sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "status/text"})
85
85
  lambda do
86
86
  get :test_create_from_provider, :provider => "twitter"
87
87
  end.should change(User, :count).by(1)
@@ -10,6 +10,10 @@ describe Sinatra::Application do
10
10
  create_new_user
11
11
  end
12
12
 
13
+ after(:each) do
14
+ Timecop.return
15
+ end
16
+
13
17
  it "should not reset session before session timeout" do
14
18
  session[:user_id] = User.first.id
15
19
  get "/test_should_be_logged_in"
@@ -19,34 +23,35 @@ describe Sinatra::Application do
19
23
  it "should reset session after session timeout" do
20
24
  get "/test_login", :username => 'gizmo', :password => 'secret'
21
25
  session[:user_id].should_not be_nil
22
- sleep 0.6
26
+ Timecop.travel(Time.now+0.6)
23
27
  get "/test_should_be_logged_in"
24
28
  last_response.should be_a_redirect
25
29
  end
26
30
 
27
- it "with 'session_timeout_from_last_action' should not logout if there was activity" do
28
- session[:user_id] = nil
29
- sorcery_controller_property_set(:session_timeout,2)
30
- sorcery_controller_property_set(:session_timeout_from_last_action, true)
31
- get "/test_login", :username => 'gizmo', :password => 'secret'
32
- sleep 1
33
- get "/test_should_be_logged_in"
34
- session[:user_id].should_not be_nil
35
- sleep 1
36
- get "/test_should_be_logged_in"
37
- session[:user_id].should_not be_nil
38
- last_response.should be_ok
39
- end
31
+ context "with 'session_timeout_from_last_action'" do
32
+ it "should not logout if there was activity" do
33
+ session[:user_id] = nil
34
+ sorcery_controller_property_set(:session_timeout,2)
35
+ sorcery_controller_property_set(:session_timeout_from_last_action, true)
36
+ get "/test_login", :username => 'gizmo', :password => 'secret'
37
+ Timecop.travel(Time.now+1)
38
+ get "/test_should_be_logged_in"
39
+ session[:user_id].should_not be_nil
40
+ Timecop.travel(Time.now+1)
41
+ get "/test_should_be_logged_in"
42
+ session[:user_id].should_not be_nil
43
+ last_response.should be_ok
44
+ end
40
45
 
41
- it "with 'session_timeout_from_last_action' should logout if there was no activity" do
42
- sorcery_controller_property_set(:session_timeout,0.5)
43
- sorcery_controller_property_set(:session_timeout_from_last_action, true)
44
- get "/test_login", :username => 'gizmo', :password => 'secret'
45
- sleep 0.6
46
- get "/test_should_be_logged_in"
47
- session[:user_id].should be_nil
48
- last_response.should be_a_redirect
46
+ it "should logout if there was no activity" do
47
+ sorcery_controller_property_set(:session_timeout,0.5)
48
+ sorcery_controller_property_set(:session_timeout_from_last_action, true)
49
+ get "/test_login", :username => 'gizmo', :password => 'secret'
50
+ Timecop.travel(Time.now+0.6)
51
+ get "/test_should_be_logged_in"
52
+ session[:user_id].should be_nil
53
+ last_response.should be_a_redirect
54
+ end
49
55
  end
50
-
51
56
  end
52
57
  end
@@ -1,4 +1,2 @@
1
- --colour
2
- --format progress
3
- --loadby mtime
4
- --reverse
1
+ --color
2
+ --format documentation
@@ -3,6 +3,7 @@ $: << APP_ROOT # for model reloading
3
3
 
4
4
  require 'rack/test'
5
5
  require 'rspec'
6
+ require 'timecop'
6
7
 
7
8
  # set test environment
8
9
  set :environment, :test
@@ -19,8 +20,9 @@ end
19
20
 
20
21
  Rspec.configure do |config|
21
22
  config.send(:include, RSpecMixinExample)
22
- config.send(:include, ::Sorcery::TestHelpers)
23
23
  config.send(:include, ::Sorcery::TestHelpers::Sinatra)
24
+ config.send(:include, ::Sorcery::TestHelpers::Internal)
25
+ config.send(:include, ::Sorcery::TestHelpers::Internal::Sinatra)
24
26
  config.before(:suite) do
25
27
  ActiveRecord::Migrator.migrate("#{APP_ROOT}/db/migrate/core")
26
28
  end
@@ -36,7 +38,7 @@ require File.join(File.dirname(__FILE__), '..','user')
36
38
  require File.join(File.dirname(__FILE__), '..','authentication')
37
39
 
38
40
  class TestUser < ActiveRecord::Base
39
- activate_sorcery!
41
+ authenticates_with_sorcery!
40
42
  end
41
43
 
42
44
  class TestMailer < ActionMailer::Base
@@ -31,7 +31,7 @@ describe "Crypto Providers wrappers" do
31
31
 
32
32
  before(:all) do
33
33
  @digest = 'Noam Ben-Ari'
34
- 10.times {@digest = Digest::SHA1.hexdigest(@digest)}
34
+ Sorcery::CryptoProviders::SHA1.stretches.times {@digest = Digest::SHA1.hexdigest(@digest)}
35
35
  end
36
36
 
37
37
  after(:each) do
@@ -61,7 +61,7 @@ describe "Crypto Providers wrappers" do
61
61
 
62
62
  before(:all) do
63
63
  @digest = 'Noam Ben-Ari'
64
- 20.times {@digest = Digest::SHA256.hexdigest(@digest)}
64
+ Sorcery::CryptoProviders::SHA256.stretches.times {@digest = Digest::SHA256.hexdigest(@digest)}
65
65
  end
66
66
 
67
67
  after(:each) do
@@ -91,7 +91,7 @@ describe "Crypto Providers wrappers" do
91
91
 
92
92
  before(:all) do
93
93
  @digest = 'Noam Ben-Ari'
94
- 20.times {@digest = Digest::SHA512.hexdigest(@digest)}
94
+ Sorcery::CryptoProviders::SHA512.stretches.times {@digest = Digest::SHA512.hexdigest(@digest)}
95
95
  end
96
96
 
97
97
  after(:each) do
@@ -153,7 +153,8 @@ describe "Crypto Providers wrappers" do
153
153
  describe Sorcery::CryptoProviders::BCrypt do
154
154
 
155
155
  before(:all) do
156
- @digest = BCrypt::Password.create('Noam Ben-Ari', :cost => 10)
156
+ Sorcery::CryptoProviders::BCrypt.cost = 1
157
+ @digest = BCrypt::Password.create('Noam Ben-Ari', :cost => Sorcery::CryptoProviders::BCrypt.cost)
157
158
  end
158
159
 
159
160
  after(:each) do
data/spec/spec.opts ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
 
4
- require 'simplecov'
5
- SimpleCov.root File.join(File.dirname(__FILE__), '..', 'lib')
6
- SimpleCov.start
7
-
4
+ # require 'simplecov'
5
+ # SimpleCov.root File.join(File.dirname(__FILE__), '..', 'lib')
6
+ # SimpleCov.start
8
7
 
9
8
  require 'rspec'
10
9
  require 'sorcery'