sorcery 0.6.1 → 0.7.1

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 (185) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +52 -45
  3. data/README.rdoc +26 -54
  4. data/Rakefile +26 -0
  5. data/VERSION +1 -1
  6. data/lib/generators/sorcery/USAGE +22 -0
  7. data/lib/generators/sorcery/install_generator.rb +71 -0
  8. data/lib/{sorcery/initializers → generators/sorcery/templates}/initializer.rb +82 -61
  9. data/lib/generators/sorcery/templates/migration/activity_logging.rb +17 -0
  10. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +11 -0
  11. data/lib/generators/{sorcery_migration/templates → sorcery/templates/migration}/core.rb +3 -3
  12. data/lib/generators/{sorcery_migration/templates → sorcery/templates/migration}/external.rb +1 -1
  13. data/lib/generators/sorcery/templates/migration/remember_me.rb +15 -0
  14. data/lib/generators/sorcery/templates/migration/reset_password.rb +17 -0
  15. data/lib/generators/sorcery/templates/migration/user_activation.rb +17 -0
  16. data/lib/sorcery/controller/submodules/activity_logging.rb +23 -9
  17. data/lib/sorcery/controller/submodules/brute_force_protection.rb +2 -1
  18. data/lib/sorcery/controller/submodules/external/protocols/certs/ca-bundle.crt +5182 -0
  19. data/lib/sorcery/controller/submodules/external/protocols/oauth2.rb +27 -8
  20. data/lib/sorcery/controller/submodules/external/providers/github.rb +80 -0
  21. data/lib/sorcery/controller/submodules/external/providers/twitter.rb +5 -0
  22. data/lib/sorcery/controller/submodules/external.rb +10 -3
  23. data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -1
  24. data/lib/sorcery/controller/submodules/remember_me.rb +15 -5
  25. data/lib/sorcery/controller/submodules/session_timeout.rb +1 -1
  26. data/lib/sorcery/controller.rb +59 -38
  27. data/lib/sorcery/crypto_providers/aes256.rb +7 -3
  28. data/lib/sorcery/engine.rb +1 -0
  29. data/lib/sorcery/model/adapters/active_record.rb +2 -1
  30. data/lib/sorcery/model/adapters/mongo_mapper.rb +49 -0
  31. data/lib/sorcery/model/adapters/mongoid.rb +7 -2
  32. data/lib/sorcery/model/submodules/brute_force_protection.rb +13 -3
  33. data/lib/sorcery/model/submodules/remember_me.rb +9 -2
  34. data/lib/sorcery/model/submodules/reset_password.rb +11 -2
  35. data/lib/sorcery/model/submodules/user_activation.rb +13 -2
  36. data/lib/sorcery/model/temporary_token.rb +5 -0
  37. data/lib/sorcery/model.rb +34 -15
  38. data/lib/sorcery/test_helpers/internal/rails.rb +1 -1
  39. data/lib/sorcery/test_helpers/rails.rb +2 -2
  40. data/lib/sorcery.rb +6 -7
  41. data/sorcery.gemspec +86 -203
  42. data/spec/Gemfile.lock +23 -12
  43. data/spec/README.md +31 -0
  44. data/spec/rails3/Gemfile +3 -1
  45. data/spec/rails3/Gemfile.lock +45 -28
  46. data/spec/rails3/app/controllers/application_controller.rb +40 -22
  47. data/spec/rails3/app/views/application/index.html.erb +17 -0
  48. data/spec/rails3/spec/controller_activity_logging_spec.rb +23 -0
  49. data/spec/rails3/spec/controller_oauth2_spec.rb +59 -16
  50. data/spec/rails3/spec/controller_remember_me_spec.rb +37 -6
  51. data/spec/rails3/spec/controller_spec.rb +30 -0
  52. data/spec/rails3/spec/integration_spec.rb +23 -0
  53. data/spec/rails3/spec/spec_helper.rb +6 -5
  54. data/spec/rails3_mongo_mapper/.gitignore +4 -0
  55. data/spec/rails3_mongo_mapper/.rspec +1 -0
  56. data/spec/{sinatra_modular → rails3_mongo_mapper}/Gemfile +5 -5
  57. data/spec/rails3_mongo_mapper/Gemfile.lock +159 -0
  58. data/spec/{sinatra → rails3_mongo_mapper}/Rakefile +3 -3
  59. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +108 -0
  60. data/spec/rails3_mongo_mapper/app/helpers/application_helper.rb +2 -0
  61. data/spec/rails3_mongo_mapper/app/models/authentication.rb +6 -0
  62. data/spec/rails3_mongo_mapper/app/models/user.rb +5 -0
  63. data/spec/rails3_mongo_mapper/app/views/layouts/application.html.erb +14 -0
  64. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.html.erb +17 -0
  65. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_email.text.erb +9 -0
  66. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.html.erb +17 -0
  67. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/activation_success_email.text.erb +9 -0
  68. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.html.erb +16 -0
  69. data/spec/rails3_mongo_mapper/app/views/sorcery_mailer/reset_password_email.text.erb +8 -0
  70. data/spec/rails3_mongo_mapper/config/application.rb +51 -0
  71. data/spec/rails3_mongo_mapper/config/boot.rb +13 -0
  72. data/spec/rails3_mongo_mapper/config/environment.rb +5 -0
  73. data/spec/rails3_mongo_mapper/config/environments/development.rb +30 -0
  74. data/spec/rails3_mongo_mapper/config/environments/in_memory.rb +0 -0
  75. data/spec/rails3_mongo_mapper/config/environments/production.rb +49 -0
  76. data/spec/rails3_mongo_mapper/config/environments/test.rb +35 -0
  77. data/spec/rails3_mongo_mapper/config/initializers/backtrace_silencers.rb +7 -0
  78. data/spec/rails3_mongo_mapper/config/initializers/inflections.rb +10 -0
  79. data/spec/rails3_mongo_mapper/config/initializers/mime_types.rb +5 -0
  80. data/spec/rails3_mongo_mapper/config/initializers/mongo.rb +2 -0
  81. data/spec/rails3_mongo_mapper/config/initializers/secret_token.rb +7 -0
  82. data/spec/rails3_mongo_mapper/config/initializers/session_store.rb +8 -0
  83. data/spec/rails3_mongo_mapper/config/locales/en.yml +5 -0
  84. data/spec/rails3_mongo_mapper/config/routes.rb +59 -0
  85. data/spec/rails3_mongo_mapper/config.ru +4 -0
  86. data/spec/rails3_mongo_mapper/db/schema.rb +23 -0
  87. data/spec/rails3_mongo_mapper/db/seeds.rb +7 -0
  88. data/spec/rails3_mongo_mapper/lib/tasks/.gitkeep +0 -0
  89. data/spec/rails3_mongo_mapper/public/404.html +26 -0
  90. data/spec/rails3_mongo_mapper/public/422.html +26 -0
  91. data/spec/rails3_mongo_mapper/public/500.html +26 -0
  92. data/spec/rails3_mongo_mapper/public/favicon.ico +0 -0
  93. data/spec/rails3_mongo_mapper/public/images/rails.png +0 -0
  94. data/spec/rails3_mongo_mapper/public/javascripts/application.js +2 -0
  95. data/spec/rails3_mongo_mapper/public/javascripts/controls.js +965 -0
  96. data/spec/rails3_mongo_mapper/public/javascripts/dragdrop.js +974 -0
  97. data/spec/rails3_mongo_mapper/public/javascripts/effects.js +1123 -0
  98. data/spec/rails3_mongo_mapper/public/javascripts/prototype.js +6001 -0
  99. data/spec/rails3_mongo_mapper/public/javascripts/rails.js +175 -0
  100. data/spec/rails3_mongo_mapper/public/robots.txt +5 -0
  101. data/spec/rails3_mongo_mapper/public/stylesheets/.gitkeep +0 -0
  102. data/spec/rails3_mongo_mapper/script/rails +6 -0
  103. data/spec/{sinatra → rails3_mongo_mapper}/spec/controller_spec.rb +51 -41
  104. data/spec/rails3_mongo_mapper/spec/spec_helper.orig.rb +27 -0
  105. data/spec/rails3_mongo_mapper/spec/spec_helper.rb +55 -0
  106. data/spec/rails3_mongo_mapper/spec/user_activation_spec.rb +9 -0
  107. data/spec/rails3_mongo_mapper/spec/user_activity_logging_spec.rb +8 -0
  108. data/spec/rails3_mongo_mapper/spec/user_brute_force_protection_spec.rb +8 -0
  109. data/spec/rails3_mongo_mapper/spec/user_oauth_spec.rb +8 -0
  110. data/spec/rails3_mongo_mapper/spec/user_remember_me_spec.rb +8 -0
  111. data/spec/rails3_mongo_mapper/spec/user_reset_password_spec.rb +8 -0
  112. data/spec/rails3_mongo_mapper/spec/user_spec.rb +37 -0
  113. data/spec/rails3_mongo_mapper/vendor/plugins/.gitkeep +0 -0
  114. data/spec/rails3_mongoid/Gemfile +1 -1
  115. data/spec/rails3_mongoid/Gemfile.lock +41 -34
  116. data/spec/rails3_mongoid/spec/controller_activity_logging_spec.rb +98 -0
  117. data/spec/rails3_mongoid/spec/controller_spec.rb +130 -0
  118. data/spec/rails3_mongoid/spec/user_spec.rb +1 -0
  119. data/spec/shared_examples/user_remember_me_shared_examples.rb +1 -0
  120. data/spec/shared_examples/user_shared_examples.rb +36 -8
  121. metadata +128 -234
  122. data/lib/generators/sorcery_migration/sorcery_migration_generator.rb +0 -24
  123. data/lib/generators/sorcery_migration/templates/activity_logging.rb +0 -17
  124. data/lib/generators/sorcery_migration/templates/brute_force_protection.rb +0 -11
  125. data/lib/generators/sorcery_migration/templates/remember_me.rb +0 -15
  126. data/lib/generators/sorcery_migration/templates/reset_password.rb +0 -13
  127. data/lib/generators/sorcery_migration/templates/user_activation.rb +0 -17
  128. data/lib/sorcery/controller/adapters/sinatra.rb +0 -104
  129. data/lib/sorcery/sinatra.rb +0 -4
  130. data/lib/sorcery/test_helpers/internal/sinatra.rb +0 -74
  131. data/lib/sorcery/test_helpers/internal/sinatra_modular.rb +0 -74
  132. data/lib/sorcery/test_helpers/sinatra.rb +0 -88
  133. data/spec/rails3/Rakefile.unused +0 -7
  134. data/spec/rails3/public/index.html +0 -239
  135. data/spec/sinatra/Gemfile +0 -15
  136. data/spec/sinatra/Gemfile.lock +0 -117
  137. data/spec/sinatra/authentication.rb +0 -3
  138. data/spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb +0 -17
  139. data/spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -17
  140. data/spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -11
  141. data/spec/sinatra/db/migrate/core/20101224223620_create_users.rb +0 -16
  142. data/spec/sinatra/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  143. data/spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -15
  144. data/spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -13
  145. data/spec/sinatra/filters.rb +0 -27
  146. data/spec/sinatra/modular.rb +0 -157
  147. data/spec/sinatra/myapp.rb +0 -133
  148. data/spec/sinatra/spec/controller_activity_logging_spec.rb +0 -85
  149. data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +0 -70
  150. data/spec/sinatra/spec/controller_http_basic_auth_spec.rb +0 -53
  151. data/spec/sinatra/spec/controller_oauth2_spec.rb +0 -99
  152. data/spec/sinatra/spec/controller_oauth_spec.rb +0 -100
  153. data/spec/sinatra/spec/controller_remember_me_spec.rb +0 -64
  154. data/spec/sinatra/spec/controller_session_timeout_spec.rb +0 -57
  155. data/spec/sinatra/spec/spec_helper.rb +0 -45
  156. data/spec/sinatra/user.rb +0 -6
  157. data/spec/sinatra/views/test_login.erb +0 -4
  158. data/spec/sinatra_modular/Gemfile.lock +0 -117
  159. data/spec/sinatra_modular/Rakefile +0 -11
  160. data/spec/sinatra_modular/authentication.rb +0 -3
  161. data/spec/sinatra_modular/db/migrate/activation/20101224223622_add_activation_to_users.rb +0 -17
  162. data/spec/sinatra_modular/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -17
  163. data/spec/sinatra_modular/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -11
  164. data/spec/sinatra_modular/db/migrate/core/20101224223620_create_users.rb +0 -16
  165. data/spec/sinatra_modular/db/migrate/external/20101224223628_create_authentications.rb +0 -14
  166. data/spec/sinatra_modular/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -15
  167. data/spec/sinatra_modular/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -13
  168. data/spec/sinatra_modular/filters.rb +0 -27
  169. data/spec/sinatra_modular/modular.rb +0 -157
  170. data/spec/sinatra_modular/myapp.rb +0 -133
  171. data/spec/sinatra_modular/sorcery_mailer.rb +0 -25
  172. data/spec/sinatra_modular/spec_modular/controller_activity_logging_spec.rb +0 -85
  173. data/spec/sinatra_modular/spec_modular/controller_brute_force_protection_spec.rb +0 -70
  174. data/spec/sinatra_modular/spec_modular/controller_http_basic_auth_spec.rb +0 -53
  175. data/spec/sinatra_modular/spec_modular/controller_oauth2_spec.rb +0 -99
  176. data/spec/sinatra_modular/spec_modular/controller_oauth_spec.rb +0 -100
  177. data/spec/sinatra_modular/spec_modular/controller_remember_me_spec.rb +0 -64
  178. data/spec/sinatra_modular/spec_modular/controller_session_timeout_spec.rb +0 -57
  179. data/spec/sinatra_modular/spec_modular/controller_spec.rb +0 -116
  180. data/spec/sinatra_modular/spec_modular/spec.opts +0 -2
  181. data/spec/sinatra_modular/spec_modular/spec_helper.rb +0 -51
  182. data/spec/sinatra_modular/user.rb +0 -6
  183. data/spec/sinatra_modular/views/test_login.erb +0 -4
  184. /data/spec/{sinatra → rails3_mongo_mapper/app/mailers}/sorcery_mailer.rb +0 -0
  185. /data/spec/{sinatra → rails3_mongo_mapper}/spec/spec.opts +0 -0
