sorcery 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sorcery might be problematic. Click here for more details.

Files changed (281) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +54 -0
  3. data/.travis.yml +13 -1
  4. data/CHANGELOG.md +234 -0
  5. data/Gemfile +17 -14
  6. data/Gemfile.rails4 +24 -0
  7. data/README.md +300 -0
  8. data/Rakefile +3 -79
  9. data/VERSION +1 -1
  10. data/lib/generators/sorcery/helpers.rb +40 -0
  11. data/lib/generators/sorcery/install_generator.rb +21 -17
  12. data/lib/generators/sorcery/templates/initializer.rb +1 -1
  13. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
  14. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -7
  15. data/lib/generators/sorcery/templates/migration/core.rb +5 -8
  16. data/lib/generators/sorcery/templates/migration/external.rb +1 -5
  17. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
  18. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
  19. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
  20. data/lib/sorcery/controller.rb +16 -4
  21. data/lib/sorcery/controller/submodules/external.rb +9 -8
  22. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +2 -1
  23. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +2 -1
  24. data/lib/sorcery/controller/submodules/external/providers/github.rb +2 -1
  25. data/lib/sorcery/controller/submodules/external/providers/google.rb +2 -1
  26. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +2 -1
  27. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +2 -1
  28. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +3 -2
  29. data/lib/sorcery/controller/submodules/external/providers/vk.rb +2 -1
  30. data/lib/sorcery/controller/submodules/external/providers/xing.rb +2 -1
  31. data/lib/sorcery/controller/submodules/remember_me.rb +1 -1
  32. data/lib/sorcery/controller/submodules/session_timeout.rb +1 -1
  33. data/lib/sorcery/model.rb +9 -3
  34. data/lib/sorcery/model/adapters/mongoid.rb +3 -3
  35. data/lib/sorcery/model/submodules/brute_force_protection.rb +6 -8
  36. data/lib/sorcery/model/submodules/reset_password.rb +5 -1
  37. data/lib/sorcery/model/submodules/user_activation.rb +18 -4
  38. data/lib/sorcery/test_helpers/internal.rb +21 -4
  39. data/lib/sorcery/test_helpers/internal/rails.rb +4 -4
  40. data/lib/sorcery/test_helpers/rails.rb +2 -2
  41. data/sorcery.gemspec +25 -363
  42. data/spec/{rails3/spec → active_record}/controller_activity_logging_spec.rb +29 -19
  43. data/spec/active_record/controller_brute_force_protection_spec.rb +136 -0
  44. data/spec/{rails3/spec → active_record}/controller_http_basic_auth_spec.rb +26 -17
  45. data/spec/{rails3/spec → active_record}/controller_oauth2_spec.rb +93 -56
  46. data/spec/{rails3/spec → active_record}/controller_oauth_spec.rb +35 -29
  47. data/spec/{rails3/spec → active_record}/controller_remember_me_spec.rb +28 -28
  48. data/spec/{rails3/spec → active_record}/controller_session_timeout_spec.rb +11 -11
  49. data/spec/{rails3/spec → active_record}/controller_spec.rb +19 -19
  50. data/spec/{rails3/spec → active_record}/integration_spec.rb +2 -2
  51. data/spec/{rails3/spec → active_record}/user_activation_spec.rb +8 -6
  52. data/spec/active_record/user_activity_logging_spec.rb +8 -0
  53. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +5 -4
  54. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +5 -4
  55. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +4 -3
  56. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +6 -6
  57. data/spec/{rails3/spec → active_record}/user_spec.rb +12 -10
  58. data/spec/{rails3_mongo_mapper/spec → mongo_mapper}/controller_spec.rb +15 -15
  59. data/spec/mongo_mapper/user_activation_spec.rb +10 -0
  60. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  61. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  62. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  63. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  64. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  65. data/spec/{rails3_mongo_mapper/spec → mongo_mapper}/user_spec.rb +9 -8
  66. data/spec/{rails3_mongoid/spec → mongoid}/controller_activity_logging_spec.rb +8 -8
  67. data/spec/{rails3_mongoid/spec → mongoid}/controller_spec.rb +14 -14
  68. data/spec/mongoid/user_activation_spec.rb +10 -0
  69. data/spec/mongoid/user_activity_logging_spec.rb +9 -0
  70. data/spec/mongoid/user_brute_force_protection_spec.rb +9 -0
  71. data/spec/mongoid/user_oauth_spec.rb +9 -0
  72. data/spec/mongoid/user_remember_me_spec.rb +9 -0
  73. data/spec/mongoid/user_reset_password_spec.rb +9 -0
  74. data/spec/{rails3_mongoid/spec → mongoid}/user_spec.rb +10 -9
  75. data/spec/orm/active_record.rb +7 -0
  76. data/spec/orm/mongo_mapper.rb +10 -0
  77. data/spec/orm/mongoid.rb +17 -0
  78. data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  79. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  80. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  81. data/spec/{rails3/app/controllers/application_controller.rb → rails_app/app/controllers/sorcery_controller.rb} +26 -15
  82. data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  83. data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  84. data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  85. data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +0 -0
  86. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  87. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  88. data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  89. data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  90. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  91. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  92. data/spec/{rails3/app/views/sorcery_mailer/activation_success_email.html.erb → rails_app/app/views/sorcery_mailer/activation_needed_email.html.erb} +0 -0
  93. data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  94. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  95. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  96. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  97. data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
  98. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  99. data/spec/{rails3_mongoid → rails_app}/config/application.rb +13 -8
  100. data/spec/rails_app/config/boot.rb +4 -0
  101. data/spec/rails_app/config/database.yml +22 -0
  102. data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  103. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  104. data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  105. data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  106. data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  107. data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  108. data/spec/{rails3 → rails_app}/config/initializers/session_store.rb +4 -0
  109. data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  110. data/spec/rails_app/config/routes.rb +37 -0
  111. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  112. data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
  113. data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  114. data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +0 -0
  115. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  116. data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  117. data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  118. data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
  119. data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
  120. data/spec/{rails3 → rails_app}/public/404.html +0 -0
  121. data/spec/{rails3 → rails_app}/public/422.html +0 -0
  122. data/spec/{rails3 → rails_app}/public/500.html +0 -0
  123. data/spec/{rails3 → rails_app}/public/favicon.ico +0 -0
  124. data/spec/{rails3 → rails_app}/public/images/rails.png +0 -0
  125. data/spec/{rails3 → rails_app}/public/javascripts/application.js +0 -0
  126. data/spec/{rails3 → rails_app}/public/javascripts/controls.js +0 -0
  127. data/spec/{rails3 → rails_app}/public/javascripts/dragdrop.js +0 -0
  128. data/spec/{rails3 → rails_app}/public/javascripts/effects.js +0 -0
  129. data/spec/{rails3 → rails_app}/public/javascripts/prototype.js +0 -0
  130. data/spec/{rails3 → rails_app}/public/javascripts/rails.js +0 -0
  131. data/spec/{rails3 → rails_app}/public/robots.txt +0 -0
  132. data/spec/{rails3/lib/tasks → rails_app/public/stylesheets}/.gitkeep +0 -0
  133. data/spec/shared_examples/controller_oauth_shared_examples.rb +22 -8
  134. data/spec/shared_examples/user_activation_shared_examples.rb +49 -27
  135. data/spec/shared_examples/user_reset_password_shared_examples.rb +33 -21
  136. data/spec/shared_examples/user_shared_examples.rb +65 -50
  137. data/spec/sorcery_crypto_providers_spec.rb +47 -45
  138. data/spec/spec_helper.rb +38 -4
  139. metadata +117 -254
  140. data/Gemfile.lock +0 -175
  141. data/README.rdoc +0 -261
  142. data/spec/Gemfile +0 -12
  143. data/spec/Gemfile.lock +0 -129
  144. data/spec/README.md +0 -31
  145. data/spec/Rakefile +0 -12
  146. data/spec/rails3/.gitignore +0 -4
  147. data/spec/rails3/.rspec +0 -1
  148. data/spec/rails3/Gemfile +0 -15
  149. data/spec/rails3/Gemfile.lock +0 -162
  150. data/spec/rails3/README +0 -256
  151. data/spec/rails3/Rakefile +0 -11
  152. data/spec/rails3/config.ru +0 -4
  153. data/spec/rails3/config/application.rb +0 -46
  154. data/spec/rails3/config/boot.rb +0 -13
  155. data/spec/rails3/config/database.yml +0 -27
  156. data/spec/rails3/config/environments/development.rb +0 -26
  157. data/spec/rails3/config/environments/in_memory.rb +0 -35
  158. data/spec/rails3/config/environments/production.rb +0 -49
  159. data/spec/rails3/config/environments/test.rb +0 -35
  160. data/spec/rails3/config/routes.rb +0 -59
  161. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  162. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  163. data/spec/rails3/script/rails +0 -6
  164. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
  165. data/spec/rails3/spec/spec.opts +0 -2
  166. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  167. data/spec/rails3/spec/spec_helper.rb +0 -71
  168. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  169. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  170. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  171. data/spec/rails3_mongo_mapper/.rspec +0 -1
  172. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  173. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  174. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  175. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  176. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  177. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  178. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  179. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  180. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  181. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  182. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  183. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  184. data/spec/rails3_mongo_mapper/config/application.rb +0 -51
  185. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  186. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  187. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  188. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  189. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  190. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  191. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  192. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  193. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  194. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  195. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  196. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  197. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  198. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  199. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  200. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  201. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  202. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  203. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  204. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  205. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  206. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  207. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  208. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  209. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  210. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  211. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  212. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  213. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  214. data/spec/rails3_mongo_mapper/script/rails +0 -6
  215. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  216. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  217. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  218. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  219. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  220. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  221. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  222. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  223. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  224. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  225. data/spec/rails3_mongoid/.gitignore +0 -4
  226. data/spec/rails3_mongoid/.rspec +0 -1
  227. data/spec/rails3_mongoid/Gemfile +0 -15
  228. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  229. data/spec/rails3_mongoid/Rakefile +0 -11
  230. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  231. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  232. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  233. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  234. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  235. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  236. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  237. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  238. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  239. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  240. data/spec/rails3_mongoid/config.ru +0 -4
  241. data/spec/rails3_mongoid/config/boot.rb +0 -13
  242. data/spec/rails3_mongoid/config/environment.rb +0 -5
  243. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  244. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  245. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  246. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  247. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  248. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  249. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  250. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  251. data/spec/rails3_mongoid/config/initializers/session_store.rb +0 -8
  252. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  253. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  254. data/spec/rails3_mongoid/config/routes.rb +0 -59
  255. data/spec/rails3_mongoid/db/schema.rb +0 -23
  256. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  257. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  258. data/spec/rails3_mongoid/public/404.html +0 -26
  259. data/spec/rails3_mongoid/public/422.html +0 -26
  260. data/spec/rails3_mongoid/public/500.html +0 -26
  261. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  262. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  263. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  264. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  265. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  266. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  267. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  268. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  269. data/spec/rails3_mongoid/public/robots.txt +0 -5
  270. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  271. data/spec/rails3_mongoid/script/rails +0 -6
  272. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  273. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  274. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  275. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  276. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  277. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  278. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  279. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  280. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  281. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
