sorcery 0.2.1 → 0.3.0

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

Potentially problematic release.


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

Files changed (66) hide show
  1. data/README.rdoc +89 -59
  2. data/VERSION +1 -1
  3. data/lib/generators/sorcery_migration/sorcery_migration_generator.rb +24 -0
  4. data/lib/generators/sorcery_migration/templates/activity_logging.rb +17 -0
  5. data/lib/generators/sorcery_migration/templates/brute_force_protection.rb +11 -0
  6. data/lib/generators/sorcery_migration/templates/core.rb +16 -0
  7. data/lib/generators/sorcery_migration/templates/oauth.rb +14 -0
  8. data/lib/generators/sorcery_migration/templates/remember_me.rb +15 -0
  9. data/lib/generators/sorcery_migration/templates/reset_password.rb +13 -0
  10. data/lib/generators/sorcery_migration/templates/user_activation.rb +17 -0
  11. data/lib/sorcery.rb +8 -0
  12. data/lib/sorcery/controller/adapters/sinatra.rb +97 -0
  13. data/lib/sorcery/controller/submodules/http_basic_auth.rb +10 -6
  14. data/lib/sorcery/controller/submodules/oauth.rb +6 -3
  15. data/lib/sorcery/controller/submodules/oauth/oauth1.rb +11 -4
  16. data/lib/sorcery/controller/submodules/oauth/oauth2.rb +1 -1
  17. data/lib/sorcery/model/submodules/activity_logging.rb +1 -1
  18. data/lib/sorcery/model/submodules/brute_force_protection.rb +0 -4
  19. data/lib/sorcery/sinatra.rb +14 -0
  20. data/lib/sorcery/test_helpers.rb +8 -52
  21. data/lib/sorcery/test_helpers/rails.rb +57 -0
  22. data/lib/sorcery/test_helpers/sinatra.rb +131 -0
  23. data/sorcery.gemspec +77 -3
  24. data/spec/Gemfile +1 -1
  25. data/spec/Gemfile.lock +2 -2
  26. data/spec/rails3/app_root/Gemfile +2 -4
  27. data/spec/rails3/app_root/Gemfile.lock +2 -5
  28. data/spec/rails3/app_root/spec/controller_oauth2_spec.rb +2 -0
  29. data/spec/rails3/app_root/spec/controller_oauth_spec.rb +6 -1
  30. data/spec/rails3/app_root/spec/controller_session_timeout_spec.rb +2 -2
  31. data/spec/rails3/app_root/spec/spec_helper.rb +1 -0
  32. data/spec/sinatra/Gemfile +12 -0
  33. data/spec/sinatra/Gemfile.lock +134 -0
  34. data/spec/sinatra/Rakefile +10 -0
  35. data/spec/sinatra/authentication.rb +3 -0
  36. data/spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb +17 -0
  37. data/spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +17 -0
  38. data/spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +11 -0
  39. data/spec/sinatra/db/migrate/core/20101224223620_create_users.rb +16 -0
  40. data/spec/sinatra/db/migrate/oauth/20101224223628_create_authentications.rb +14 -0
  41. data/spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +15 -0
  42. data/spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +13 -0
  43. data/spec/sinatra/filters.rb +21 -0
  44. data/spec/sinatra/myapp.rb +133 -0
  45. data/spec/sinatra/sorcery_mailer.rb +25 -0
  46. data/spec/sinatra/spec/controller_activity_logging_spec.rb +85 -0
  47. data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +69 -0
  48. data/spec/sinatra/spec/controller_http_basic_auth_spec.rb +53 -0
  49. data/spec/sinatra/spec/controller_oauth2_spec.rb +119 -0
  50. data/spec/sinatra/spec/controller_oauth_spec.rb +121 -0
  51. data/spec/sinatra/spec/controller_remember_me_spec.rb +64 -0
  52. data/spec/sinatra/spec/controller_session_timeout_spec.rb +52 -0
  53. data/spec/sinatra/spec/controller_spec.rb +120 -0
  54. data/spec/sinatra/spec/spec.opts +4 -0
  55. data/spec/sinatra/spec/spec_helper.rb +44 -0
  56. data/spec/sinatra/spec/user_activation_spec.rb +188 -0
  57. data/spec/sinatra/spec/user_activity_logging_spec.rb +36 -0
  58. data/spec/sinatra/spec/user_brute_force_protection_spec.rb +76 -0
  59. data/spec/sinatra/spec/user_oauth_spec.rb +39 -0
  60. data/spec/sinatra/spec/user_remember_me_spec.rb +66 -0
  61. data/spec/sinatra/spec/user_reset_password_spec.rb +178 -0
  62. data/spec/sinatra/spec/user_spec.rb +317 -0
  63. data/spec/sinatra/user.rb +6 -0
  64. data/spec/sinatra/views/test_login.erb +4 -0
  65. data/spec/untitled folder +18 -0
  66. metadata +76 -2
