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.
- data/README.rdoc +89 -59
- data/VERSION +1 -1
- data/lib/generators/sorcery_migration/sorcery_migration_generator.rb +24 -0
- data/lib/generators/sorcery_migration/templates/activity_logging.rb +17 -0
- data/lib/generators/sorcery_migration/templates/brute_force_protection.rb +11 -0
- data/lib/generators/sorcery_migration/templates/core.rb +16 -0
- data/lib/generators/sorcery_migration/templates/oauth.rb +14 -0
- data/lib/generators/sorcery_migration/templates/remember_me.rb +15 -0
- data/lib/generators/sorcery_migration/templates/reset_password.rb +13 -0
- data/lib/generators/sorcery_migration/templates/user_activation.rb +17 -0
- data/lib/sorcery.rb +8 -0
- data/lib/sorcery/controller/adapters/sinatra.rb +97 -0
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +10 -6
- data/lib/sorcery/controller/submodules/oauth.rb +6 -3
- data/lib/sorcery/controller/submodules/oauth/oauth1.rb +11 -4
- data/lib/sorcery/controller/submodules/oauth/oauth2.rb +1 -1
- data/lib/sorcery/model/submodules/activity_logging.rb +1 -1
- data/lib/sorcery/model/submodules/brute_force_protection.rb +0 -4
- data/lib/sorcery/sinatra.rb +14 -0
- data/lib/sorcery/test_helpers.rb +8 -52
- data/lib/sorcery/test_helpers/rails.rb +57 -0
- data/lib/sorcery/test_helpers/sinatra.rb +131 -0
- data/sorcery.gemspec +77 -3
- data/spec/Gemfile +1 -1
- data/spec/Gemfile.lock +2 -2
- data/spec/rails3/app_root/Gemfile +2 -4
- data/spec/rails3/app_root/Gemfile.lock +2 -5
- data/spec/rails3/app_root/spec/controller_oauth2_spec.rb +2 -0
- data/spec/rails3/app_root/spec/controller_oauth_spec.rb +6 -1
- data/spec/rails3/app_root/spec/controller_session_timeout_spec.rb +2 -2
- data/spec/rails3/app_root/spec/spec_helper.rb +1 -0
- data/spec/sinatra/Gemfile +12 -0
- data/spec/sinatra/Gemfile.lock +134 -0
- data/spec/sinatra/Rakefile +10 -0
- data/spec/sinatra/authentication.rb +3 -0
- data/spec/sinatra/db/migrate/activation/20101224223622_add_activation_to_users.rb +17 -0
- data/spec/sinatra/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +17 -0
- data/spec/sinatra/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +11 -0
- data/spec/sinatra/db/migrate/core/20101224223620_create_users.rb +16 -0
- data/spec/sinatra/db/migrate/oauth/20101224223628_create_authentications.rb +14 -0
- data/spec/sinatra/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +15 -0
- data/spec/sinatra/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +13 -0
- data/spec/sinatra/filters.rb +21 -0
- data/spec/sinatra/myapp.rb +133 -0
- data/spec/sinatra/sorcery_mailer.rb +25 -0
- data/spec/sinatra/spec/controller_activity_logging_spec.rb +85 -0
- data/spec/sinatra/spec/controller_brute_force_protection_spec.rb +69 -0
- data/spec/sinatra/spec/controller_http_basic_auth_spec.rb +53 -0
- data/spec/sinatra/spec/controller_oauth2_spec.rb +119 -0
- data/spec/sinatra/spec/controller_oauth_spec.rb +121 -0
- data/spec/sinatra/spec/controller_remember_me_spec.rb +64 -0
- data/spec/sinatra/spec/controller_session_timeout_spec.rb +52 -0
- data/spec/sinatra/spec/controller_spec.rb +120 -0
- data/spec/sinatra/spec/spec.opts +4 -0
- data/spec/sinatra/spec/spec_helper.rb +44 -0
- data/spec/sinatra/spec/user_activation_spec.rb +188 -0
- data/spec/sinatra/spec/user_activity_logging_spec.rb +36 -0
- data/spec/sinatra/spec/user_brute_force_protection_spec.rb +76 -0
- data/spec/sinatra/spec/user_oauth_spec.rb +39 -0
- data/spec/sinatra/spec/user_remember_me_spec.rb +66 -0
- data/spec/sinatra/spec/user_reset_password_spec.rb +178 -0
- data/spec/sinatra/spec/user_spec.rb +317 -0
- data/spec/sinatra/user.rb +6 -0
- data/spec/sinatra/views/test_login.erb +4 -0
- data/spec/untitled folder +18 -0
- 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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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
|
-
|
37
|
-
session[: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::
|
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
|
@@ -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
|
@@ -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
|
data/lib/sorcery/test_helpers.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
module Sorcery
|
2
2
|
module TestHelpers
|
3
|
-
|
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
|
data/sorcery.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sorcery}
|
8
|
-
s.version = "0.
|
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-
|
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
|
]
|