@@ -0,0 +1,22 @@
1
+ class CreateAuthenticationsAndUserProviders < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :authentications do |t|
4
+ t.integer :user_id, null: false
5
+ t.string :provider, :uid, null: false
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ create_table :user_providers do |t|
11
+ t.integer :user_id, null: false
12
+ t.string :provider, :uid, null: false
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+
18
+ def self.down
19
+ drop_table :authentications
20
+ drop_table :user_providers
21
+ end
22
+ end
File without changes
File without changes
@@ -5,7 +5,7 @@ shared_examples_for "oauth_controller" do
5
5
  User.delete_all
6
6
  Authentication.delete_all
7
7
  end
8
-
8
+
9
9
  it "should create a new user" do
10
10
  sorcery_model_property_set(:authentications_class, Authentication)
11
11
  sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
@@ -14,7 +14,7 @@ shared_examples_for "oauth_controller" do
14
14
  end.should change(User, :count).by(1)
15
15
  User.first.username.should == "nbenari"
16
16
  end
17
-
17
+
18
18
  it "should support nested attributes" do
19
19
  sorcery_model_property_set(:authentications_class, Authentication)
20
20
  sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "status/text"})
@@ -23,7 +23,7 @@ shared_examples_for "oauth_controller" do
23
23
  end.should change(User, :count).by(1)