@@ -48,13 +48,17 @@ module Sorcery
48
48
 
49
49
  # Sets the realm name by searching the controller name in the hash given at configuration time.
50
50
  def realm_name_by_controller
51
- current_controller = self.class
52
- while current_controller != ActionController::Base
53
- result = Config.controller_to_realm_map[current_controller.controller_name]
54
- return result if result
55
- current_controller = self.class.superclass
51
+ if defined?(ActionController::Base)
52
+ current_controller = self.class
53
+ while current_controller != ActionController::Base
54
+ result = Config.controller_to_realm_map[current_controller.controller_name]
55
+ return result if result
56
+ current_controller = self.class.superclass
57
+ end
58
+ nil
59
+ else
60
+ Config.controller_to_realm_map["application"]
56
61
  end
57
- nil
58
62
  end
59
63
 
60
64
  end
@@ -32,9 +32,12 @@ module Sorcery
32
32
  # after authentication the user is redirected to the callback defined in the provider config
33
33
  def auth_at_provider(provider)
34
34
  @provider = Config.send(provider)
35
+ args = {}
35
36
  if @provider.respond_to?(:get_request_token)
36
- args = {:request_token => @provider.get_request_token}
37
- session[:request_token] = args[:request_token]
37
+ req_token = @provider.get_request_token
38
+ session[:request_token] = req_token.token
39
+ session[:request_token_secret] = req_token.secret
40
+ args.merge!({:request_token => req_token.token, :request_token_secret => req_token.secret})
38
41
  end
39
42
  redirect_to @provider.authorize_url(args)
40
43
  end
@@ -43,7 +46,7 @@ module Sorcery
43
46
  def login_from_access_token(provider)
44
47
  @provider = Config.send(provider)
45
48
  args = {}
46
- args.merge!({:oauth_verifier => params[:oauth_verifier], :request_token => session[:request_token]}) if @provider.respond_to?(:get_request_token)
49
+ args.merge!({:oauth_verifier => params[:oauth_verifier], :request_token => session[:request_token], :request_token_secret => session[:request_token_secret]}) if @provider.respond_to?(:get_request_token)
47
50
  args.merge!({:code => params[:code]}) if params[:code]
48
51
  @access_token = @provider.get_access_token(args)
49
52
  @user_hash = @provider.get_user_hash(@access_token)
@@ -8,16 +8,23 @@ module Sorcery
8
8
  "1.0"
9
9
  end
10
10
 
11
- def get_request_token
12
- ::OAuth::Consumer.new(@key, @secret, :site => @site).get_request_token(:oauth_callback => @callback_url)
11
+ def get_request_token(token=nil,secret=nil)
12
+ return ::OAuth::RequestToken.new(get_consumer,token,secret) if token && secret
13
+ get_consumer.get_request_token(:oauth_callback => @callback_url)
13
14
  end
14
15
 
15
16
  def authorize_url(args)
16
- args[:request_token].authorize_url(:oauth_callback => @callback_url)
17
+ get_request_token(args[:request_token],args[:request_token_secret]).authorize_url(:oauth_callback => @callback_url)
17
18
  end
18
19
 
19
20
  def get_access_token(args)
20
- args[:request_token].get_access_token(:oauth_verifier => args[:oauth_verifier])
21
+ get_request_token(args[:request_token],args[:request_token_secret]).get_access_token(:oauth_verifier => args[:oauth_verifier])
22
+ end
23
+
24
+ protected
25
+
26
+ def get_consumer
27
+ ::OAuth::Consumer.new(@key, @secret, :site => @site)
21
28
  end
22
29
  end
23
30
  end
@@ -8,7 +8,7 @@ module Sorcery
8
8
  "2.0"
9
9
  end
10
10
 
11
- def authorize_url(args)
11
+ def authorize_url(*args)
12
12
  client = ::OAuth2::Client.new(@key, @secret, :site => @site)
13
13
  client.web_server.authorize_url(:redirect_uri => @callback_url, :scope => @scope)
14
14
  end
@@ -31,7 +31,7 @@ module Sorcery
31
31
  config = sorcery_config
