sorcery 0.8.2 → 0.8.6

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 (341) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +55 -0
  3. data/.travis.yml +69 -1
  4. data/CHANGELOG.md +248 -0
  5. data/Gemfile +16 -22
  6. data/Gemfile.rails4 +22 -0
  7. data/README.md +320 -0
  8. data/Rakefile +3 -79
  9. data/VERSION +1 -1
  10. data/gemfiles/active_record-rails41.gemfile +6 -0
  11. data/gemfiles/mongo_mapper-rails41.gemfile +8 -0
  12. data/gemfiles/mongoid-rails41.gemfile +11 -0
  13. data/lib/generators/sorcery/helpers.rb +40 -0
  14. data/lib/generators/sorcery/install_generator.rb +21 -17
  15. data/lib/generators/sorcery/templates/initializer.rb +1 -1
  16. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
  17. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -7
  18. data/lib/generators/sorcery/templates/migration/core.rb +5 -8
  19. data/lib/generators/sorcery/templates/migration/external.rb +1 -5
  20. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
  21. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
  22. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
  23. data/lib/sorcery/controller/submodules/external.rb +39 -20
  24. data/lib/sorcery/controller/submodules/remember_me.rb +1 -1
  25. data/lib/sorcery/controller/submodules/session_timeout.rb +2 -2
  26. data/lib/sorcery/controller.rb +18 -11
  27. data/lib/sorcery/model/adapters/active_record.rb +7 -2
  28. data/lib/sorcery/model/adapters/datamapper.rb +123 -0
  29. data/lib/sorcery/model/adapters/mongo_mapper.rb +8 -4
  30. data/lib/sorcery/model/adapters/mongoid.rb +8 -8
  31. data/lib/sorcery/model/submodules/activity_logging.rb +24 -0
  32. data/lib/sorcery/model/submodules/brute_force_protection.rb +22 -8
  33. data/lib/sorcery/model/submodules/remember_me.rb +19 -4
  34. data/lib/sorcery/model/submodules/reset_password.rb +35 -14
  35. data/lib/sorcery/model/submodules/user_activation.rb +69 -24
  36. data/lib/sorcery/model.rb +111 -73
  37. data/lib/sorcery/protocols/oauth.rb +42 -0
  38. data/lib/sorcery/protocols/oauth2.rb +47 -0
  39. data/lib/sorcery/providers/base.rb +27 -0
  40. data/lib/sorcery/providers/facebook.rb +63 -0
  41. data/lib/sorcery/providers/github.rb +51 -0
  42. data/lib/sorcery/providers/google.rb +51 -0
  43. data/lib/sorcery/providers/linkedin.rb +66 -0
  44. data/lib/sorcery/providers/liveid.rb +53 -0
  45. data/lib/sorcery/providers/twitter.rb +59 -0
  46. data/lib/sorcery/providers/vk.rb +61 -0
  47. data/lib/sorcery/providers/xing.rb +64 -0
  48. data/lib/sorcery/test_helpers/internal/rails.rb +17 -6
  49. data/lib/sorcery/test_helpers/internal.rb +23 -6
  50. data/lib/sorcery/test_helpers/rails/controller.rb +17 -0
  51. data/lib/sorcery/test_helpers/rails/integration.rb +26 -0
  52. data/lib/sorcery/test_helpers/rails.rb +1 -10
  53. data/lib/sorcery.rb +20 -28
  54. data/sorcery.gemspec +21 -363
  55. data/spec/active_record/controller_activity_logging_spec.rb +29 -0
  56. data/spec/active_record/controller_brute_force_protection_spec.rb +158 -0
  57. data/spec/active_record/controller_http_basic_auth_spec.rb +65 -0
  58. data/spec/active_record/controller_oauth2_spec.rb +342 -0
  59. data/spec/{rails3/spec → active_record}/controller_oauth_spec.rb +69 -59
  60. data/spec/active_record/controller_remember_me_spec.rb +97 -0
  61. data/spec/active_record/controller_session_timeout_spec.rb +70 -0
  62. data/spec/active_record/controller_spec.rb +8 -0
  63. data/spec/{rails3/spec → active_record}/integration_spec.rb +3 -3
  64. data/spec/active_record/user_activation_spec.rb +18 -0
  65. data/spec/active_record/user_activity_logging_spec.rb +8 -0
  66. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +6 -5
  67. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +6 -5
  68. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +5 -4
  69. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +7 -7
  70. data/spec/active_record/user_spec.rb +37 -0
  71. data/spec/datamapper/controller_activity_logging_spec.rb +17 -0
  72. data/spec/datamapper/controller_spec.rb +8 -0
  73. data/spec/datamapper/user_activation_spec.rb +10 -0
  74. data/spec/datamapper/user_activity_logging_spec.rb +9 -0
  75. data/spec/datamapper/user_brute_force_protection_spec.rb +9 -0
  76. data/spec/datamapper/user_oauth_spec.rb +9 -0
  77. data/spec/datamapper/user_remember_me_spec.rb +8 -0
  78. data/spec/datamapper/user_reset_password_spec.rb +8 -0
  79. data/spec/datamapper/user_spec.rb +27 -0
  80. data/spec/mongo_mapper/controller_spec.rb +8 -0
  81. data/spec/mongo_mapper/user_activation_spec.rb +9 -0
  82. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  83. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  84. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  85. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  86. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  87. data/spec/mongo_mapper/user_spec.rb +37 -0
  88. data/spec/mongoid/controller_activity_logging_spec.rb +16 -0
  89. data/spec/mongoid/controller_spec.rb +8 -0
  90. data/spec/mongoid/user_activation_spec.rb +9 -0
  91. data/spec/mongoid/user_activity_logging_spec.rb +8 -0
  92. data/spec/mongoid/user_brute_force_protection_spec.rb +8 -0
  93. data/spec/mongoid/user_oauth_spec.rb +8 -0
  94. data/spec/mongoid/user_remember_me_spec.rb +8 -0
  95. data/spec/mongoid/user_reset_password_spec.rb +8 -0
  96. data/spec/mongoid/user_spec.rb +38 -0
  97. data/spec/orm/active_record.rb +9 -0
  98. data/spec/orm/datamapper.rb +34 -0
  99. data/spec/orm/mongo_mapper.rb +11 -0
  100. data/spec/orm/mongoid.rb +18 -0
  101. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  102. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  103. data/spec/rails_app/app/controllers/sorcery_controller.rb +224 -0
  104. data/spec/rails_app/app/datamapper/authentication.rb +8 -0
  105. data/spec/rails_app/app/datamapper/user.rb +7 -0
  106. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  107. data/spec/{rails3_mongo_mapper → rails_app}/config/application.rb +13 -8
  108. data/spec/rails_app/config/boot.rb +4 -0
  109. data/spec/rails_app/config/database.yml +22 -0
  110. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  111. data/spec/{rails3_mongoid → rails_app}/config/initializers/session_store.rb +4 -0
  112. data/spec/rails_app/config/routes.rb +42 -0
  113. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  114. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  115. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  116. data/spec/rails_app/log/development.log +1791 -0
  117. data/spec/shared_examples/controller_activity_logging_shared_examples.rb +125 -0
  118. data/spec/shared_examples/controller_oauth2_shared_examples.rb +32 -36
  119. data/spec/shared_examples/controller_oauth_shared_examples.rb +35 -28
  120. data/spec/shared_examples/controller_shared_examples.rb +203 -0
  121. data/spec/shared_examples/user_activation_shared_examples.rb +136 -97
  122. data/spec/shared_examples/user_activity_logging_shared_examples.rb +10 -10
  123. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +14 -13
  124. data/spec/shared_examples/user_oauth_shared_examples.rb +23 -15
  125. data/spec/shared_examples/user_remember_me_shared_examples.rb +32 -23
  126. data/spec/shared_examples/user_reset_password_shared_examples.rb +162 -129
  127. data/spec/shared_examples/user_shared_examples.rb +265 -190
  128. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  129. data/spec/spec_helper.rb +47 -4
  130. metadata +277 -501
  131. data/Gemfile.lock +0 -175
  132. data/README.rdoc +0 -261
  133. data/lib/sorcery/controller/submodules/external/protocols/oauth1.rb +0 -46
  134. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +0 -49
  135. data/lib/sorcery/controller/submodules/external/providers/base.rb +0 -21
  136. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +0 -98
  137. data/lib/sorcery/controller/submodules/external/providers/github.rb +0 -92
  138. data/lib/sorcery/controller/submodules/external/providers/google.rb +0 -91
  139. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +0 -102
  140. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +0 -92
  141. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +0 -93
  142. data/lib/sorcery/controller/submodules/external/providers/vk.rb +0 -100
  143. data/lib/sorcery/controller/submodules/external/providers/xing.rb +0 -97
  144. data/lib/sorcery/test_helpers.rb +0 -5
  145. data/spec/Gemfile +0 -12
  146. data/spec/Gemfile.lock +0 -129
  147. data/spec/README.md +0 -31
  148. data/spec/Rakefile +0 -12
  149. data/spec/rails3/.gitignore +0 -4
  150. data/spec/rails3/.rspec +0 -1
  151. data/spec/rails3/Gemfile +0 -15
  152. data/spec/rails3/Gemfile.lock +0 -162
  153. data/spec/rails3/README +0 -256
  154. data/spec/rails3/Rakefile +0 -11
  155. data/spec/rails3/app/controllers/application_controller.rb +0 -208
  156. data/spec/rails3/config/application.rb +0 -46
  157. data/spec/rails3/config/boot.rb +0 -13
  158. data/spec/rails3/config/database.yml +0 -27
  159. data/spec/rails3/config/environments/development.rb +0 -26
  160. data/spec/rails3/config/environments/in_memory.rb +0 -35
  161. data/spec/rails3/config/environments/production.rb +0 -49
  162. data/spec/rails3/config/environments/test.rb +0 -35
  163. data/spec/rails3/config/initializers/session_store.rb +0 -8
  164. data/spec/rails3/config/routes.rb +0 -59
  165. data/spec/rails3/config.ru +0 -4
  166. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  167. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  168. data/spec/rails3/script/rails +0 -6
  169. data/spec/rails3/spec/controller_activity_logging_spec.rb +0 -130
  170. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
  171. data/spec/rails3/spec/controller_http_basic_auth_spec.rb +0 -50
  172. data/spec/rails3/spec/controller_oauth2_spec.rb +0 -380
  173. data/spec/rails3/spec/controller_remember_me_spec.rb +0 -96
  174. data/spec/rails3/spec/controller_session_timeout_spec.rb +0 -55
  175. data/spec/rails3/spec/controller_spec.rb +0 -182
  176. data/spec/rails3/spec/spec.opts +0 -2
  177. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  178. data/spec/rails3/spec/spec_helper.rb +0 -71
  179. data/spec/rails3/spec/user_activation_spec.rb +0 -16
  180. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  181. data/spec/rails3/spec/user_spec.rb +0 -36
  182. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  183. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  184. data/spec/rails3_mongo_mapper/.rspec +0 -1
  185. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  186. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  187. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  188. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  189. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  190. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  191. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  192. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  193. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  194. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  195. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  196. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  197. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  198. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  199. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  200. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  201. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  202. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  203. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  204. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  205. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  206. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  207. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  208. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  209. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  210. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  211. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  212. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  213. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  214. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  215. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  216. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  217. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  218. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  219. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  220. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  221. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  222. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  223. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  224. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  225. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  226. data/spec/rails3_mongo_mapper/script/rails +0 -6
  227. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +0 -175
  228. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  229. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  230. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  231. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  232. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  233. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  234. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  235. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  236. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  237. data/spec/rails3_mongo_mapper/spec/user_spec.rb +0 -37
  238. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  239. data/spec/rails3_mongoid/.gitignore +0 -4
  240. data/spec/rails3_mongoid/.rspec +0 -1
  241. data/spec/rails3_mongoid/Gemfile +0 -15
  242. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  243. data/spec/rails3_mongoid/Rakefile +0 -11
  244. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  245. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  246. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  247. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  248. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  249. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  250. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  251. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  252. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  253. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  254. data/spec/rails3_mongoid/config/application.rb +0 -51
  255. data/spec/rails3_mongoid/config/boot.rb +0 -13
  256. data/spec/rails3_mongoid/config/environment.rb +0 -5
  257. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  258. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  259. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  260. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  261. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  262. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  263. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  264. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  265. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  266. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  267. data/spec/rails3_mongoid/config/routes.rb +0 -59
  268. data/spec/rails3_mongoid/config.ru +0 -4
  269. data/spec/rails3_mongoid/db/schema.rb +0 -23
  270. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  271. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  272. data/spec/rails3_mongoid/public/404.html +0 -26
  273. data/spec/rails3_mongoid/public/422.html +0 -26
  274. data/spec/rails3_mongoid/public/500.html +0 -26
  275. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  276. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  277. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  278. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  279. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  280. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  281. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  282. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  283. data/spec/rails3_mongoid/public/robots.txt +0 -5
  284. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  285. data/spec/rails3_mongoid/script/rails +0 -6
  286. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +0 -111
  287. data/spec/rails3_mongoid/spec/controller_spec.rb +0 -186
  288. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  289. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  290. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  291. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  292. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  293. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  294. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  295. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  296. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  297. data/spec/rails3_mongoid/spec/user_spec.rb +0 -38
  298. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
  299. /data/lib/sorcery/{controller/submodules/external/protocols → protocols}/certs/ca-bundle.crt +0 -0
  300. /data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  301. /data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  302. /data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  303. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  304. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +0 -0
  305. /data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  306. /data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  307. /data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  308. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  309. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  310. /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
  311. /data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  312. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  313. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  314. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  315. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
  316. /data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  317. /data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  318. /data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  319. /data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  320. /data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  321. /data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  322. /data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
  323. /data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  324. /data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +0 -0
  325. /data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  326. /data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  327. /data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
  328. /data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
  329. /data/spec/{rails3 → rails_app}/public/404.html +0 -0
  330. /data/spec/{rails3 → rails_app}/public/422.html +0 -0
  331. /data/spec/{rails3 → rails_app}/public/500.html +0 -0
  332. /data/spec/{rails3 → rails_app}/public/favicon.ico +0 -0
  333. /data/spec/{rails3 → rails_app}/public/images/rails.png +0 -0
  334. /data/spec/{rails3 → rails_app}/public/javascripts/application.js +0 -0
  335. /data/spec/{rails3 → rails_app}/public/javascripts/controls.js +0 -0
  336. /data/spec/{rails3 → rails_app}/public/javascripts/dragdrop.js +0 -0
  337. /data/spec/{rails3 → rails_app}/public/javascripts/effects.js +0 -0
  338. /data/spec/{rails3 → rails_app}/public/javascripts/prototype.js +0 -0
  339. /data/spec/{rails3 → rails_app}/public/javascripts/rails.js +0 -0
  340. /data/spec/{rails3 → rails_app}/public/robots.txt +0 -0
  341. /data/spec/{rails3/lib/tasks → rails_app/public/stylesheets}/.gitkeep +0 -0
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ require 'shared_examples/user_brute_force_protection_shared_examples'
4
+
5
+ describe User, "with brute_force_protection submodule", :datamapper => true do
6
+
7
+ it_behaves_like "rails_3_brute_force_protection_model"
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ require 'shared_examples/user_oauth_shared_examples'
4
+
5
+ describe User, "with oauth submodule", :datamapper => true do
6
+
7
+ it_behaves_like "rails_3_oauth_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :datamapper => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :datamapper => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rails_app/app/mailers/sorcery_mailer'
4
+ require 'shared_examples/user_shared_examples'
5
+
6
+ describe User, "with no submodules (core)", :datamapper => true do
7
+ before(:all) do
8
+ sorcery_reload!
9
+ end
10
+
11
+ context "when app has plugin loaded" do
12
+ it "User responds to .authenticates_with_sorcery!" do
13
+ expect(User).to respond_to :authenticates_with_sorcery!
14
+ end
15
+ end
16
+
17
+ # ----------------- PLUGIN CONFIGURATION -----------------------
18
+
19
+ it_should_behave_like "rails_3_core_model"
20
+
21
+ describe "external users" do
22
+
23
+ it_should_behave_like "external_user"
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/controller_shared_examples'
3
+
4
+ describe SorceryController, :mongo_mapper => true do
5
+
6
+ it_should_behave_like "sorcery_controller"
7
+
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_activation_shared_examples'
4
+
5
+ describe User, "with activation submodule", :mongo_mapper => true do
6
+
7
+ it_behaves_like "rails_3_activation_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_activity_logging_shared_examples'
3
+
4
+ describe User, "with activity logging submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_activity_logging_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_brute_force_protection_shared_examples'
3
+
4
+ describe User, "with brute_force_protection submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_brute_force_protection_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_oauth_shared_examples'
3
+
4
+ describe User, "with oauth submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_oauth_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :mongo_mapper => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_shared_examples'
4
+
5
+ describe User, "with no submodules (core)", :mongo_mapper => true do
6
+ before(:all) do
7
+ sorcery_reload!
8
+ end
9
+
10
+ describe User, "when app has plugin loaded" do
11
+ it "User responds to .authenticates_with_sorcery!" do
12
+ expect(User).to respond_to :authenticates_with_sorcery!
13
+ end
14
+ end
15
+
16
+ # ----------------- PLUGIN CONFIGURATION -----------------------
17
+
18
+ it_should_behave_like "rails_3_core_model"
19
+
20
+ describe "external users" do
21
+
22
+ it_should_behave_like "external_user"
23
+
24
+ end
25
+
26
+ context "when inherited" do
27
+ it "inherits mongo_mapper keys" do
28
+ User.class_eval do
29
+ key :blabla
30
+ end
31
+ class SubUser < User
32
+ end
33
+
34
+ expect(SubUser.keys).to include("blabla")
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/controller_activity_logging_shared_examples'
3
+
4
+ describe SorceryController, :mongoid => true do
5
+
6
+ # ----------------- ACTIVITY LOGGING -----------------------
7
+ context "with activity logging features" do
8
+ after(:each) do
9
+ User.delete_all
10
+ end
11
+
12
+
13
+ it_behaves_like "controller_activity_logging"
14
+
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/controller_shared_examples'
3
+
4
+ describe SorceryController, :mongoid => true do
5
+
6
+ it_should_behave_like "sorcery_controller"
7
+
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_activation_shared_examples'
4
+
5
+ describe User, "with activation submodule", :mongoid => true do
6
+
7
+ it_behaves_like "rails_3_activation_model"
8
+
9
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_activity_logging_shared_examples'
3
+
4
+ describe User, "with activity logging submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_activity_logging_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_brute_force_protection_shared_examples'
3
+
4
+ describe User, "with brute_force_protection submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_brute_force_protection_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_oauth_shared_examples'
3
+
4
+ describe User, "with oauth submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_oauth_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_remember_me_shared_examples'
3
+
4
+ describe User, "with remember_me submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_remember_me_model"
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples/user_reset_password_shared_examples'
3
+
4
+ describe User, "with reset_password submodule", :mongoid => true do
5
+
6
+ it_behaves_like "rails_3_reset_password_model"
7
+
8
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'rails_app/app/mailers/sorcery_mailer'
3
+ require 'shared_examples/user_shared_examples'
4
+
5
+ describe User, "with no submodules (core)", :mongoid => true do
6
+ before(:all) do
7
+ sorcery_reload!
8
+ end
9
+
10
+ context "when app has plugin loaded" do
11
+ it "User responds to .authenticates_with_sorcery!" do
12
+ expect(User).to respond_to :authenticates_with_sorcery!
13
+ end
14
+ end
15
+
16
+ # ----------------- PLUGIN CONFIGURATION -----------------------
17
+
18
+ it_should_behave_like "rails_3_core_model"
19
+
20
+ describe "external users" do
21
+
22
+ it_should_behave_like "external_user"
23
+
24
+ end
25
+
26
+ context "when inherited" do
27
+ it "inherits mongoid fields" do
28
+ User.class_eval do
29
+ field :blabla
30
+ end
31
+ class SubUser < User
32
+ end
33
+
34
+ expect(SubUser.fields).to include("blabla")
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,9 @@
1
+ require 'sorcery'
2
+
3
+ ActiveRecord::Migration.verbose = false
4
+ # ActiveRecord::Base.logger = Logger.new(nil)
5
+ # ActiveRecord::Base.include_root_in_json = true
6
+
7
+ class TestUser < ActiveRecord::Base
8
+ authenticates_with_sorcery!
9
+ end
@@ -0,0 +1,34 @@
1
+ require 'data_mapper'
2
+ require 'dm-migrations'
3
+ require 'sorcery'
4
+
5
+ #DataMapper.setup(:default, 'sqlite::memory:')
6
+ # NOTE
7
+ # 1. Problems with Time fields, hh mm ss values.
8
+ #DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/../rails_app/test.sqlite3")
9
+
10
+ # MySQL
11
+ # NOTE
12
+ # 1. Create test database.
13
+ # 2. DM creates tables case insensitive by default.
14
+ # -
15
+ #DataMapper.setup(:default, "mysql://root:<password>@localhost/sorcery_test")
16
+ DataMapper.setup(:default, "mysql://root@127.0.0.1/sorcery_test")
17
+
18
+ # Redis
19
+ # NOTE
20
+ # 1. Submodule activity_logging is not supported.
21
+ # 2. case sensitive.
22
+ #DataMapper.setup(:default, {
23
+ # :adapter => 'redis',
24
+ # :host => 'localhost',
25
+ # :port => 6379,
26
+ #})
27
+
28
+ class TestUser
29
+ include DataMapper::Resource
30
+ property :id, Serial
31
+ authenticates_with_sorcery!
32
+ end
33
+ TestUser.finalize
34
+ DataMapper.auto_migrate!
@@ -0,0 +1,11 @@
1
+ require 'mongo_mapper'
2
+ require 'sorcery'
3
+
4
+ MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
5
+ MongoMapper.database = "sorcery_mongomapper_test"
6
+
7
+ class TestUser
8
+ include MongoMapper::Document
9
+ authenticates_with_sorcery!
10
+ end
11
+
@@ -0,0 +1,18 @@
1
+ require 'mongoid'
2
+ require 'sorcery'
3
+
4
+ Mongoid.configure do |config|
5
+ database = "sorcery_mongoid_test"
6
+ if config.respond_to?(:connect_to)
7
+ config.connect_to(database)
8
+ else
9
+ config.master = Mongo::Connection.new.db(database)
10
+ end
11
+
12
+ config.use_utc = true
13
+ config.include_root_in_json = true
14
+ end
15
+
16
+ class TestUser
17
+ include Mongoid::Document
18
+ end
@@ -1,6 +1,5 @@
1
1
  class User < ActiveRecord::Base