24
24
  User.first.username.should == "coming soon to sorcery gem: twitter and facebook authentication support."
25
25
  end
26
-
26
+
27
27
  it "should not crash on missing nested attributes" do
28
28
  sorcery_model_property_set(:authentications_class, Authentication)
29
29
  sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "status/text", :created_at => "does/not/exist"})
@@ -33,15 +33,29 @@ shared_examples_for "oauth_controller" do
33
33
  User.first.username.should == "coming soon to sorcery gem: twitter and facebook authentication support."
34
34
  User.first.created_at.should_not be_nil
35
35
  end
36
-
36
+
37
+ it "binds new provider" do
38
+ sorcery_model_property_set(:authentications_class, UserProvider)
39
+
40
+ current_user = custom_create_new_external_user(:facebook, UserProvider)
41
+ login_user(current_user)
42
+
43
+ lambda do
44
+ get :test_add_second_provider, :provider => "twitter"
45
+ end.should change(UserProvider, :count).by(1)
46
+
47
+ UserProvider.where(:user_id => current_user.id).should have(2).items
48
+ User.should have(1).item
49
+ end
50
+
37
51
  describe "with a block" do
38
-
52
+
39
53
  before(:each) do
40
54
  user = User.new(:username => 'nbenari')
41
55
  user.save!(:validate => false)