32
32
  where("#{config.last_activity_at_attribute_name} IS NOT NULL") \
33
33
  .where("#{config.last_logout_at_attribute_name} IS NULL OR #{config.last_activity_at_attribute_name} > #{config.last_logout_at_attribute_name}") \
34
- .where("#{config.last_activity_at_attribute_name} > ? ", config.activity_timeout.seconds.ago)
34
+ .where("#{config.last_activity_at_attribute_name} > ? ", config.activity_timeout.seconds.ago.utc.to_s(:db))
35
35
  end
36
36
  end
37
37
  end
@@ -20,10 +20,6 @@ module Sorcery
20
20
  reset!
21
21
  end
22
22
 
23
- base.class_eval do
24
-
25
- end
26
-
27
23
  base.sorcery_config.before_authenticate << :prevent_locked_user_login
28
24
  base.extend(ClassMethods)
29
25
  base.send(:include, InstanceMethods)
@@ -0,0 +1,14 @@
1
+ ActiveRecord::Base.send(:include, Sorcery::Model) if defined?(ActiveRecord)
2
+ if defined?(Sinatra::Base)
3
+ Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
4
+ Sinatra::Base.send(:include, Sorcery::Controller)
5
+ # Sorcery::Controller::Config.class_eval do
6
+ # class << self
7
+ # def submodules=(mods)
8
+ # @submodules = mods
9
+ # Sinatra::Base.send(:include, Sorcery::Controller::Adapters::Sinatra)
10
+ # Sinatra::Base.send(:include, Sorcery::Controller)
11
+ # end
12
+ # end
13
+ # end
14
+ end
@@ -1,7 +1,13 @@
1
1
  module Sorcery
2
2
  module TestHelpers
3
- SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS = [:register_last_activity_time_to_db, :deny_banned_user, :validate_session]
4
-
3
+ # a patch to fix a bug in testing that happens when you 'destroy' a session twice.
4
+ # After the first destroy, the session is an ordinary hash, and then when destroy is called again there's an exception.
5
+ class ::Hash
6
+ def destroy
7
+ clear
8
+ end
9
+ end
10
+
5
11
  def create_new_user(attributes_hash = nil)
6
12
  user_attributes_hash = attributes_hash || {:username => 'gizmo', :email => "bla@bla.com", :password => 'secret'}
7
13
  @user = User.new(user_attributes_hash)
@@ -16,62 +22,12 @@ module Sorcery
16
22
  @user
17
23
  end
18
24
 
19
- def login_user(user = nil)
20
- user ||= @user
21
- subject.send(:login_user,user)
22
- subject.send(:after_login!,user,[user.username,'secret'])
23
- end
24
-
25
- def logout_user
26
- subject.send(:logout)
27
- end
28
-
29
- def clear_user_without_logout
30
- subject.instance_variable_set(:@current_user,nil)
31
- end
32
-
33
- def sorcery_reload!(submodules = [], options = {})
34
- reload_user_class
35
-
36
- # return to no-module configuration
37
- ::Sorcery::Controller::Config.init!
38
- ::Sorcery::Controller::Config.reset!
39
-
40
- # remove all plugin before_filters so they won't fail other tests.
41
- # I don't like this way, but I didn't find another.
42
- # hopefully it won't break until Rails 4.
43
- ApplicationController._process_action_callbacks.delete_if {|c| SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS.include?(c.filter) }
44
-
45
- # configure
46
- ::Sorcery::Controller::Config.submodules = submodules
47
- ::Sorcery::Controller::Config.user_class = nil
48
- ActionController::Base.send(:include,::Sorcery::Controller)
49
-
50
- User.activate_sorcery! do |config|
51
- options.each do |property,value|
52
- config.send(:"#{property}=", value)
53
- end
54
- end
55
- end
56
-
57
25
  def sorcery_model_property_set(property, *values)
58
26
  User.class_eval do
59
27
  sorcery_config.send(:"#{property}=", *values)
60
28
  end
61
29
  end
62
-
63
- def sorcery_controller_property_set(property, value)
64
- ApplicationController.activate_sorcery! do |config|
65
- config.send(:"#{property}=", value)
66
- end
67
- end
68
30
 
69
- def sorcery_controller_oauth_property_set(provider, property, value)
70
- ApplicationController.activate_sorcery! do |config|
71
- config.send(provider).send(:"#{property}=", value)
72
- end
73
- end
74
-
75
31
  private
76
32
 
77
33
  # reload user class between specs