@@ -1,15 +0,0 @@
1
- class SorceryRememberMe < ActiveRecord::Migration
2
- def self.up
3
- add_column :users, :remember_me_token, :string, :default => nil
4
- add_column :users, :remember_me_token_expires_at, :datetime, :default => nil
5
-
6
- add_index :users, :remember_me_token
7
- end
8
-
9
- def self.down
10
- remove_index :users, :remember_me_token
11
-
12
- remove_column :users, :remember_me_token_expires_at
13
- remove_column :users, :remember_me_token
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- class SorceryResetPassword < ActiveRecord::Migration
2
- def self.up
3
- add_column :users, :reset_password_token, :string, :default => nil
4
- add_column :users, :reset_password_token_expires_at, :datetime, :default => nil
5
- add_column :users, :reset_password_email_sent_at, :datetime, :default => nil
6
- end
7
-
8
- def self.down
9
- remove_column :users, :reset_password_email_sent_at
10
- remove_column :users, :reset_password_token_expires_at
11
- remove_column :users, :reset_password_token
12
- end
13
- end
@@ -1,17 +0,0 @@
1
- class SorceryUserActivation < ActiveRecord::Migration
2
- def self.up
3
- add_column :users, :activation_state, :string, :default => nil
4
- add_column :users, :activation_token, :string, :default => nil
5
- add_column :users, :activation_token_expires_at, :datetime, :default => nil
6
-
7
- add_index :users, :activation_token
8
- end
9
-
10
- def self.down
11
- remove_index :users, :activation_token
12
-
13
- remove_column :users, :activation_token_expires_at
14
- remove_column :users, :activation_token
15
- remove_column :users, :activation_state
16
- end
17
- end
@@ -1,104 +0,0 @@
1
- module Sorcery
2
- module Controller
3
- module Adapters
4
- # This module does the magic of translating Rails commands to Sinatra.
5
- # This way the Rails code doesn't change, but it actually now calls Sinatra calls.
6
- module Sinatra
7
- def self.included(base)
8
- base.class_eval do
9
- class << self
10
- # prepend a filter
11
- def prepend_filter(type, path = nil, options = {}, &block)
12
- return filters[type].unshift block unless path
13
- path, options = //, path if path.respond_to?(:each_pair)
14
- block, *arguments = compile!(type, path, block, options)
15
- prepend_filter(type) do
16
- process_route(*arguments) { instance_eval(&block) }
17
- end
18
- end
19
-
20
- def after_filter(filter)
21
- after do
22
- send(filter)
23
- end
24
- end
25
- end
26
- end
27
-
28
- ::Sinatra::Request.class_eval do
29
- def authorization
30
- env['HTTP_AUTHORIZATION'] ||
31
- env['X-HTTP_AUTHORIZATION'] ||
32
- env['X_HTTP_AUTHORIZATION'] ||
33
- env['REDIRECT_X_HTTP_AUTHORIZATION'] || nil
34
- end
35
- end
36
-
37
- base.send(:include, SorceryHelpers)
38
- base.send(:include, InstanceMethods)
39
- base.extend(ClassMethods)
40
- end
41
-
42
- module SorceryHelpers
43
-
44
- def request_http_basic_authentication(realm)
45
- response.header['WWW-Authenticate'] = %(Basic realm="#{realm}")
46
- response.status = 401
47
- end
48
-
49
- def authenticate_with_http_basic(&blk)
50
- @auth ||= Rack::Auth::Basic::Request.new(request.env)
51
- yield @auth.credentials if (@auth.provided? && @auth.basic? && @auth.credentials)
52
- end
53
-
54
- end
55
-
56
- module InstanceMethods
57
- def reset_session
58
- session.clear
59
- end
60
-
61
- def redirect_to(*args)
62
- args.pop if args.last.is_a?(Hash)
63
- redirect(*args)
64
- end
65
-
66
- def root_path
67
- '/'
68
- end
69
-
70
- ::Sinatra.helpers do
71
- include SorceryHelpers
72
- end
73
-
74
- def cookies
75
- @cookie_proxy ||= CookieProxy.new(request, response)
76
- end
77
- end
78
-
79
- class CookieProxy
80
- def initialize(request, response)
81
- @request = request
82
- @response = response
83
- end
84
-
85
- def [](key)
86
- @request.cookies[key.to_s]
87
- end
88
-
89
- def []=(key, value)
90
- @response.set_cookie(key, value)
91
- end
92
- end
93
-
94
- module ClassMethods
95
- def prepend_before_filter(filter)
96
- prepend_filter(:before) do
97
- send(filter)
98
- end
99
- end
100
- end
101
- end
102
- end
103
- end
104
- end
@@ -1,4 +0,0 @@
1
- if defined?(Sinatra::Base)
2
- Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
3
- Sinatra::Base.send(:include, Sorcery::Controller)
4
- end
@@ -1,74 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Internal
4
- module Sinatra
5
- include ::Sorcery::TestHelpers::Sinatra::CookieSessionMethods
6
- include ::Sorcery::TestHelpers::Sinatra::InstanceMethods
7
-
8
- class ::Sinatra::Application
9
- class << self
10
- attr_accessor :sorcery_vars
11
- end
12
- @sorcery_vars = {}
13
-
14
- # NOTE: see before and after test filters in filters.rb
15
-
16
- def save_instance_vars
17
- instance_variables.each do |var|
18
- self.class.sorcery_vars[:"#{var.to_s.delete("@")}"] = instance_variable_get(var)
19
- end
20
- end
21
- end
22
-
23
- ::RSpec::Matchers.define :redirect_to do |expected|
24
- match do |actual|
25
- actual.status == 302 && actual.location == expected
26
- end
27
- end
28
-
29
- def clear_user_without_logout
30
- get_sinatra_app(subject).instance_variable_set(:@current_user, nil)
31
- end
32
-
33
- def assigns
34
- ::Sinatra::Application.sorcery_vars
35
- end
36
-
37
- def sorcery_reload!(submodules = [], options = {})
38
- reload_user_class
39
-
40
- # return to no-module configuration
41
- ::Sorcery::Controller::Config.init!
42
- ::Sorcery::Controller::Config.reset!
43
-
44
- # clear all filters
45
- ::Sinatra::Application.instance_variable_set(:@filters, {:before => [], :after => []})
46
- load File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'spec', 'sinatra', 'filters.rb')
47
- ::Sinatra::Application.send(:include, ::Filters)
48
-
49
- # configure
50
- ::Sorcery::Controller::Config.submodules = submodules
51
- ::Sorcery::Controller::Config.user_class = nil
52
- ::Sinatra::Application.send(:include, Sorcery::Controller::Adapters::Sinatra)
53
- ::Sinatra::Application.send(:include, Sorcery::Controller)
54
- ::Sorcery::Controller::Config.user_class = "User"
55
-
56
- ::Sorcery::Controller::Config.user_config do |user|
57
- options.each do |property, value|
58
- user.send(:"#{property}=", value)
59
- end
60
- end
61
- User.authenticates_with_sorcery!
62
- end
63
-
64
- def sorcery_controller_property_set(property, value)
65
- ::Sorcery::Controller::Config.send(:"#{property}=", value)
66
- end
67
-
68
- def sorcery_controller_external_property_set(provider, property, value)
69
- ::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,74 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Internal
4
- module SinatraModular
5
- include ::Sorcery::TestHelpers::Sinatra::CookieSessionMethods
6
- include ::Sorcery::TestHelpers::Sinatra::InstanceMethods
7
-
8
- class ::Modular
9
- class << self
10
- attr_accessor :sorcery_vars
11
- end
12
- @sorcery_vars = {}
13
-
14
- # NOTE: see before and after test filters in filters.rb
15
-
16
- def save_instance_vars
17
- instance_variables.each do |var|
18
- self.class.sorcery_vars[:"#{var.to_s.delete("@")}"] = instance_variable_get(var)
19
- end
20
- end
21
- end
22
-
23
- ::RSpec::Matchers.define :redirect_to do |expected|
24
- match do |actual|
25
- actual.status == 302 && actual.location == expected
26
- end
27
- end
28
-
29
- def clear_user_without_logout
30
- get_sinatra_app(subject).instance_variable_set(:@current_user, nil)
31
- end
32
-
33
- def assigns
34
- ::Modular.sorcery_vars
35
- end
36
-
37
- def sorcery_reload!(submodules = [], options = {})
38
- reload_user_class
39
-
40
- # return to no-module configuration
41
- ::Sorcery::Controller::Config.init!
42
- ::Sorcery::Controller::Config.reset!
43
-
44
- # clear all filters
45
- ::Sinatra::Base.instance_variable_set(:@filters, {:before => [], :after => []})
46
- require File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'spec', 'sinatra', 'filters')
47
- ::Sinatra::Base.send(:include, ::Filters)
48
-
49
- # configure
50
- ::Sorcery::Controller::Config.submodules = submodules
51
- ::Sorcery::Controller::Config.user_class = nil
52
- ::Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
53
- ::Sinatra::Base.send(:include, Sorcery::Controller)
54
- ::Sorcery::Controller::Config.user_class = "User"
55
-
56
- ::Sorcery::Controller::Config.user_config do |user|
57
- options.each do |property, value|
58
- user.send(:"#{property}=", value)
59
- end
60
- end
61
- User.authenticates_with_sorcery!
62
- end
63
-
64
- def sorcery_controller_property_set(property, value)
65
- ::Sorcery::Controller::Config.send(:"#{property}=", value)
66
- end
67
-
68
- def sorcery_controller_external_property_set(provider, property, value)
69
- ::Sorcery::Controller::Config.send(provider).send(:"#{property}=", value)
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,88 +0,0 @@
1
- module Sorcery
2
- module TestHelpers
3
- module Sinatra
4
- def self.included(base)
5
- base.send(:include, InstanceMethods)
6
- base.send(:include, CookieSessionMethods)
7
- ::Sinatra::Base.class_eval do
8
- class << self
9
- attr_accessor :rack_test_session
10
- end
11
-
12
- def self.inherited(subclass)
13
- super
14
- subclass.class_eval do
15
- class << self
16
- attr_accessor :rack_test_session
17
- end
18
- end
19
- end
20
-
21
- include CookieSessionMethods
22
-
23
- def rack_test_session
24
- self.class.rack_test_session
25
- end
26
- end
27
- end
28
-
29
- module InstanceMethods
30
- def get_sinatra_app(app)
31
- while !app.kind_of? ::Sinatra::Base do
32
- app = app.instance_variable_get(:@app)
33
- end
34
- app
35
- end
36
-
37
- def login_user(user=nil)
38
- user ||= @user
39
- get_sinatra_app(app).send(:login_user, user)
40
- get_sinatra_app(app).send(:after_login!, user, [user.send(user.sorcery_config.username_attribute_name), 'secret'])
41
- end
42
-
43
- def logout_user
44
- get_sinatra_app(app).send(:logout)
45
- end
46
- end
47
-
48
- module CookieSessionMethods
49
- class SessionData
50
- def initialize(cookies)
51
- @cookies = cookies
52
- @data = cookies['rack.session']
53
- if @data
54
- @data = @data.unpack("m*").first
55
- @data = Marshal.load(@data)
56
- else
57
- @data = {}
58
- end
59
- end
60
-
61
- def [](key)
62
- @data[key]
63
- end
64
-
65
- def []=(key, value)
66
- @data[key] = value
67
- session_data = Marshal.dump(@data)
68
- session_data = [session_data].pack("m*")
69
- @cookies.merge("rack.session=#{Rack::Utils.escape(session_data)}", URI.parse("//example.org//"))
70
- raise "session variable not set" unless @cookies['rack.session'] == session_data
71
- end
72
-
73
- def clear
74
- @data = {}
75
- end
76
- end
77
-
78
- def session
79
- SessionData.new(cookies)
80
- end
81
-
82
- def cookies
83
- rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar
84
- end
85
- end
86
- end
87
- end
88
- end
@@ -1,7 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require File.expand_path('../config/application', __FILE__)
5
- require 'rake'
6
-
7
- AppRoot::Application.load_tasks
@@ -1,239 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Ruby on Rails: Welcome aboard</title>
5
- <style type="text/css" media="screen">
6
- body {
7
- margin: 0;
8
- margin-bottom: 25px;
9
- padding: 0;
10
- background-color: #f0f0f0;
11
- font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
12
- font-size: 13px;
13
- color: #333;
14
- }
15
-
16
- h1 {
17
- font-size: 28px;
18
- color: #000;
19
- }
20
-
21
- a {color: #03c}
22
- a:hover {
23
- background-color: #03c;
24
- color: white;
25
- text-decoration: none;
26
- }
27
-
28
-
29
- #page {
30
- background-color: #f0f0f0;
31
- width: 750px;
32
- margin: 0;
33
- margin-left: auto;
34
- margin-right: auto;
35
- }
36
-
37
- #content {
38
- float: left;
39
- background-color: white;
40
- border: 3px solid #aaa;
41
- border-top: none;
42
- padding: 25px;
43
- width: 500px;
44
- }
45
-
46
- #sidebar {
47
- float: right;
48
- width: 175px;
49
- }
50
-
51
- #footer {
52
- clear: both;
53
- }
54
-
55
-
56
- #header, #about, #getting-started {
57
- padding-left: 75px;
58
- padding-right: 30px;
59
- }
60
-
61
-
62
- #header {
63
- background-image: url("images/rails.png");
64
- background-repeat: no-repeat;
65
- background-position: top left;
66
- height: 64px;
67
- }
68
- #header h1, #header h2 {margin: 0}
69
- #header h2 {
70
- color: #888;
71
- font-weight: normal;
72
- font-size: 16px;
73
- }
74
-
75
-
76
- #about h3 {
77
- margin: 0;
78
- margin-bottom: 10px;
79
- font-size: 14px;
80
- }
81
-
82
- #about-content {
83
- background-color: #ffd;
84
- border: 1px solid #fc0;
85
- margin-left: -55px;
86
- margin-right: -10px;
87
- }
88
- #about-content table {
89
- margin-top: 10px;
90
- margin-bottom: 10px;
91
- font-size: 11px;
92
- border-collapse: collapse;
93
- }
94
- #about-content td {
95
- padding: 10px;
96
- padding-top: 3px;
97
- padding-bottom: 3px;
98
- }
99
- #about-content td.name {color: #555}
100
- #about-content td.value {color: #000}
101
-
102
- #about-content ul {
103
- padding: 0;
104
- list-style-type: none;
105
- }
106
-
107
- #about-content.failure {
108
- background-color: #fcc;
109
- border: 1px solid #f00;
110
- }
111
- #about-content.failure p {
112
- margin: 0;
113
- padding: 10px;
114
- }
115
-
116
-
117
- #getting-started {
118
- border-top: 1px solid #ccc;
119
- margin-top: 25px;
120
- padding-top: 15px;
121
- }
122
- #getting-started h1 {
123
- margin: 0;
124
- font-size: 20px;
125
- }
126
- #getting-started h2 {
127
- margin: 0;
128
- font-size: 14px;
129
- font-weight: normal;
130
- color: #333;
131
- margin-bottom: 25px;
132
- }
133
- #getting-started ol {
134
- margin-left: 0;
135
- padding-left: 0;
136
- }
137
- #getting-started li {
138
- font-size: 18px;
139
- color: #888;
140
- margin-bottom: 25px;
141
- }
142
- #getting-started li h2 {
143
- margin: 0;
144
- font-weight: normal;
145
- font-size: 18px;
146
- color: #333;
147
- }
148
- #getting-started li p {
149
- color: #555;
150
- font-size: 13px;
151
- }
152
-
153
-
154
- #sidebar ul {
155
- margin-left: 0;
156
- padding-left: 0;
157
- }
158
- #sidebar ul h3 {
159
- margin-top: 25px;
160
- font-size: 16px;
161
- padding-bottom: 10px;
162
- border-bottom: 1px solid #ccc;
163
- }
164
- #sidebar li {
165
- list-style-type: none;
166
- }
167
- #sidebar ul.links li {
168
- margin-bottom: 5px;
169
- }
170
-
171
- </style>
172
- <script type="text/javascript">
173
- function about() {
174
- info = document.getElementById('about-content');
175
- if (window.XMLHttpRequest)
176
- { xhr = new XMLHttpRequest(); }
177
- else
178
- { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
179
- xhr.open("GET","rails/info/properties",false);
180
- xhr.send("");
181
- info.innerHTML = xhr.responseText;
182
- info.style.display = 'block'
183
- }
184
- </script>
185
- </head>
186
- <body>
187
- <div id="page">
188
- <div id="sidebar">
189
- <ul id="sidebar-items">
190
- <li>
191
- <h3>Browse the documentation</h3>
192
- <ul class="links">
193
- <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
194
- <li><a href="http://stdlib.rubyonrails.org/">Ruby standard library</a></li>
195
- <li><a href="http://corelib.rubyonrails.org/">Ruby core</a></li>
196
- <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
197
- </ul>
198
- </li>
199
- </ul>
200
- </div>
201
-
202
- <div id="content">
203
- <div id="header">
204
- <h1>Welcome aboard</h1>
205
- <h2>You&rsquo;re riding Ruby on Rails!</h2>
206
- </div>
207
-
208
- <div id="about">
209
- <h3><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
210
- <div id="about-content" style="display: none"></div>
211
- </div>
212
-
213
- <div id="getting-started">
214
- <h1>Getting started</h1>
215
- <h2>Here&rsquo;s how to get rolling:</h2>
216
-
217
- <ol>
218
- <li>
219
- <h2>Use <code>rails generate</code> to create your models and controllers</h2>
220
- <p>To see all available options, run it without parameters.</p>
221
- </li>
222
-
223
- <li>
224
- <h2>Set up a default route and remove or rename this file</h2>
225
- <p>Routes are set up in config/routes.rb.</p>
226
- </li>
227
-
228
- <li>
229
- <h2>Create your database</h2>
230
- <p>Run <code>rake db:migrate</code> to create your database. If you're not using SQLite (the default), edit <code>config/database.yml</code> with your username and password.</p>
231
- </li>
232
- </ol>
233
- </div>
234
- </div>
235
-
236
- <div id="footer">&nbsp;</div>
237
- </div>
238
- </body>
239
- </html>
data/spec/sinatra/Gemfile DELETED
@@ -1,15 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'sinatra', '>= 1.2.0'
4
- gem 'sqlite3-ruby', :require => 'sqlite3'
5
- gem 'activerecord', '>= 3.0.3'
6
- gem 'actionmailer', '>= 3.0.3'
7
- gem "sorcery", '>= 0.1.0', :path => '../../'
8
-
9
- group :development, :test do
10
- gem "rake"
11
- gem "rspec", "~> 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