42
56
  user.authentications.create(:provider => 'github', :uid => '456')
43
57
  end
44
-
58
+
45
59
  it "should not create user" do
46
60
  sorcery_model_property_set(:authentications_class, Authentication)
47
61
  sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
@@ -49,7 +63,7 @@ shared_examples_for "oauth_controller" do
49
63
  get :test_create_from_provider_with_block, :provider => "twitter"
50
64
  end.should_not change(User, :count)
51
65
  end
52
-
66
+
53
67
  end
54
68
  end
55
- end
69
+ end
@@ -4,32 +4,32 @@ shared_examples_for "rails_3_activation_model" do
4
4
  before(:all) do
5
5
  sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
6
6
  end
7
-
7
+
8
8
  after(:each) do
9
9
  User.sorcery_config.reset!
10
10
  sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
11
11
  end
12
-
12
+
13
13
  it "should enable configuration option 'activation_state_attribute_name'" do
14
14
  sorcery_model_property_set(:activation_state_attribute_name, :status)
15
- User.sorcery_config.activation_state_attribute_name.should equal(:status)
15
+ User.sorcery_config.activation_state_attribute_name.should equal(:status)
16
16
  end
17
-
17
+
18
18
  it "should enable configuration option 'activation_token_attribute_name'" do
19
19
  sorcery_model_property_set(:activation_token_attribute_name, :code)
20
- User.sorcery_config.activation_token_attribute_name.should equal(:code)
20
+ User.sorcery_config.activation_token_attribute_name.should equal(:code)
21
21
  end
22
-
22
+
23
23
  it "should enable configuration option 'user_activation_mailer'" do
24
24
  sorcery_model_property_set(:user_activation_mailer, TestMailer)
25
- User.sorcery_config.user_activation_mailer.should equal(TestMailer)
25
+ User.sorcery_config.user_activation_mailer.should equal(TestMailer)
26
26
  end
27
-
27
+
28
28
  it "should enable configuration option 'activation_needed_email_method_name'" do
29
29
  sorcery_model_property_set(:activation_needed_email_method_name, :my_activation_email)
30
30
  User.sorcery_config.activation_needed_email_method_name.should equal(:my_activation_email)
31
31
  end
32
-
32
+
33
33
  it "should enable configuration option 'activation_success_email_method_name'" do
34
34
  sorcery_model_property_set(:activation_success_email_method_name, :my_activation_email)
35
35
  User.sorcery_config.activation_success_email_method_name.should equal(:my_activation_email)
@@ -39,7 +39,7 @@ shared_examples_for "rails_3_activation_model" do
39
39
  sorcery_model_property_set(:activation_mailer_disabled, :my_activation_mailer_disabled)
40
40
  User.sorcery_config.activation_mailer_disabled.should equal(:my_activation_mailer_disabled)
41
41
  end
42
-
42
+
43
43
  it "if mailer is nil and mailer is enabled, throw exception!" do
44
44
  expect{sorcery_reload!([:user_activation], :activation_mailer_disabled => false)}.to raise_error(ArgumentError)
45
45
  end