@@ -0,0 +1,57 @@
1
+ module Sorcery
2
+ module TestHelpers
3
+ module Rails
4
+ SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS = [:register_last_activity_time_to_db, :deny_banned_user, :validate_session]
5
+
6
+ def sorcery_reload!(submodules = [], options = {})
7
+ reload_user_class
8
+
9
+ # return to no-module configuration
10
+ ::Sorcery::Controller::Config.init!
11
+ ::Sorcery::Controller::Config.reset!
12
+
13
+ # remove all plugin before_filters so they won't fail other tests.
14
+ # I don't like this way, but I didn't find another.
15
+ # hopefully it won't break until Rails 4.
16
+ ApplicationController._process_action_callbacks.delete_if {|c| SUBMODUELS_AUTO_ADDED_CONTROLLER_FILTERS.include?(c.filter) }
17
+
18
+ # configure
19
+ ::Sorcery::Controller::Config.submodules = submodules
20
+ ::Sorcery::Controller::Config.user_class = nil
21
+ ActionController::Base.send(:include,::Sorcery::Controller)
22
+
23
+ User.activate_sorcery! do |config|
24
+ options.each do |property,value|
25
+ config.send(:"#{property}=", value)
26
+ end
27
+ end
28
+ end
29
+
30
+ def sorcery_controller_property_set(property, value)
31
+ ApplicationController.activate_sorcery! do |config|
32
+ config.send(:"#{property}=", value)
33
+ end
34
+ end
35
+
36
+ def sorcery_controller_oauth_property_set(provider, property, value)
37
+ ApplicationController.activate_sorcery! do |config|
38
+ config.send(provider).send(:"#{property}=", value)
39
+ end
40
+ end
41
+
42
+ def login_user(user = nil)
43
+ user ||= @user
44
+ subject.send(:login_user,user)
45
+ subject.send(:after_login!,user,[user.username,'secret'])
46
+ end
47
+
48
+ def logout_user
49
+ subject.send(:logout)
50
+ end
51
+
52
+ def clear_user_without_logout
53
+ subject.instance_variable_set(:@current_user,nil)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,131 @@
1
+ module Sorcery
2
+ module TestHelpers
3
+ module Sinatra
4
+
5
+ class MyApp
6
+ class << self
7
+ def new
8
+ return this
9
+ end
10
+ end
11
+ end
12
+
13
+ class ::Sinatra::Application
14
+ class << self
15
+ attr_accessor :sorcery_vars
16
+ end
17
+ @sorcery_vars = {}
18
+
19
+ # NOTE: see before and after test filters in filters.rb
20
+
21
+ def save_instance_vars
22
+ instance_variables.each do |var|
23
+ self.class.sorcery_vars[:"#{var.to_s.delete("@")}"] = instance_variable_get(var)
24
+ end
25
+ end
26
+ end
27
+
28
+ ::RSpec::Matchers.define :redirect_to do |expected|
29
+ match do |actual|
30
+ actual.status == 302 && actual.location == expected
31
+ end
32
+ end
33
+
34
+ def get_sinatra_app(app)
35
+ while app.class != ::Sinatra::Application do
36
+ app = app.instance_variable_get(:@app)
37
+ end
38
+ app
39
+ end
40
+
41
+ def login_user(user=nil)
42
+ user ||= @user
43
+ get_sinatra_app(subject).send(:login_user,user)
44
+ get_sinatra_app(subject).send(:after_login!,user,[user.username,'secret'])
45
+ end
46
+
47
+ def logout_user
48
+ get_sinatra_app(subject).send(:logout)
49
+ end
50
+
51
+ def clear_user_without_logout
52
+ get_sinatra_app(subject).instance_variable_set(:@current_user,nil)
53
+ end
54
+
55
+ def assigns
56
+ ::Sinatra::Application.sorcery_vars
57
+ end
58
+
59
+ class SessionData
60
+ def initialize(cookies)
61
+ @cookies = cookies
62
+ @data = cookies['rack.session']
63
+ if @data
64
+ @data = @data.unpack("m*").first
65
+ @data = Marshal.load(@data)
66
+ else
67
+ @data = {}
68
+ end
69
+ end
70
+
71
+ def [](key)
72
+ @data[key]
73
+ end
74
+
75
+ def []=(key, value)
76
+ @data[key] = value
77
+ session_data = Marshal.dump(@data)
78
+ session_data = [session_data].pack("m*")
79
+ @cookies.merge("rack.session=#{Rack::Utils.escape(session_data)}", URI.parse("//example.org//"))
80
+ raise "session variable not set" unless @cookies['rack.session'] == session_data
81
+ end
82
+ end
83
+
84
+ def session
85
+ SessionData.new(rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar)
86
+ end
87
+
88
+ def cookies
89
+ rack_test_session.instance_variable_get(:@rack_mock_session).cookie_jar
90
+ end
91
+
92
+ def sorcery_reload!(submodules = [], options = {})
93
+ reload_user_class
94
+
95
+ # return to no-module configuration
96
+ ::Sorcery::Controller::Config.init!
97
+ ::Sorcery::Controller::Config.reset!
98
+
99
+ # clear all filters
100
+ ::Sinatra::Application.instance_variable_set(:@filters,{:before => [],:after => []})
101
+ ::Sinatra::Application.class_eval do
102
+ load File.join(File.dirname(__FILE__),'..','..','..','spec','sinatra','filters.rb')
103
+ end
104
+
105
+ # configure
106
+ ::Sorcery::Controller::Config.submodules = submodules
107
+ ::Sorcery::Controller::Config.user_class = nil
108
+ ::Sinatra::Application.send(:include, Sorcery::Controller::Adapters::Sinatra)
109
+ ::Sinatra::Application.send(:include, Sorcery::Controller)
110
+
111
+ User.activate_sorcery! do |config|
112
+ options.each do |property,value|
113
+ config.send(:"#{property}=", value)
114
+ end
115
+ end
116
+ end
117
+
118
+ def sorcery_controller_property_set(property, value)
119
+ ::Sinatra::Application.activate_sorcery! do |config|
120
+ config.send(:"#{property}=", value)
121
+ end
122
+ end
123
+
124
+ def sorcery_controller_oauth_property_set(provider, property, value)
125
+ ::Sinatra::Application.activate_sorcery! do |config|
126
+ config.send(provider).send(:"#{property}=", value)
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sorcery}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Noam Ben Ari"]
12
- s.date = %q{2011-03-15}
12
+ s.date = %q{2011-04-04}
13
13
  s.description = %q{Provides common authentication needs such as signing in/out, activating by email and resetting password.}
