sorcery 0.8.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +56 -0
  3. data/.travis.yml +130 -1
  4. data/CHANGELOG.md +270 -0
  5. data/Gemfile +17 -22
  6. data/README.md +371 -0
  7. data/Rakefile +3 -79
  8. data/gemfiles/active_record-rails40.gemfile +7 -0
  9. data/gemfiles/active_record-rails41.gemfile +7 -0
  10. data/gemfiles/mongo_mapper-rails40.gemfile +9 -0
  11. data/gemfiles/mongo_mapper-rails41.gemfile +9 -0
  12. data/gemfiles/mongoid-rails40.gemfile +9 -0
  13. data/gemfiles/mongoid-rails41.gemfile +9 -0
  14. data/gemfiles/mongoid3-rails32.gemfile +9 -0
  15. data/lib/generators/sorcery/USAGE +1 -1
  16. data/lib/generators/sorcery/helpers.rb +40 -0
  17. data/lib/generators/sorcery/install_generator.rb +38 -20
  18. data/lib/generators/sorcery/templates/initializer.rb +35 -10
  19. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -11
  20. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +3 -7
  21. data/lib/generators/sorcery/templates/migration/core.rb +5 -8
  22. data/lib/generators/sorcery/templates/migration/external.rb +3 -5
  23. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -9
  24. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -10
  25. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -10
  26. data/lib/sorcery/adapters/active_record_adapter.rb +120 -0
  27. data/lib/sorcery/adapters/base_adapter.rb +30 -0
  28. data/lib/sorcery/adapters/data_mapper_adapter.rb +176 -0
  29. data/lib/sorcery/adapters/mongo_mapper_adapter.rb +110 -0
  30. data/lib/sorcery/adapters/mongoid_adapter.rb +97 -0
  31. data/lib/sorcery/controller/config.rb +65 -0
  32. data/lib/sorcery/controller/submodules/activity_logging.rb +16 -21
  33. data/lib/sorcery/controller/submodules/brute_force_protection.rb +6 -6
  34. data/lib/sorcery/controller/submodules/external.rb +42 -43
  35. data/lib/sorcery/controller/submodules/remember_me.rb +5 -5
  36. data/lib/sorcery/controller/submodules/session_timeout.rb +11 -7
  37. data/lib/sorcery/controller.rb +22 -74
  38. data/lib/sorcery/model/config.rb +96 -0
  39. data/lib/sorcery/model/submodules/activity_logging.rb +30 -13
  40. data/lib/sorcery/model/submodules/brute_force_protection.rb +25 -27
  41. data/lib/sorcery/model/submodules/external.rb +53 -9
  42. data/lib/sorcery/model/submodules/remember_me.rb +15 -19
  43. data/lib/sorcery/model/submodules/reset_password.rb +36 -33
  44. data/lib/sorcery/model/submodules/user_activation.rb +51 -48
  45. data/lib/sorcery/model/temporary_token.rb +4 -4
  46. data/lib/sorcery/model.rb +81 -175
  47. data/lib/sorcery/protocols/oauth.rb +42 -0
  48. data/lib/sorcery/protocols/oauth2.rb +47 -0
  49. data/lib/sorcery/providers/base.rb +38 -0
  50. data/lib/sorcery/providers/facebook.rb +63 -0
  51. data/lib/sorcery/providers/github.rb +51 -0
  52. data/lib/sorcery/providers/google.rb +51 -0
  53. data/lib/sorcery/providers/heroku.rb +57 -0
  54. data/lib/sorcery/providers/jira.rb +77 -0
  55. data/lib/sorcery/providers/linkedin.rb +66 -0
  56. data/lib/sorcery/providers/liveid.rb +53 -0
  57. data/lib/sorcery/providers/salesforce.rb +50 -0
  58. data/lib/sorcery/providers/twitter.rb +59 -0
  59. data/lib/sorcery/providers/vk.rb +63 -0
  60. data/lib/sorcery/providers/xing.rb +64 -0
  61. data/lib/sorcery/test_helpers/internal/rails.rb +17 -6
  62. data/lib/sorcery/test_helpers/internal.rb +27 -6
  63. data/lib/sorcery/test_helpers/rails/controller.rb +21 -0
  64. data/lib/sorcery/test_helpers/rails/integration.rb +26 -0
  65. data/lib/sorcery/version.rb +3 -0
  66. data/lib/sorcery.rb +82 -58
  67. data/sorcery.gemspec +24 -362
  68. data/spec/active_record/user_activation_spec.rb +18 -0
  69. data/spec/active_record/user_activity_logging_spec.rb +17 -0
  70. data/spec/{rails3/spec → active_record}/user_brute_force_protection_spec.rb +6 -5
  71. data/spec/{rails3/spec → active_record}/user_oauth_spec.rb +6 -5
  72. data/spec/{rails3/spec → active_record}/user_remember_me_spec.rb +5 -4
  73. data/spec/{rails3/spec → active_record}/user_reset_password_spec.rb +7 -7
  74. data/spec/active_record/user_spec.rb +37 -0
  75. data/spec/controllers/controller_activity_logging_spec.rb +124 -0
  76. data/spec/controllers/controller_brute_force_protection_spec.rb +43 -0
  77. data/spec/controllers/controller_http_basic_auth_spec.rb +68 -0
  78. data/spec/controllers/controller_oauth2_spec.rb +414 -0
  79. data/spec/controllers/controller_oauth_spec.rb +240 -0
  80. data/spec/controllers/controller_remember_me_spec.rb +117 -0
  81. data/spec/controllers/controller_session_timeout_spec.rb +80 -0
  82. data/spec/controllers/controller_spec.rb +218 -0
  83. data/spec/data_mapper/user_activation_spec.rb +10 -0
  84. data/spec/data_mapper/user_activity_logging_spec.rb +14 -0
  85. data/spec/data_mapper/user_brute_force_protection_spec.rb +9 -0
  86. data/spec/data_mapper/user_oauth_spec.rb +9 -0
  87. data/spec/data_mapper/user_remember_me_spec.rb +8 -0
  88. data/spec/data_mapper/user_reset_password_spec.rb +8 -0
  89. data/spec/data_mapper/user_spec.rb +27 -0
  90. data/spec/mongo_mapper/user_activation_spec.rb +9 -0
  91. data/spec/mongo_mapper/user_activity_logging_spec.rb +8 -0
  92. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +8 -0
  93. data/spec/mongo_mapper/user_oauth_spec.rb +8 -0
  94. data/spec/mongo_mapper/user_remember_me_spec.rb +8 -0
  95. data/spec/mongo_mapper/user_reset_password_spec.rb +8 -0
  96. data/spec/mongo_mapper/user_spec.rb +37 -0
  97. data/spec/mongoid/user_activation_spec.rb +9 -0
  98. data/spec/mongoid/user_activity_logging_spec.rb +8 -0
  99. data/spec/mongoid/user_brute_force_protection_spec.rb +8 -0
  100. data/spec/mongoid/user_oauth_spec.rb +8 -0
  101. data/spec/mongoid/user_remember_me_spec.rb +8 -0
  102. data/spec/mongoid/user_reset_password_spec.rb +8 -0
  103. data/spec/mongoid/user_spec.rb +51 -0
  104. data/spec/orm/active_record.rb +21 -0
  105. data/spec/orm/data_mapper.rb +48 -0
  106. data/spec/orm/mongo_mapper.rb +10 -0
  107. data/spec/orm/mongoid.rb +22 -0
  108. data/spec/{rails3/app/models → rails_app/app/active_record}/user.rb +1 -2
  109. data/spec/rails_app/app/active_record/user_provider.rb +3 -0
  110. data/spec/rails_app/app/controllers/sorcery_controller.rb +285 -0
  111. data/spec/rails_app/app/data_mapper/authentication.rb +8 -0
  112. data/spec/rails_app/app/data_mapper/user.rb +7 -0
  113. data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/user.rb +2 -0
  114. data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/user.rb +2 -0
  115. data/spec/{rails3_mongo_mapper → rails_app}/config/application.rb +13 -8
  116. data/spec/rails_app/config/boot.rb +4 -0
  117. data/spec/rails_app/config/database.yml +22 -0
  118. data/spec/{rails3_mongo_mapper → rails_app}/config/environments/test.rb +2 -0
  119. data/spec/{rails3_mongoid → rails_app}/config/initializers/session_store.rb +4 -0
  120. data/spec/rails_app/config/routes.rb +51 -0
  121. data/spec/{rails3_mongo_mapper → rails_app}/config.ru +1 -1
  122. data/spec/{rails3 → rails_app}/db/migrate/activation/20101224223622_add_activation_to_users.rb +3 -3
  123. data/spec/{rails3 → rails_app}/db/migrate/core/20101224223620_create_users.rb +2 -2
  124. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +22 -0
  125. data/spec/rails_app/log/development.log +1791 -0
  126. data/spec/shared_examples/user_activation_shared_examples.rb +137 -98
  127. data/spec/shared_examples/user_activity_logging_shared_examples.rb +83 -15
  128. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +140 -21
  129. data/spec/shared_examples/user_oauth_shared_examples.rb +21 -16
  130. data/spec/shared_examples/user_remember_me_shared_examples.rb +36 -24
  131. data/spec/shared_examples/user_reset_password_shared_examples.rb +163 -130
  132. data/spec/shared_examples/user_shared_examples.rb +355 -193
  133. data/spec/sorcery_crypto_providers_spec.rb +74 -72
  134. data/spec/spec_helper.rb +32 -4
  135. metadata +262 -508
  136. data/Gemfile.lock +0 -175
  137. data/README.rdoc +0 -261
  138. data/VERSION +0 -1
  139. data/lib/sorcery/controller/submodules/external/protocols/oauth1.rb +0 -46
  140. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +0 -49
  141. data/lib/sorcery/controller/submodules/external/providers/base.rb +0 -21
  142. data/lib/sorcery/controller/submodules/external/providers/facebook.rb +0 -98
  143. data/lib/sorcery/controller/submodules/external/providers/github.rb +0 -92
  144. data/lib/sorcery/controller/submodules/external/providers/google.rb +0 -91
  145. data/lib/sorcery/controller/submodules/external/providers/linkedin.rb +0 -102
  146. data/lib/sorcery/controller/submodules/external/providers/liveid.rb +0 -92
  147. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +0 -93
  148. data/lib/sorcery/controller/submodules/external/providers/vk.rb +0 -100
  149. data/lib/sorcery/controller/submodules/external/providers/xing.rb +0 -97
  150. data/lib/sorcery/model/adapters/active_record.rb +0 -49
  151. data/lib/sorcery/model/adapters/mongo_mapper.rb +0 -56
  152. data/lib/sorcery/model/adapters/mongoid.rb +0 -88
  153. data/lib/sorcery/test_helpers/rails.rb +0 -16
  154. data/lib/sorcery/test_helpers.rb +0 -5
  155. data/spec/Gemfile +0 -12
  156. data/spec/Gemfile.lock +0 -129
  157. data/spec/README.md +0 -31
  158. data/spec/Rakefile +0 -12
  159. data/spec/rails3/.gitignore +0 -4
  160. data/spec/rails3/.rspec +0 -1
  161. data/spec/rails3/Gemfile +0 -15
  162. data/spec/rails3/Gemfile.lock +0 -162
  163. data/spec/rails3/README +0 -256
  164. data/spec/rails3/Rakefile +0 -11
  165. data/spec/rails3/app/controllers/application_controller.rb +0 -208
  166. data/spec/rails3/config/application.rb +0 -46
  167. data/spec/rails3/config/boot.rb +0 -13
  168. data/spec/rails3/config/database.yml +0 -27
  169. data/spec/rails3/config/environments/development.rb +0 -26
  170. data/spec/rails3/config/environments/in_memory.rb +0 -35
  171. data/spec/rails3/config/environments/production.rb +0 -49
  172. data/spec/rails3/config/environments/test.rb +0 -35
  173. data/spec/rails3/config/initializers/session_store.rb +0 -8
  174. data/spec/rails3/config/routes.rb +0 -59
  175. data/spec/rails3/config.ru +0 -4
  176. data/spec/rails3/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  177. data/spec/rails3/lib/tasks/.gitkeep +0 -0
  178. data/spec/rails3/public/404.html +0 -26
  179. data/spec/rails3/public/422.html +0 -26
  180. data/spec/rails3/public/500.html +0 -26
  181. data/spec/rails3/public/favicon.ico +0 -0
  182. data/spec/rails3/public/images/rails.png +0 -0
  183. data/spec/rails3/public/javascripts/application.js +0 -2
  184. data/spec/rails3/public/javascripts/controls.js +0 -965
  185. data/spec/rails3/public/javascripts/dragdrop.js +0 -974
  186. data/spec/rails3/public/javascripts/effects.js +0 -1123
  187. data/spec/rails3/public/javascripts/prototype.js +0 -6001
  188. data/spec/rails3/public/javascripts/rails.js +0 -175
  189. data/spec/rails3/public/robots.txt +0 -5
  190. data/spec/rails3/public/stylesheets/.gitkeep +0 -0
  191. data/spec/rails3/script/rails +0 -6
  192. data/spec/rails3/spec/controller_activity_logging_spec.rb +0 -130
  193. data/spec/rails3/spec/controller_brute_force_protection_spec.rb +0 -96
  194. data/spec/rails3/spec/controller_http_basic_auth_spec.rb +0 -50
  195. data/spec/rails3/spec/controller_oauth2_spec.rb +0 -380
  196. data/spec/rails3/spec/controller_oauth_spec.rb +0 -206
  197. data/spec/rails3/spec/controller_remember_me_spec.rb +0 -96
  198. data/spec/rails3/spec/controller_session_timeout_spec.rb +0 -55
  199. data/spec/rails3/spec/controller_spec.rb +0 -182
  200. data/spec/rails3/spec/integration_spec.rb +0 -23
  201. data/spec/rails3/spec/spec.opts +0 -2
  202. data/spec/rails3/spec/spec_helper.orig.rb +0 -27
  203. data/spec/rails3/spec/spec_helper.rb +0 -71
  204. data/spec/rails3/spec/user_activation_spec.rb +0 -16
  205. data/spec/rails3/spec/user_activity_logging_spec.rb +0 -8
  206. data/spec/rails3/spec/user_spec.rb +0 -36
  207. data/spec/rails3/vendor/plugins/.gitkeep +0 -0
  208. data/spec/rails3_mongo_mapper/.gitignore +0 -4
  209. data/spec/rails3_mongo_mapper/.rspec +0 -1
  210. data/spec/rails3_mongo_mapper/Gemfile +0 -16
  211. data/spec/rails3_mongo_mapper/Gemfile.lock +0 -156
  212. data/spec/rails3_mongo_mapper/Rakefile +0 -11
  213. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +0 -122
  214. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +0 -2
  215. data/spec/rails3_mongo_mapper/app/mailers/sorcery_mailer.rb +0 -25
  216. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +0 -14
  217. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  218. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  219. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  220. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  221. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  222. data/spec/rails3_mongo_mapper/config/boot.rb +0 -13
  223. data/spec/rails3_mongo_mapper/config/environment.rb +0 -5
  224. data/spec/rails3_mongo_mapper/config/environments/development.rb +0 -30
  225. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  226. data/spec/rails3_mongo_mapper/config/environments/production.rb +0 -49
  227. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +0 -7
  228. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +0 -10
  229. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +0 -5
  230. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +0 -2
  231. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +0 -7
  232. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +0 -8
  233. data/spec/rails3_mongo_mapper/config/locales/en.yml +0 -5
  234. data/spec/rails3_mongo_mapper/config/routes.rb +0 -59
  235. data/spec/rails3_mongo_mapper/db/schema.rb +0 -23
  236. data/spec/rails3_mongo_mapper/db/seeds.rb +0 -7
  237. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  238. data/spec/rails3_mongo_mapper/public/404.html +0 -26
  239. data/spec/rails3_mongo_mapper/public/422.html +0 -26
  240. data/spec/rails3_mongo_mapper/public/500.html +0 -26
  241. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  242. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  243. data/spec/rails3_mongo_mapper/public/javascripts/application.js +0 -2
  244. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +0 -965
  245. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +0 -974
  246. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +0 -1123
  247. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +0 -6001
  248. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +0 -175
  249. data/spec/rails3_mongo_mapper/public/robots.txt +0 -5
  250. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  251. data/spec/rails3_mongo_mapper/script/rails +0 -6
  252. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +0 -175
  253. data/spec/rails3_mongo_mapper/spec/spec.opts +0 -2
  254. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +0 -27
  255. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +0 -55
  256. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +0 -9
  257. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +0 -8
  258. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +0 -8
  259. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +0 -8
  260. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +0 -8
  261. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +0 -8
  262. data/spec/rails3_mongo_mapper/spec/user_spec.rb +0 -37
  263. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  264. data/spec/rails3_mongoid/.gitignore +0 -4
  265. data/spec/rails3_mongoid/.rspec +0 -1
  266. data/spec/rails3_mongoid/Gemfile +0 -15
  267. data/spec/rails3_mongoid/Gemfile.lock +0 -146
  268. data/spec/rails3_mongoid/Rakefile +0 -11
  269. data/spec/rails3_mongoid/app/controllers/application_controller.rb +0 -127
  270. data/spec/rails3_mongoid/app/helpers/application_helper.rb +0 -2
  271. data/spec/rails3_mongoid/app/mailers/sorcery_mailer.rb +0 -25
  272. data/spec/rails3_mongoid/app/views/layouts/application.html.erb +0 -14
  273. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  274. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  275. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  276. data/spec/rails3_mongoid/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  277. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  278. data/spec/rails3_mongoid/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  279. data/spec/rails3_mongoid/config/application.rb +0 -51
  280. data/spec/rails3_mongoid/config/boot.rb +0 -13
  281. data/spec/rails3_mongoid/config/environment.rb +0 -5
  282. data/spec/rails3_mongoid/config/environments/development.rb +0 -26
  283. data/spec/rails3_mongoid/config/environments/in_memory.rb +0 -0
  284. data/spec/rails3_mongoid/config/environments/production.rb +0 -49
  285. data/spec/rails3_mongoid/config/environments/test.rb +0 -35
  286. data/spec/rails3_mongoid/config/initializers/backtrace_silencers.rb +0 -7
  287. data/spec/rails3_mongoid/config/initializers/inflections.rb +0 -10
  288. data/spec/rails3_mongoid/config/initializers/mime_types.rb +0 -5
  289. data/spec/rails3_mongoid/config/initializers/secret_token.rb +0 -7
  290. data/spec/rails3_mongoid/config/locales/en.yml +0 -5
  291. data/spec/rails3_mongoid/config/mongoid.yml +0 -7
  292. data/spec/rails3_mongoid/config/routes.rb +0 -59
  293. data/spec/rails3_mongoid/config.ru +0 -4
  294. data/spec/rails3_mongoid/db/schema.rb +0 -23
  295. data/spec/rails3_mongoid/db/seeds.rb +0 -7
  296. data/spec/rails3_mongoid/lib/tasks/.gitkeep +0 -0
  297. data/spec/rails3_mongoid/public/404.html +0 -26
  298. data/spec/rails3_mongoid/public/422.html +0 -26
  299. data/spec/rails3_mongoid/public/500.html +0 -26
  300. data/spec/rails3_mongoid/public/favicon.ico +0 -0
  301. data/spec/rails3_mongoid/public/images/rails.png +0 -0
  302. data/spec/rails3_mongoid/public/javascripts/application.js +0 -2
  303. data/spec/rails3_mongoid/public/javascripts/controls.js +0 -965
  304. data/spec/rails3_mongoid/public/javascripts/dragdrop.js +0 -974
  305. data/spec/rails3_mongoid/public/javascripts/effects.js +0 -1123
  306. data/spec/rails3_mongoid/public/javascripts/prototype.js +0 -6001
  307. data/spec/rails3_mongoid/public/javascripts/rails.js +0 -175
  308. data/spec/rails3_mongoid/public/robots.txt +0 -5
  309. data/spec/rails3_mongoid/public/stylesheets/.gitkeep +0 -0
  310. data/spec/rails3_mongoid/script/rails +0 -6
  311. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +0 -111
  312. data/spec/rails3_mongoid/spec/controller_spec.rb +0 -186
  313. data/spec/rails3_mongoid/spec/spec.opts +0 -2
  314. data/spec/rails3_mongoid/spec/spec_helper.orig.rb +0 -27
  315. data/spec/rails3_mongoid/spec/spec_helper.rb +0 -55
  316. data/spec/rails3_mongoid/spec/user_activation_spec.rb +0 -9
  317. data/spec/rails3_mongoid/spec/user_activity_logging_spec.rb +0 -8
  318. data/spec/rails3_mongoid/spec/user_brute_force_protection_spec.rb +0 -8
  319. data/spec/rails3_mongoid/spec/user_oauth_spec.rb +0 -8
  320. data/spec/rails3_mongoid/spec/user_remember_me_spec.rb +0 -8
  321. data/spec/rails3_mongoid/spec/user_reset_password_spec.rb +0 -8
  322. data/spec/rails3_mongoid/spec/user_spec.rb +0 -38
  323. data/spec/rails3_mongoid/vendor/plugins/.gitkeep +0 -0
  324. data/spec/shared_examples/controller_oauth2_shared_examples.rb +0 -56
  325. data/spec/shared_examples/controller_oauth_shared_examples.rb +0 -55
  326. /data/lib/sorcery/{controller/submodules/external/protocols → protocols}/certs/ca-bundle.crt +0 -0
  327. /data/spec/{rails3/app/models → rails_app/app/active_record}/authentication.rb +0 -0
  328. /data/spec/{rails3 → rails_app}/app/helpers/application_helper.rb +0 -0
  329. /data/spec/{rails3 → rails_app}/app/mailers/sorcery_mailer.rb +0 -0
  330. /data/spec/{rails3_mongo_mapper/app/models → rails_app/app/mongo_mapper}/authentication.rb +0 -0
  331. /data/spec/{rails3_mongoid/app/models → rails_app/app/mongoid}/authentication.rb +0 -0
  332. /data/spec/{rails3 → rails_app}/app/views/application/index.html.erb +0 -0
  333. /data/spec/{rails3 → rails_app}/app/views/layouts/application.html.erb +0 -0
  334. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.html.erb +0 -0
  335. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_email.text.erb +0 -0
  336. /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
  337. /data/spec/{rails3_mongo_mapper → rails_app}/app/views/sorcery_mailer/activation_success_email.html.erb +0 -0
  338. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/activation_success_email.text.erb +0 -0
  339. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.html.erb +0 -0
  340. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/reset_password_email.text.erb +0 -0
  341. /data/spec/{rails3 → rails_app}/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -0
  342. /data/spec/{rails3 → rails_app}/config/environment.rb +0 -0
  343. /data/spec/{rails3 → rails_app}/config/initializers/backtrace_silencers.rb +0 -0
  344. /data/spec/{rails3 → rails_app}/config/initializers/inflections.rb +0 -0
  345. /data/spec/{rails3 → rails_app}/config/initializers/mime_types.rb +0 -0
  346. /data/spec/{rails3 → rails_app}/config/initializers/secret_token.rb +0 -0
  347. /data/spec/{rails3 → rails_app}/config/locales/en.yml +0 -0
  348. /data/spec/{rails3 → rails_app}/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -0
  349. /data/spec/{rails3 → rails_app}/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -0
  350. /data/spec/{rails3 → rails_app}/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -0
  351. /data/spec/{rails3 → rails_app}/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -0
  352. /data/spec/{rails3 → rails_app}/db/schema.rb +0 -0
  353. /data/spec/{rails3 → rails_app}/db/seeds.rb +0 -0