@@ -54,17 +54,17 @@ shared_examples_for "rails_3_activation_model" do
54
54
  before(:all) do
55
55
  sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
56
56
  end
57
-
57
+
58
58
  before(:each) do
59
59
  create_new_user
60
60
  end
61
-
61
+
62
62
  it "should initialize user state to 'pending'" do
63
63
  @user.activation_state.should == "pending"
64
64
  end
65
-
65
+
66
66
  specify { @user.should respond_to(:activate!) }
67
-
67
+
68
68
  it "should clear activation code and change state to 'active' on activation" do
69
69
  activation_token = @user.activation_token
70
70
  @user.activate!
@@ -82,9 +82,15 @@ shared_examples_for "rails_3_activation_model" do
82
82
  ActionMailer::Base.deliveries.size.should == old_size + 1
83
83
  end
84
84
 
85
+ it "should call send_activation_needed_email! method of user" do
86
+ user = build_new_user
87
+ user.should_receive(:send_activation_needed_email!).once
88
+ user.save!
89
+ end
90
+
85
91
  it "subsequent saves do not send activation email" do
86
92
  old_size = ActionMailer::Base.deliveries.size
87
- @user.username = "Shauli"
93
+ @user.email = "Shauli"
88
94
  @user.save!
89
95
  ActionMailer::Base.deliveries.size.should == old_size
90
96
  end
@@ -95,10 +101,15 @@ shared_examples_for "rails_3_activation_model" do
95
101
  ActionMailer::Base.deliveries.size.should == old_size + 1
96
102
  end
97
103
 
104
+ it "should call send_activation_success_email! method of user on activation" do
105
+ @user.should_receive(:send_activation_success_email!).once
106
+ @user.activate!
107
+ end
108
+
98
109
  it "subsequent saves do not send activation success email" do
99
110
  @user.activate!
100
111
  old_size = ActionMailer::Base.deliveries.size
101
- @user.username = "Shauli"
112
+ @user.email = "Shauli"
102
113
  @user.save!
103
114
  ActionMailer::Base.deliveries.size.should == old_size
104
115
  end
@@ -129,11 +140,22 @@ shared_examples_for "rails_3_activation_model" do
129
140
  ActionMailer::Base.deliveries.size.should == old_size
130
141
  end
131
142
 
143
+ it "should not call send_activation_needed_email! method of user" do
144
+ user = build_new_user
145
+ user.should_receive(:send_activation_needed_email!).never
146
+ user.save!
147
+ end
148
+
132
149
  it "should not send the user an activation success email on successful activation" do
133
150
  old_size = ActionMailer::Base.deliveries.size
134
151
  @user.activate!
135
152
  ActionMailer::Base.deliveries.size.should == old_size
136
153
  end
154
+
155
+ it "should call send_activation_success_email! method of user on activation" do
156
+ @user.should_receive(:send_activation_success_email!).never
157
+ @user.activate!
158
+ end
137
159
  end
138
160
  end
139
161
 
@@ -148,52 +170,52 @@ shared_examples_for "rails_3_activation_model" do
148
170
  end
149
171
 
150
172
  it "should not allow a non-active user to authenticate" do
151
- User.authenticate(@user.username,'secret').should be_false
173
+ User.authenticate(@user.email, 'secret').should be_false
152
174
  end
153
-
175
+
154
176
  it "should allow a non-active user to authenticate if configured so" do
155
177
  sorcery_model_property_set(:prevent_non_active_users_to_login, false)
156
- User.authenticate(@user.username,'secret').should be_true
178
+ User.authenticate(@user.email, 'secret').should be_true
157
179
  end
158
180
  end
159
-
181
+
160
182
  describe User, "load_from_activation_token" do
161
183
  before(:all) do
162
184
  sorcery_reload!([:user_activation], :user_activation_mailer => ::SorceryMailer)
163
185
  end
164
-
186
+
165
187
  after(:each) do
166
188
  Timecop.return
167
189
  end
168
-
190
+
169
191
  it "load_from_activation_token should return user when token is found" do
170
192
  create_new_user
171
193
  User.load_from_activation_token(@user.activation_token).should == @user
172
194
  end
173
-
195
+
174
196
  it "load_from_activation_token should NOT return user when token is NOT found" do
175
197
  create_new_user
176
198
  User.load_from_activation_token("a").should == nil