14
14
  s.email = %q{nbenari@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -25,8 +25,17 @@ Gem::Specification.new do |s|
25
25
  "README.rdoc",
26
26
  "Rakefile",
27
27
  "VERSION",
28
+ "lib/generators/sorcery_migration/sorcery_migration_generator.rb",
29
+ "lib/generators/sorcery_migration/templates/activity_logging.rb",
30
+ "lib/generators/sorcery_migration/templates/brute_force_protection.rb",
31
+ "lib/generators/sorcery_migration/templates/core.rb",
32
+ "lib/generators/sorcery_migration/templates/oauth.rb",
33
+ "lib/generators/sorcery_migration/templates/remember_me.rb",
34
+ "lib/generators/sorcery_migration/templates/reset_password.rb",
35
+ "lib/generators/sorcery_migration/templates/user_activation.rb",
28
36
  "lib/sorcery.rb",
29
37
  "lib/sorcery/controller.rb",
38
+ "lib/sorcery/controller/adapters/sinatra.rb",
30
39
  "lib/sorcery/controller/submodules/activity_logging.rb",
31
40
  "lib/sorcery/controller/submodules/brute_force_protection.rb",
32
41
  "lib/sorcery/controller/submodules/http_basic_auth.rb",
@@ -52,7 +61,10 @@ Gem::Specification.new do |s|
52
61
  "lib/sorcery/model/submodules/reset_password.rb",
53
62
  "lib/sorcery/model/submodules/user_activation.rb",
54
63
  "lib/sorcery/model/temporary_token.rb",
64
+ "lib/sorcery/sinatra.rb",
55
65
  "lib/sorcery/test_helpers.rb",
66
+ "lib/sorcery/test_helpers/rails.rb",
67
+ "lib/sorcery/test_helpers/sinatra.rb",
56
68
  "sorcery.gemspec",
57
69
  "spec/Gemfile",
58
70
  "spec/Gemfile.lock",
@@ -136,8 +148,42 @@ Gem::Specification.new do |s|
136
148
  "spec/rails3/app_root/spec/user_reset_password_spec.rb",
137
149
  "spec/rails3/app_root/spec/user_spec.rb",
138
150
  "spec/rails3/app_root/vendor/plugins/.gitkeep",
151
+ "spec/sinatra/Gemfile",
152
+ "spec/sinatra/Gemfile.lock",
153
+ "spec/sinatra/Rakefile",
154
+ "spec/sinatra/authentication.rb",
155
+ "spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb",
156
+ "spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb",
157
+ "spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb",
158
+ "spec/sinatra/db/migrate/core/20101224223620_create_users.rb",
159
+ "spec/sinatra/db/migrate/oauth/20101224223628_create_authentications.rb",
160
+ "spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
161
+ "spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb",
162
+ "spec/sinatra/filters.rb",
163
+ "spec/sinatra/myapp.rb",
164
+ "spec/sinatra/sorcery_mailer.rb",
165
+ "spec/sinatra/spec/controller_activity_logging_spec.rb",
166
+ "spec/sinatra/spec/controller_brute_force_protection_spec.rb",
167
+ "spec/sinatra/spec/controller_http_basic_auth_spec.rb",
168
+ "spec/sinatra/spec/controller_oauth2_spec.rb",
169
+ "spec/sinatra/spec/controller_oauth_spec.rb",
170
+ "spec/sinatra/spec/controller_remember_me_spec.rb",
171
+ "spec/sinatra/spec/controller_session_timeout_spec.rb",
172
+ "spec/sinatra/spec/controller_spec.rb",
173
+ "spec/sinatra/spec/spec.opts",
174
+ "spec/sinatra/spec/spec_helper.rb",
175
+ "spec/sinatra/spec/user_activation_spec.rb",
176
+ "spec/sinatra/spec/user_activity_logging_spec.rb",
177
+ "spec/sinatra/spec/user_brute_force_protection_spec.rb",
178
+ "spec/sinatra/spec/user_oauth_spec.rb",
179
+ "spec/sinatra/spec/user_remember_me_spec.rb",
180
+ "spec/sinatra/spec/user_reset_password_spec.rb",
181
+ "spec/sinatra/spec/user_spec.rb",
182
+ "spec/sinatra/user.rb",
183
+ "spec/sinatra/views/test_login.erb",
139
184
  "spec/sorcery_crypto_providers_spec.rb",
140
- "spec/spec_helper.rb"
185
+ "spec/spec_helper.rb",
186
+ "spec/untitled folder"
141
187
  ]