@@ -1,175 +0,0 @@
1
- (function() {
2
- // Technique from Juriy Zaytsev
3
- // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
- function isEventSupported(eventName) {
5
- var el = document.createElement('div');
6
- eventName = 'on' + eventName;
7
- var isSupported = (eventName in el);
8
- if (!isSupported) {
9
- el.setAttribute(eventName, 'return;');
10
- isSupported = typeof el[eventName] == 'function';
11
- }
12
- el = null;
13
- return isSupported;
14
- }
15
-
16
- function isForm(element) {
17
- return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
- }
19
-
20
- function isInput(element) {
21
- if (Object.isElement(element)) {
22
- var name = element.nodeName.toUpperCase()
23
- return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
- }
25
- else return false
26
- }
27
-
28
- var submitBubbles = isEventSupported('submit'),
29
- changeBubbles = isEventSupported('change')
30
-
31
- if (!submitBubbles || !changeBubbles) {
32
- // augment the Event.Handler class to observe custom events when needed
33
- Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
- function(init, element, eventName, selector, callback) {
35
- init(element, eventName, selector, callback)
36
- // is the handler being attached to an element that doesn't support this event?
37
- if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
- (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
- // "submit" => "emulated:submit"
40
- this.eventName = 'emulated:' + this.eventName
41
- }
42
- }
43
- )
44
- }
45
-
46
- if (!submitBubbles) {
47
- // discover forms on the page by observing focus events which always bubble
48
- document.on('focusin', 'form', function(focusEvent, form) {
49
- // special handler for the real "submit" event (one-time operation)
50
- if (!form.retrieve('emulated:submit')) {
51
- form.on('submit', function(submitEvent) {
52
- var emulated = form.fire('emulated:submit', submitEvent, true)
53
- // if custom event received preventDefault, cancel the real one too
54
- if (emulated.returnValue === false) submitEvent.preventDefault()
55
- })
56
- form.store('emulated:submit', true)
57
- }
58
- })
59
- }
60
-
61
- if (!changeBubbles) {
62
- // discover form inputs on the page
63
- document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
- // special handler for real "change" events
65
- if (!input.retrieve('emulated:change')) {
66
- input.on('change', function(changeEvent) {
67
- input.fire('emulated:change', changeEvent, true)
68
- })
69
- input.store('emulated:change', true)
70
- }
71
- })
72
- }
73
-
74
- function handleRemote(element) {
75
- var method, url, params;
76
-
77
- var event = element.fire("ajax:before");
78
- if (event.stopped) return false;
79
-
80
- if (element.tagName.toLowerCase() === 'form') {
81
- method = element.readAttribute('method') || 'post';
82
- url = element.readAttribute('action');
83
- params = element.serialize();
84
- } else {
85
- method = element.readAttribute('data-method') || 'get';
86
- url = element.readAttribute('href');
87
- params = {};
88
- }
89
-
90
- new Ajax.Request(url, {
91
- method: method,
92
- parameters: params,
93
- evalScripts: true,
94
-
95
- onComplete: function(request) { element.fire("ajax:complete", request); },
96
- onSuccess: function(request) { element.fire("ajax:success", request); },
97
- onFailure: function(request) { element.fire("ajax:failure", request); }
98
- });
99
-
100
- element.fire("ajax:after");
101
- }
102
-
103
- function handleMethod(element) {
104
- var method = element.readAttribute('data-method'),
105
- url = element.readAttribute('href'),
106
- csrf_param = $$('meta[name=csrf-param]')[0],
107
- csrf_token = $$('meta[name=csrf-token]')[0];
108
-
109
- var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
- element.parentNode.insert(form);
111
-
112
- if (method !== 'post') {
113
- var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
- form.insert(field);
115
- }
116
-
117
- if (csrf_param) {
118
- var param = csrf_param.readAttribute('content'),
119
- token = csrf_token.readAttribute('content'),
120
- field = new Element('input', { type: 'hidden', name: param, value: token });
121
- form.insert(field);
122
- }
123
-
124
- form.submit();
125
- }
126
-
127
-
128
- document.on("click", "*[data-confirm]", function(event, element) {
129
- var message = element.readAttribute('data-confirm');
130
- if (!confirm(message)) event.stop();
131
- });
132
-
133
- document.on("click", "a[data-remote]", function(event, element) {
134
- if (event.stopped) return;
135
- handleRemote(element);
136
- event.stop();
137
- });
138
-
139
- document.on("click", "a[data-method]", function(event, element) {
140
- if (event.stopped) return;
141
- handleMethod(element);
142
- event.stop();
143
- });
144
-
145
- document.on("submit", function(event) {
146
- var element = event.findElement(),
147
- message = element.readAttribute('data-confirm');
148
- if (message && !confirm(message)) {
149
- event.stop();
150
- return false;
151
- }
152
-
153
- var inputs = element.select("input[type=submit][data-disable-with]");
154
- inputs.each(function(input) {
155
- input.disabled = true;
156
- input.writeAttribute('data-original-value', input.value);
157
- input.value = input.readAttribute('data-disable-with');
158
- });
159
-
160
- var element = event.findElement("form[data-remote]");
161
- if (element) {
162
- handleRemote(element);
163
- event.stop();
164
- }
165
- });
166
-
167
- document.on("ajax:after", "form", function(event, element) {
168
- var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
- inputs.each(function(input) {
170
- input.value = input.readAttribute('data-original-value');
171
- input.removeAttribute('data-original-value');
172
- input.disabled = false;
173
- });
174
- });
175
- })();
@@ -1,5 +0,0 @@
1
- # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
- #
3
- # To ban all spiders from the entire site uncomment the next two lines:
4
- # User-Agent: *
5
- # Disallow: /
File without changes
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
-
4
- APP_PATH = File.expand_path('../../config/application', __FILE__)
5
- require File.expand_path('../../config/boot', __FILE__)
6
- require 'rails/commands'
@@ -1,175 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe ApplicationController do
4
-
5
- # ----------------- PLUGIN CONFIGURATION -----------------------
6
- describe ApplicationController, "plugin configuration" do
7
- before(:all) do
8
- sorcery_reload!
9
- end
10
-
11
- after(:each) do
12
- Sorcery::Controller::Config.reset!
13
- sorcery_reload!
14
- end
15
-
16
- it "should enable configuration option 'user_class'" do
17
- sorcery_controller_property_set(:user_class, "TestUser")
18
- Sorcery::Controller::Config.user_class.should == "TestUser"
19
- end
20
-
21
- it "should enable configuration option 'not_authenticated_action'" do
22
- sorcery_controller_property_set(:not_authenticated_action, :my_action)
23
- Sorcery::Controller::Config.not_authenticated_action.should equal(:my_action)
24
- end
25
-
26
- end
27
-
28
- # ----------------- PLUGIN ACTIVATED -----------------------
29
- describe ApplicationController, "when activated with sorcery" do
30
- before(:all) do
31
- sorcery_reload!
32
- User.delete_all
33
- end
34
-
35
- before(:each) do
36
- create_new_user
37
- end
38
-
39
- after(:each) do
40
- Sorcery::Controller::Config.reset!
41
- sorcery_reload!
42
- User.delete_all
43
- sorcery_controller_property_set(:user_class, User)
44
- sorcery_model_property_set(:username_attribute_names, [:username, :email])
45
- end
46
-
47
- specify { should respond_to(:login) }
48
-
49
- specify { should respond_to(:logout) }
50
-
51
- specify { should respond_to(:logged_in?) }
52
-
53
- specify { should respond_to(:current_user) }
54
-
55
- it "login(username,password) should return the user when success and set the session with user.id" do
56
- get :test_login, :username => 'gizmo', :password => 'secret'
57
- assigns[:user].should == @user
58
- session[:user_id].should == @user.id
59
- end
60
-
61
- it "login(email,password) should return the user when success and set the session with user.id" do
62
- get :test_login, :username => 'bla@bla.com', :password => 'secret'
63
- assigns[:user].should == @user
64
- session[:user_id].should == @user.id
65
- end
66
-
67
- it "login(username,password) should return nil and not set the session when failure" do
68
- get :test_login, :username => 'gizmo', :password => 'opensesame!'
69
- assigns[:user].should be_nil
70
- session[:user_id].should be_nil
71
- end
72
-
73
- it "login(username,password) should return nil and not set the session when upper case username" do
74
- get :test_login, :username => 'GIZMO', :password => 'secret'
75
- assigns[:user].should be_nil
76
- session[:user_id].should be_nil
77
- end
78
-
79
- it "login(email,password) should return the user when success and set the session with the _csrf_token" do
80
- get :test_login, :username => 'gizmo', :password => 'secret'
81
- session[:_csrf_token].should_not be_nil
82
- end
83
-
84
- it "login(username,password) should return the user and set the session with user.id when upper case username and config is downcase before authenticating" do
85
- sorcery_model_property_set(:downcase_username_before_authenticating, true)
86
- get :test_login, :username => 'GIZMO', :password => 'secret'
87
- assigns[:user].should == @user
88
- session[:user_id].should == @user.id
89
- end
90
-
91
- it "login(username,password) should return nil and not set the session when user was created with upper case username, config is default, and log in username is lower case" do
92
- create_new_user({:username => 'GIZMO1', :email => "bla1@bla.com", :password => 'secret1'})
93
- get :test_login, :username => 'gizmo1', :password => 'secret1'
94
- assigns[:user].should be_nil
95
- session[:user_id].should be_nil
96
- end
97
-
98
- it "login(username,password) should return the user and set the session with user.id when user was created with upper case username and config is downcase before authenticating" do
99
- sorcery_model_property_set(:downcase_username_before_authenticating, true)
100
- create_new_user({:username => 'GIZMO1', :email => "bla1@bla.com", :password => 'secret1'})
101
- get :test_login, :username => 'gizmo1', :password => 'secret1'
102
- assigns[:user].should == @user
103
- session[:user_id].should == @user.id
104
- end
105
-
106
- it "logout should clear the session" do
107
- cookies[:remember_me_token] = nil
108
- session[:user_id] = @user.id
109
- get :test_logout
110
- session[:user_id].should be_nil
111
- end
112
-
113
- it "logged_in? should return true if logged in" do
114
- session[:user_id] = @user.id
115
- subject.logged_in?.should be_true
116
- end
117
-
118
- it "logged_in? should return false if not logged in" do
119
- session[:user_id] = nil
120
- subject.logged_in?.should be_false
121
- end
122
-
123
- it "current_user should return the user instance if logged in" do
124
- create_new_user
125
- session[:user_id] = @user.id
126
- subject.current_user.should == @user
127
- end
128
-
129
- it "current_user should return false if not logged in" do
130
- session[:user_id] = nil
131
- subject.current_user.should == false
132
- end
133
-
134
- specify { should respond_to(:require_login) }
135
-
136
- it "should call the configured 'not_authenticated_action' when authenticate before_filter fails" do
137
- session[:user_id] = nil
138
- sorcery_controller_property_set(:not_authenticated_action, :test_not_authenticated_action)
139
- get :test_logout
140
- response.body.should == "test_not_authenticated_action"
141
- end
142
-
143
- it "require_login before_filter should save the url that the user originally wanted" do
144
- get :some_action
145
- session[:return_to_url].should == "http://test.host/application/some_action"
146
- response.should redirect_to("http://test.host/")
147
- end
148
-
149
- it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
150
- [:post, :put, :delete].each do |m|
151
- self.send(m, :some_action)
152
- session[:return_to_url].should be_nil
153
- end
154
- end
155
-
156
- it "on successful login the user should be redirected to the url he originally wanted" do
157
- session[:return_to_url] = "http://test.host/some_action"
158
- post :test_return_to, :username => 'gizmo', :password => 'secret'
159
- response.should redirect_to("http://test.host/some_action")
160
- flash[:notice].should == "haha!"
161
- end
162
-
163
-
164
- # --- login_user(user) ---
165
- specify { should respond_to(:auto_login) }
166
-
167
- it "auto_login(user) should login a user instance" do
168
- create_new_user
169
- session[:user_id] = nil
170
- subject.auto_login(@user)
171
- subject.logged_in?.should be_true
172
- end
173
- end
174
-
175
- end
@@ -1,2 +0,0 @@
1
- --color
2
- --format documentation
@@ -1,27 +0,0 @@
1
- # This file is copied to spec/ when you run 'rails generate rspec:install'
2
- ENV["RAILS_ENV"] ||= 'test'
3
- require File.expand_path("../../config/environment", __FILE__)
4
- require 'rspec/rails'
5
-
6
- # Requires supporting ruby files with custom matchers and macros, etc,
7
- # in spec/support/ and its subdirectories.
8
- Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
9
-
10
- RSpec.configure do |config|
11
- # == Mock Framework
12
- #
13
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
14
- #
15
- # config.mock_with :mocha
16
- # config.mock_with :flexmock
17
- # config.mock_with :rr
18
- config.mock_with :rspec
19
-
20
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
21
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
22
-
23
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
24
- # examples within a transaction, remove the following line or assign false
25
- # instead of true.
26
- config.use_transactional_fixtures = true
27
- end
@@ -1,55 +0,0 @@
1
- $: << File.join(File.dirname(__FILE__), '..', '..', 'lib' )
2
- # This file is copied to spec/ when you run 'rails generate rspec:install'
3
- ENV['RAILS_ENV'] ||= 'test'
4
- require File.expand_path("../../config/environment", __FILE__)
5
- require 'rspec/rails'
6
- require 'timecop'
7
-
8
- # require 'simplecov'
9
- # SimpleCov.root File.join(File.dirname(__FILE__), "..", "..", "rails3" )
10
- # SimpleCov.start do
11
- # add_filter "/config/"
12
- #
13
- # add_group 'Controllers', 'app/controllers'
14
- # add_group 'Models', 'app/models'
15
- # add_group 'Helpers', 'app/helpers'
16
- # add_group 'Libraries', 'lib'
17
- # add_group 'Plugins', 'vendor/plugins'
18
- # add_group 'Migrations', 'db/migrate'
19
- # end
20
-
21
- # Requires supporting ruby files with custom matchers and macros, etc,
22
- # in spec/support/ and its subdirectories.
23
- Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
24
-
25
-
26
-
27
- RSpec.configure do |config|
28
- config.include RSpec::Rails::ControllerExampleGroup, :example_group => { :file_path => /controller(.)*_spec.rb$/ }
29
- # == Mock Framework
30
- #
31
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
32
- #
33
- # config.mock_with :mocha
34
- # config.mock_with :flexmock
35
- # config.mock_with :rr
36
- config.mock_with :rspec
37
- end
38
-
39
- #----------------------------------------------------------------
40
- # needed when running individual specs
41
- require File.join(File.dirname(__FILE__), '..','app','models','user')
42
- require File.join(File.dirname(__FILE__), '..','app','models','authentication')
43
-
44
- class TestUser
45
- include MongoMapper::Document
46
- authenticates_with_sorcery!
47
- end
48
-
49
- class TestMailer < ActionMailer::Base
50
-
51
- end
52
-
53
- include ::Sorcery::TestHelpers::Internal
54
- include ::Sorcery::TestHelpers::Internal::Rails
55
-
@@ -1,9 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../app/mailers/sorcery_mailer')
3
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_activation_shared_examples')
4
-
5
- describe "User with activation submodule" do
6
-
7
- it_behaves_like "rails_3_activation_model"
8
-
9
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_activity_logging_shared_examples')
3
-
4
- describe "User with activity logging submodule" do
5
-
6
- it_behaves_like "rails_3_activity_logging_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_brute_force_protection_shared_examples')
3
-
4
- describe "User with brute_force_protection submodule" do
5
-
6
- it_behaves_like "rails_3_brute_force_protection_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_oauth_shared_examples')
3
-
4
- describe "User with oauth submodule" do
5
-
6
- it_behaves_like "rails_3_oauth_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_remember_me_shared_examples')
3
-
4
- describe "User with remember_me submodule" do
5
-
6
- it_behaves_like "rails_3_remember_me_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_reset_password_shared_examples')
3
-
4
- describe "User with reset_password submodule" do
5
-
6
- it_behaves_like "rails_3_reset_password_model"
7
-
8
- end
@@ -1,37 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../app/mailers/sorcery_mailer')
3
- require File.expand_path(File.dirname(__FILE__) + '/../../shared_examples/user_shared_examples')
4
-
5
- describe "User with no submodules (core)" do
6
- before(:all) do
7
- sorcery_reload!
8
- end
9
-
10
- describe User, "when app has plugin loaded" do
11
- it "User should respond_to .authenticates_with_sorcery!" do
12
- User.should 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 User, "external users" do
21
-
22
- it_should_behave_like "external_user"
23
-
24
- end
25
-
26
- describe User, "when inherited" do
27
- it "should inherit mongo_mapper keys" do
28
- User.class_eval do
29
- key :blabla
30
- end
31
- class SubUser < User
32
- end
33
-
34
- SubUser.keys.should include("blabla")
35
- end
36
- end
37
- end
File without changes
@@ -1,4 +0,0 @@
1
- .bundle
2
- db/*.sqlite3
3
- log/*.log
4
- tmp/**/*
@@ -1 +0,0 @@
1
- --colour
@@ -1,15 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'bcrypt-ruby', '~> 3.0.0'
4
- gem 'rails', '3.0.3'
5
- gem "sorcery", '>= 0.1.0', :path => '../../'
6
- gem "mongoid", "~> 2.0"
7
- gem "bson_ext", "~> 1.3"
8
-
9
- group :development, :test do
10
- gem "rspec", "~> 2.5.0"
11
- gem 'rspec-rails', "~> 2.5.0"
12
- gem 'ruby-debug19'
13
- gem 'simplecov', '>= 0.3.8', :require => false # Will install simplecov-html as a dependency
14
- gem 'timecop'
15
- end