177
199
  end
178
-
200
+
179
201
  it "load_from_activation_token should return user when token is found and not expired" do
180
202
  sorcery_model_property_set(:activation_token_expiration_period, 500)
181
203
  create_new_user
182
204
  User.load_from_activation_token(@user.activation_token).should == @user
183
205
  end
184
-
206
+
185
207
  it "load_from_activation_token should NOT return user when token is found and expired" do
186
208
  sorcery_model_property_set(:activation_token_expiration_period, 0.1)
187
209
  create_new_user
188
210
  Timecop.travel(Time.now.in_time_zone+0.5)
189
211
  User.load_from_activation_token(@user.activation_token).should == nil
190
212
  end
191
-
213
+
192
214
  it "load_from_activation_token should return nil if token is blank" do
193
215
  User.load_from_activation_token(nil).should == nil
194
216
  User.load_from_activation_token("").should == nil
195
217
  end
196
-
218
+
197
219
  it "load_from_activation_token should always be valid if expiration period is nil" do
198
220
  sorcery_model_property_set(:activation_token_expiration_period, nil)
199
221
  create_new_user
@@ -1,22 +1,22 @@
1
1
  shared_examples_for "rails_3_reset_password_model" do
2
2
  # ----------------- PLUGIN CONFIGURATION -----------------------
3
3
  describe User, "loaded plugin configuration" do
4
-
4
+
5
5
  before(:all) do
6
6
  sorcery_reload!([:reset_password], :reset_password_mailer => ::SorceryMailer)
7
7
  end
8
-
8
+
9
9
  after(:each) do
10
10
  User.sorcery_config.reset!
11
11
  end
12
-
12
+
13
13
  context "API" do
14
14
  before(:all) do
15
15
  create_new_user
16
16
  end
17
-
17
+
18
18
  specify { @user.should respond_to(:deliver_reset_password_instructions!) }
19
-
19
+
20
20
  specify { @user.should respond_to(:change_password!) }
21
21
 
22
22
  it "should respond to .load_from_reset_password_token" do
@@ -28,7 +28,7 @@ shared_examples_for "rails_3_reset_password_model" do
28
28
  sorcery_model_property_set(:reset_password_token_attribute_name, :my_code)
29
29
  User.sorcery_config.reset_password_token_attribute_name.should equal(:my_code)
30
30
  end
31
-
31
+
32
32
  it "should allow configuration option 'reset_password_mailer'" do
33
33
  sorcery_model_property_set(:reset_password_mailer, TestUser)
34
34
  User.sorcery_config.reset_password_mailer.should equal(TestUser)
@@ -38,30 +38,30 @@ shared_examples_for "rails_3_reset_password_model" do
38
38
  sorcery_model_property_set(:reset_password_mailer_disabled, :my_reset_password_mailer_disabled)
39
39
  User.sorcery_config.reset_password_mailer_disabled.should equal(:my_reset_password_mailer_disabled)
40
40
  end
41
-
41
+
42
42
  it "if mailer is nil and mailer is enabled, throw exception!" do
43
43
  expect{sorcery_reload!([:reset_password], :reset_password_mailer_disabled => false)}.to raise_error(ArgumentError)
44
44
  end
45
45
 
46
46
  it "if mailer is disabled and mailer is nil, do NOT throw exception" do
47
47
  expect{sorcery_reload!([:reset_password], :reset_password_mailer_disabled => true)}.to_not raise_error
48
- end
48
+ end
49
49
 
50
50
  it "should allow configuration option 'reset_password_email_method_name'" do
51
51
  sorcery_model_property_set(:reset_password_email_method_name, :my_mailer_method)
52
52
  User.sorcery_config.reset_password_email_method_name.should equal(:my_mailer_method)
53
53
  end
54
-
54
+
55
55
  it "should allow configuration option 'reset_password_expiration_period'" do
56
56
  sorcery_model_property_set(:reset_password_expiration_period, 16)
57
57
  User.sorcery_config.reset_password_expiration_period.should equal(16)
58
58
  end
59
-
59
+
60
60
  it "should allow configuration option 'reset_password_email_sent_at_attribute_name'" do
61
61
  sorcery_model_property_set(:reset_password_email_sent_at_attribute_name, :blabla)