2
- attr_accessible :username, :email, :password, :password_confirmation, :authentications_attributes
3
-
4
2
  has_many :authentications, :dependent => :destroy
3
+ has_many :user_providers, :dependent => :destroy
5
4
  accepts_nested_attributes_for :authentications
6
5
  end
@@ -0,0 +1,3 @@
1
+ class UserProvider < ActiveRecord::Base
2
+ belongs_to :user
3
+ end
@@ -0,0 +1,224 @@
1
+ require 'oauth'
2
+
3
+ class SorceryController < ActionController::Base
4
+ protect_from_forgery
5
+
6
+ before_filter :require_login_from_http_basic, only: [:test_http_basic_auth]
7
+ before_filter :require_login, only: [:test_logout, :test_should_be_logged_in, :some_action]
8
+
9
+ def index
10
+ end
11
+
12
+ def some_action
13
+ render nothing: true
14
+ end
15
+
16
+ def some_action_making_a_non_persisted_change_to_the_user
17
+ current_user.email = 'to_be_ignored'
18
+ render nothing: true
19
+ end
20
+
21
+ def test_login
22
+ @user = login(params[:email], params[:password])
23
+ render nothing: true
24
+ end
25
+
26
+ def test_auto_login
27
+ @user = User.first
28
+ auto_login(@user)
29
+ @result = current_user
30
+ render nothing: true
31
+ end
32
+
33
+ def test_return_to
34
+ @user = login(params[:email], params[:password])
35
+ redirect_back_or_to(:index, notice: 'haha!')
36
+ end
37
+
38
+ def test_logout
39
+ logout
40
+ render nothing: true
41
+ end
42
+
43
+ def test_logout_with_remember
44
+ remember_me!
45
+ logout
46
+ render nothing: true
47
+ end
48
+
49
+ def test_login_with_remember
50
+ @user = login(params[:email], params[:password])
51
+ remember_me!
52
+
53
+ render nothing: true
54
+ end
55
+
56
+ def test_login_with_remember_in_login
57
+ @user = login(params[:email], params[:password], params[:remember])
58
+
59
+ render nothing: true
60
+ end
61
+
62
+ def test_login_from_cookie
63
+ @user = current_user
64
+ render nothing: true
65
+ end
66
+
67
+ def test_not_authenticated_action
68
+ render text: 'test_not_authenticated_action'
69
+ end
70
+
71
+ def test_should_be_logged_in
72
+ render nothing: true
73
+ end
74
+
75
+ def test_http_basic_auth
76
+ render text: 'HTTP Basic Auth'
77
+ end
78
+
79
+ def login_at_test_twitter
80
+ login_at(:twitter)
81
+ end
82
+
83
+ alias :login_at_test :login_at_test_twitter
84
+
85
+ def login_at_test_facebook
86
+ login_at(:facebook)
87
+ end
88
+
89
+ def login_at_test_github
90
+ login_at(:github)
91
+ end
92
+
93
+ def login_at_test_google
94
+ login_at(:google)
95
+ end
96
+
97
+ def login_at_test_liveid
98
+ login_at(:liveid)
99
+ end
100
+
101
+ def login_at_test_with_state
102
+ login_at(:facebook, {state: 'bla'})
103
+ end
104
+
105
+ def test_login_from_twitter
106
+ if @user = login_from(:twitter)
107
+ redirect_to 'bla', notice: 'Success!'
108
+ else
109
+ redirect_to 'blu', alert: 'Failed!'
110
+ end
111
+ end
112
+
113
+ alias :test_login_from :test_login_from_twitter
114
+
115
+ def test_login_from_facebook
116
+ if @user = login_from(:facebook)
117
+ redirect_to 'bla', notice: 'Success!'
118
+ else
119
+ redirect_to 'blu', alert: 'Failed!'
120
+ end
121
+ end
122
+
123
+ def test_login_from_github
124
+ if @user = login_from(:github)
125
+ redirect_to 'bla', notice: 'Success!'
126
+ else
127
+ redirect_to 'blu', alert: 'Failed!'
128
+ end
129
+ end
130
+
131
+ def test_login_from_google
132
+ if @user = login_from(:google)
133
+ redirect_to 'bla', notice: 'Success!'
134
+ else
135
+ redirect_to 'blu', alert: 'Failed!'
136
+ end
137
+ end
138
+
139
+ def test_login_from_liveid
140
+ if @user = login_from(:liveid)
141
+ redirect_to 'bla', notice: 'Success!'
142
+ else
143
+ redirect_to 'blu', alert: 'Failed!'
144
+ end
145
+ end
146
+
147
+ def test_return_to_with_external_twitter
148
+ if @user = login_from(:twitter)
149
+ redirect_back_or_to 'bla', notice: 'Success!'
150
+ else
151
+ redirect_to 'blu', alert: 'Failed!'
152
+ end
153
+ end
154
+
155
+ alias :test_return_to_with_external :test_return_to_with_external_twitter
156
+
157
+ def test_return_to_with_external_facebook
158
+ if @user = login_from(:facebook)
159
+ redirect_back_or_to 'bla', notice: 'Success!'
160
+ else
161
+ redirect_to 'blu', alert: 'Failed!'
162
+ end
163
+ end
164
+
165
+ def test_return_to_with_external_github
166
+ if @user = login_from(:github)
167
+ redirect_back_or_to 'bla', notice: 'Success!'
168
+ else
169
+ redirect_to 'blu', alert: 'Failed!'
170
+ end
171
+ end
172
+
173
+ def test_return_to_with_external_google
174
+ if @user = login_from(:google)
175
+ redirect_back_or_to 'bla', notice: 'Success!'
176
+ else
177
+ redirect_to 'blu', alert: 'Failed!'
178
+ end
179
+ end
180
+
181
+ def test_return_to_with_external_liveid
182
+ if @user = login_from(:liveid)
183
+ redirect_back_or_to 'bla', notice: 'Success!'
184
+ else
185
+ redirect_to 'blu', alert: 'Failed!'
186
+ end
187
+ end
188
+
189
+ def test_create_from_provider
190
+ provider = params[:provider]
191
+ login_from(provider)
192
+ if @user = create_from(provider)
193
+ redirect_to 'bla', notice: 'Success!'
194
+ else
195
+ redirect_to 'blu', alert: 'Failed!'
196
+ end
197
+ end
198
+
199
+ def test_add_second_provider
200
+ provider = params[:provider]
201
+ if logged_in?
202
+ if @user = add_provider_to_user(provider)
203
+ redirect_to "bla", :notice => "Success!"
204
+ else
205
+ redirect_to "blu", :alert => "Failed!"
206
+ end
207
+ end
208
+ end
209
+
210
+ def test_create_from_provider_with_block
211
+ provider = params[:provider]
212
+ login_from(provider)
213
+ @user = create_from(provider) do |user|
214
+ # check uniqueness of email
215
+ User.where(email: user.email).empty?
216
+ end
217
+ if @user
218
+ redirect_to 'bla', notice: 'Success!'
219
+ else
220
+ redirect_to 'blu', alert: 'Failed!'
221
+ end
222
+ end
223
+
224
+ end
@@ -0,0 +1,8 @@
1
+ class Authentication
2
+ include DataMapper::Resource
3
+
4
+ property :id, Serial
5
+ property :uid, Integer
6
+ property :provider, String
7
+ belongs_to :user
8
+ end
@@ -0,0 +1,7 @@
1
+ class User
2
+ include DataMapper::Resource
3
+ property :id, Serial
4
+ property :username, String
5
+
6
+ has n, :authentications, :constraint => :destroy
7
+ end
@@ -1,5 +1,7 @@
1
1
  class User
2
2
  include Mongoid::Document
3
3
 
4
+ field :username, type: String
5
+
4
6
  has_many :authentications, :dependent => :destroy
5
7
  end