142
188
  s.homepage = %q{http://github.com/NoamB/sorcery}
143
189
  s.licenses = ["MIT"]
@@ -189,6 +235,34 @@ Gem::Specification.new do |s|
189
235
  "spec/rails3/app_root/spec/user_remember_me_spec.rb",
190
236
  "spec/rails3/app_root/spec/user_reset_password_spec.rb",
191
237
  "spec/rails3/app_root/spec/user_spec.rb",
238
+ "spec/sinatra/authentication.rb",
239
+ "spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb",
240
+ "spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb",
241
+ "spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb",
242
+ "spec/sinatra/db/migrate/core/20101224223620_create_users.rb",
243
+ "spec/sinatra/db/migrate/oauth/20101224223628_create_authentications.rb",
244
+ "spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb",
245
+ "spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb",
246
+ "spec/sinatra/filters.rb",
247
+ "spec/sinatra/myapp.rb",
248
+ "spec/sinatra/sorcery_mailer.rb",
249
+ "spec/sinatra/spec/controller_activity_logging_spec.rb",
250
+ "spec/sinatra/spec/controller_brute_force_protection_spec.rb",
251
+ "spec/sinatra/spec/controller_http_basic_auth_spec.rb",
252
+ "spec/sinatra/spec/controller_oauth2_spec.rb",
253
+ "spec/sinatra/spec/controller_oauth_spec.rb",
254
+ "spec/sinatra/spec/controller_remember_me_spec.rb",
255
+ "spec/sinatra/spec/controller_session_timeout_spec.rb",
256
+ "spec/sinatra/spec/controller_spec.rb",
257
+ "spec/sinatra/spec/spec_helper.rb",
258
+ "spec/sinatra/spec/user_activation_spec.rb",
259
+ "spec/sinatra/spec/user_activity_logging_spec.rb",
260
+ "spec/sinatra/spec/user_brute_force_protection_spec.rb",
261
+ "spec/sinatra/spec/user_oauth_spec.rb",
262
+ "spec/sinatra/spec/user_remember_me_spec.rb",
263
+ "spec/sinatra/spec/user_reset_password_spec.rb",
264
+ "spec/sinatra/spec/user_spec.rb",
265
+ "spec/sinatra/user.rb",
192
266
  "spec/sorcery_crypto_providers_spec.rb",
193
267
  "spec/spec_helper.rb"
194
268
  ]