62
62
  User.sorcery_config.reset_password_email_sent_at_attribute_name.should equal(:blabla)
63
63
  end
64
-
64
+
65
65
  it "should allow configuration option 'reset_password_time_between_emails'" do
66
66
  sorcery_model_property_set(:reset_password_time_between_emails, 16)
67
67
  User.sorcery_config.reset_password_time_between_emails.should equal(16)
@@ -70,38 +70,38 @@ shared_examples_for "rails_3_reset_password_model" do
70
70
 
71
71
  # ----------------- PLUGIN ACTIVATED -----------------------
72
72
  describe User, "when activated with sorcery" do
73
-
73
+
74
74
  before(:all) do
75
75
  sorcery_reload!([:reset_password], :reset_password_mailer => ::SorceryMailer)
76
76
  end
77
-
77
+
78
78
  before(:each) do
79
79
  User.delete_all
80
80
  end
81
-
81
+
82
82
  after(:each) do
83
83
  Timecop.return
84
84
  end
85
-
85
+
86
86
  it "load_from_reset_password_token should return user when token is found" do
87
87
  create_new_user
88
88
  @user.deliver_reset_password_instructions!
89
89
  User.load_from_reset_password_token(@user.reset_password_token).should == @user
90
90
  end
91
-
91
+
92
92
  it "load_from_reset_password_token should NOT return user when token is NOT found" do
93
93
  create_new_user
94
94
  @user.deliver_reset_password_instructions!
95
95
  User.load_from_reset_password_token("a").should == nil
96
96
  end
97
-
97
+
98
98
  it "load_from_reset_password_token should return user when token is found and not expired" do
99
99
  create_new_user
100
100
  sorcery_model_property_set(:reset_password_expiration_period, 500)
101
101
  @user.deliver_reset_password_instructions!
102
102
  User.load_from_reset_password_token(@user.reset_password_token).should == @user
103
103
  end
104
-
104
+
105
105
  it "load_from_reset_password_token should NOT return user when token is found and expired" do
106
106
  create_new_user
107
107
  sorcery_model_property_set(:reset_password_expiration_period, 0.1)
@@ -109,19 +109,19 @@ shared_examples_for "rails_3_reset_password_model" do
109
109
  Timecop.travel(Time.now.in_time_zone+0.5)
110
110
  User.load_from_reset_password_token(@user.reset_password_token).should == nil
111
111
  end
112
-
112
+
113
113
  it "load_from_reset_password_token should always be valid if expiration period is nil" do
114
114
  create_new_user
115
115
  sorcery_model_property_set(:reset_password_expiration_period, nil)
116
116
  @user.deliver_reset_password_instructions!
117
117
  User.load_from_reset_password_token(@user.reset_password_token).should == @user
118
118
  end
119
-
119
+
120
120
  it "load_from_reset_password_token should return nil if token is blank" do
121
121
  User.load_from_reset_password_token(nil).should == nil
122
122
  User.load_from_reset_password_token("").should == nil
123
123
  end
124
-
124
+
125
125
  it "'deliver_reset_password_instructions!' should generate a reset_password_token" do
126
126
  create_new_user
127
127
  @user.reset_password_token.should be_nil
@@ -145,6 +145,12 @@ shared_examples_for "rails_3_reset_password_model" do
145
145
  @user.deliver_reset_password_instructions!
146
146
  ActionMailer::Base.deliveries.size.should == old_size + 1
147
147
  end
148
+
149
+ it "should call send_reset_password_email! on reset" do
150
+ create_new_user
151
+ @user.should_receive(:send_reset_password_email!).once
152
+ @user.deliver_reset_password_instructions!
153
+ end
148
154
 
149
155
  it "should not send an email if time between emails has not passed since last email" do
150
156
  create_new_user
@@ -180,6 +186,12 @@ shared_examples_for "rails_3_reset_password_model" do
180
186
  @user.deliver_reset_password_instructions!
181
187
  ActionMailer::Base.deliveries.size.should == old_size
182
188
  end
189
+
190
+ it "should not call send_reset_password_email! on reset" do
191
+ create_new_user
192
+ @user.should_receive(:send_reset_password_email!).never
193
+ @user.deliver_reset_password_instructions!
194
+ end
183
195
 
184
196
  it "should not send an email if time between emails has not passed since last email" do
185
197
  create_new_user