blue_light_special 0.2.0 → 0.2.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.
- data/README.rdoc +28 -0
- data/VERSION +1 -1
- data/app/controllers/blue_light_special/impersonations_controller.rb +6 -3
- data/test/rails_root/app/controllers/admin/admin_controller.rb +14 -0
- data/test/rails_root/app/controllers/admin/users_controller.rb +52 -0
- data/test/rails_root/config/initializers/blue_light_special.rb +20 -3
- data/test/rails_root/db/migrate/{20100305173127_blue_light_special_create_users.rb → 20100727214301_blue_light_special_create_users.rb} +4 -1
- data/test/rails_root/db/migrate/{20100305173129_create_delayed_jobs.rb → 20100727214302_create_delayed_jobs.rb} +0 -0
- data/test/rails_root/test/factories/user.rb +10 -0
- data/test/rails_root/test/integration/admin/users_test.rb +201 -0
- data/test/rails_root/test/integration/edit_profile_test.rb +35 -0
- data/test/rails_root/test/integration/facebook_test.rb +48 -36
- data/test/rails_root/test/integration/impersonation_test.rb +5 -4
- data/test/rails_root/test/integration/password_reset_test.rb +5 -4
- data/test/rails_root/test/integration/sign_in_test.rb +0 -6
- data/test/rails_root/test/integration/sign_up_test.rb +3 -40
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/delayed_job_generator.rb +22 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/templates/migration.rb +20 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/init.rb +1 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/command.rb +76 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/job.rb +270 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/message_sending.rb +22 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/performable_method.rb +55 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/recipes.rb +27 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/tasks.rb +15 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/worker.rb +54 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed_job.rb +13 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/recipes/delayed_job.rb +1 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/spec/database.rb +42 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/spec/delayed_method_spec.rb +150 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/spec/job_spec.rb +406 -0
- data/test/rails_root/vendor/gems/delayed_job-1.8.4/spec/story_spec.rb +17 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/generators/formtastic_stylesheets/formtastic_stylesheets_generator.rb +21 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/formtastic.rb +1312 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/justin_french/formtastic.rb +10 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/rails/init.rb +3 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/formtastic_spec.rb +3079 -0
- data/test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/test_helper.rb +14 -0
- data/test/rails_root/vendor/gems/mini_fb-0.2.2/lib/mini_fb.rb +284 -0
- data/test/rails_root/vendor/gems/mini_fb-0.2.2/test/test_mini_fb.rb +29 -0
- metadata +111 -6
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spec'
|
3
|
+
require 'activesupport'
|
4
|
+
require 'active_support'
|
5
|
+
require 'actionpack'
|
6
|
+
require 'action_controller'
|
7
|
+
require 'action_view'
|
8
|
+
require 'rexml/document'
|
9
|
+
require 'rspec_hpricot_matchers'
|
10
|
+
Spec::Runner.configure do |config|
|
11
|
+
config.include(RspecHpricotMatchers)
|
12
|
+
end
|
13
|
+
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
@@ -0,0 +1,284 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
require 'erb'
|
3
|
+
require 'json' unless defined? JSON
|
4
|
+
|
5
|
+
module MiniFB
|
6
|
+
|
7
|
+
# Global constants
|
8
|
+
FB_URL = "http://api.facebook.com/restserver.php"
|
9
|
+
FB_API_VERSION = "1.0"
|
10
|
+
|
11
|
+
@@logging = false
|
12
|
+
|
13
|
+
def self.enable_logging
|
14
|
+
@@logging = true
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.disable_logging
|
18
|
+
@@logging = false
|
19
|
+
end
|
20
|
+
|
21
|
+
class FaceBookError < StandardError
|
22
|
+
attr_accessor :code
|
23
|
+
# Error that happens during a facebook call.
|
24
|
+
def initialize( error_code, error_msg )
|
25
|
+
@code = error_code
|
26
|
+
super("Facebook error #{error_code}: #{error_msg}" )
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Session
|
31
|
+
attr_accessor :api_key, :secret_key, :session_key, :uid
|
32
|
+
|
33
|
+
|
34
|
+
def initialize(api_key, secret_key, session_key, uid)
|
35
|
+
@api_key = api_key
|
36
|
+
@secret_key = FaceBookSecret.new secret_key
|
37
|
+
@session_key = session_key
|
38
|
+
@uid = uid
|
39
|
+
end
|
40
|
+
|
41
|
+
# returns current user
|
42
|
+
def user
|
43
|
+
return @user unless @user.nil?
|
44
|
+
@user = User.new(MiniFB.call(@api_key, @secret_key, "Users.getInfo", "session_key"=>@session_key, "uids"=>@uid, "fields"=>User.all_fields)[0], self)
|
45
|
+
@user
|
46
|
+
end
|
47
|
+
|
48
|
+
def photos
|
49
|
+
Photos.new(self)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def call(method, params={})
|
54
|
+
return MiniFB.call(api_key, secret_key, method, params.update("session_key"=>session_key))
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end
|
59
|
+
class User
|
60
|
+
FIELDS = [:uid, :status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :birthday_date, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email, :email, :email_hashes, :allowed_restrictions, :pic_with_logo, :pic_big_with_logo, :pic_small_with_logo, :pic_square_with_logo]
|
61
|
+
STANDARD_FIELDS = [:uid, :first_name, :last_name, :name, :timezone, :birthday, :sex, :affiliations, :locale, :profile_url, :proxied_email, :email]
|
62
|
+
|
63
|
+
def self.all_fields
|
64
|
+
FIELDS.join(",")
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.standard_fields
|
68
|
+
STANDARD_FIELDS.join(",")
|
69
|
+
end
|
70
|
+
|
71
|
+
def initialize(fb_hash, session)
|
72
|
+
@fb_hash = fb_hash
|
73
|
+
@session = session
|
74
|
+
end
|
75
|
+
|
76
|
+
def [](key)
|
77
|
+
@fb_hash[key]
|
78
|
+
end
|
79
|
+
|
80
|
+
def uid
|
81
|
+
return self["uid"]
|
82
|
+
end
|
83
|
+
|
84
|
+
def profile_photos
|
85
|
+
@session.photos.get("uid"=>uid, "aid"=>profile_pic_album_id)
|
86
|
+
end
|
87
|
+
|
88
|
+
def profile_pic_album_id
|
89
|
+
merge_aid(-3, uid)
|
90
|
+
end
|
91
|
+
|
92
|
+
def merge_aid(aid, uid)
|
93
|
+
uid = uid.to_i
|
94
|
+
ret = (uid << 32) + (aid & 0xFFFFFFFF)
|
95
|
+
# puts 'merge_aid=' + ret.inspect
|
96
|
+
return ret
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
class Photos
|
101
|
+
|
102
|
+
def initialize(session)
|
103
|
+
@session = session
|
104
|
+
end
|
105
|
+
|
106
|
+
def get(params)
|
107
|
+
pids = params["pids"]
|
108
|
+
if !pids.nil? && pids.is_a?(Array)
|
109
|
+
pids = pids.join(",")
|
110
|
+
params["pids"] = pids
|
111
|
+
end
|
112
|
+
@session.call("photos.get", params)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
BAD_JSON_METHODS = ["users.getloggedinuser", "auth.promotesession", "users.hasapppermission", "Auth.revokeExtendedPermission", "pages.isAdmin"].collect { |x| x.downcase }
|
117
|
+
|
118
|
+
# Call facebook server with a method request. Most keyword arguments
|
119
|
+
# are passed directly to the server with a few exceptions.
|
120
|
+
# The 'sig' value will always be computed automatically.
|
121
|
+
# The 'v' version will be supplied automatically if needed.
|
122
|
+
# The 'call_id' defaults to True, which will generate a valid
|
123
|
+
# number. Otherwise it should be a valid number or False to disable.
|
124
|
+
|
125
|
+
# The default return is a parsed json object.
|
126
|
+
# Unless the 'format' and/or 'callback' arguments are given,
|
127
|
+
# in which case the raw text of the reply is returned. The string
|
128
|
+
# will always be returned, even during errors.
|
129
|
+
|
130
|
+
# If an error occurs, a FacebookError exception will be raised
|
131
|
+
# with the proper code and message.
|
132
|
+
|
133
|
+
# The secret argument should be an instance of FacebookSecret
|
134
|
+
# to hide value from simple introspection.
|
135
|
+
def MiniFB.call( api_key, secret, method, kwargs )
|
136
|
+
|
137
|
+
puts 'kwargs=' + kwargs.inspect if @@logging
|
138
|
+
|
139
|
+
if secret.is_a? String
|
140
|
+
secret = FaceBookSecret.new(secret)
|
141
|
+
end
|
142
|
+
|
143
|
+
# Prepare arguments for call
|
144
|
+
call_id = kwargs.fetch("call_id", true)
|
145
|
+
if call_id == true then
|
146
|
+
kwargs["call_id"] = Time.now.tv_sec.to_s
|
147
|
+
else
|
148
|
+
kwargs.delete("call_id")
|
149
|
+
end
|
150
|
+
|
151
|
+
custom_format = kwargs.include?("format") or kwargs.include?("callback")
|
152
|
+
kwargs["format"] ||= "JSON"
|
153
|
+
kwargs["v"] ||= FB_API_VERSION
|
154
|
+
kwargs["api_key"]||= api_key
|
155
|
+
kwargs["method"] ||= method
|
156
|
+
|
157
|
+
# Hash with secret
|
158
|
+
arg_string = String.new
|
159
|
+
# todo: convert symbols to strings, symbols break the next line
|
160
|
+
kwargs.sort.each { |kv| arg_string << kv[0] << "=" << kv[1].to_s }
|
161
|
+
kwargs["sig"] = Digest::MD5.hexdigest( arg_string + secret.value.call )
|
162
|
+
|
163
|
+
# Call website with POST request
|
164
|
+
begin
|
165
|
+
response = Net::HTTP.post_form( URI.parse(FB_URL), kwargs )
|
166
|
+
rescue SocketError => err
|
167
|
+
raise IOError.new( "Cannot connect to the facebook server: " + err )
|
168
|
+
end
|
169
|
+
|
170
|
+
# Handle response
|
171
|
+
return response.body if custom_format
|
172
|
+
|
173
|
+
fb_method = kwargs["method"].downcase
|
174
|
+
body = response.body
|
175
|
+
|
176
|
+
puts 'response=' + body.inspect if @@logging
|
177
|
+
begin
|
178
|
+
data = JSON.parse( body )
|
179
|
+
if data.include?( "error_msg" ) then
|
180
|
+
raise FaceBookError.new( data["error_code"] || 1, data["error_msg"] )
|
181
|
+
end
|
182
|
+
|
183
|
+
rescue JSON::ParserError => ex
|
184
|
+
if BAD_JSON_METHODS.include?(fb_method) # Little hack because this response isn't valid JSON
|
185
|
+
if body == "0" || body == "false"
|
186
|
+
return false
|
187
|
+
end
|
188
|
+
return body
|
189
|
+
else
|
190
|
+
raise ex
|
191
|
+
end
|
192
|
+
end
|
193
|
+
return data
|
194
|
+
end
|
195
|
+
|
196
|
+
# Returns true is signature is valid, false otherwise.
|
197
|
+
def MiniFB.verify_signature( secret, arguments )
|
198
|
+
signature = arguments.delete( "fb_sig" )
|
199
|
+
return false if signature.nil?
|
200
|
+
|
201
|
+
unsigned = Hash.new
|
202
|
+
signed = Hash.new
|
203
|
+
|
204
|
+
arguments.each do |k, v|
|
205
|
+
if k =~ /^fb_sig_(.*)/ then
|
206
|
+
signed[$1] = v
|
207
|
+
else
|
208
|
+
unsigned[k] = v
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
arg_string = String.new
|
213
|
+
signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
|
214
|
+
if Digest::MD5.hexdigest( arg_string + secret ) == signature
|
215
|
+
return true
|
216
|
+
end
|
217
|
+
return false
|
218
|
+
end
|
219
|
+
|
220
|
+
# Returns the login/add app url for your application.
|
221
|
+
#
|
222
|
+
# options:
|
223
|
+
# - :next => a relative next page to go to. relative to your facebook connect url or if :canvas is true, then relative to facebook app url
|
224
|
+
# - :canvas => true/false - to say whether this is a canvas app or not
|
225
|
+
def self.login_url(api_key, options={})
|
226
|
+
login_url = "http://api.facebook.com/login.php?api_key=#{api_key}"
|
227
|
+
login_url << "&next=#{options[:next]}" if options[:next]
|
228
|
+
login_url << "&canvas" if options[:canvas]
|
229
|
+
login_url
|
230
|
+
end
|
231
|
+
|
232
|
+
# This function expects arguments as a hash, so
|
233
|
+
# it is agnostic to different POST handling variants in ruby.
|
234
|
+
#
|
235
|
+
# Validate the arguments received from facebook. This is usually
|
236
|
+
# sent for the iframe in Facebook's canvas. It is not necessary
|
237
|
+
# to use this on the auth_token and uid passed to callbacks like
|
238
|
+
# post-add and post-remove.
|
239
|
+
#
|
240
|
+
# The arguments must be a mapping of to string keys and values
|
241
|
+
# or a string of http request data.
|
242
|
+
#
|
243
|
+
# If the data is invalid or not signed properly, an empty
|
244
|
+
# dictionary is returned.
|
245
|
+
#
|
246
|
+
# The secret argument should be an instance of FacebookSecret
|
247
|
+
# to hide value from simple introspection.
|
248
|
+
#
|
249
|
+
# DEPRECATED, use verify_signature instead
|
250
|
+
def MiniFB.validate( secret, arguments )
|
251
|
+
|
252
|
+
signature = arguments.delete( "fb_sig" )
|
253
|
+
return arguments if signature.nil?
|
254
|
+
|
255
|
+
unsigned = Hash.new
|
256
|
+
signed = Hash.new
|
257
|
+
|
258
|
+
arguments.each do |k, v|
|
259
|
+
if k =~ /^fb_sig_(.*)/ then
|
260
|
+
signed[$1] = v
|
261
|
+
else
|
262
|
+
unsigned[k] = v
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
arg_string = String.new
|
267
|
+
signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
|
268
|
+
if Digest::MD5.hexdigest( arg_string + secret ) != signature
|
269
|
+
unsigned # Hash is incorrect, return only unsigned fields.
|
270
|
+
else
|
271
|
+
unsigned.merge signed
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
class FaceBookSecret
|
276
|
+
# Simple container that stores a secret value.
|
277
|
+
# Proc cannot be dumped or introspected by normal tools.
|
278
|
+
attr_reader :value
|
279
|
+
|
280
|
+
def initialize( value )
|
281
|
+
@value = Proc.new { value }
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
class MiniFBTests < Test::Unit::TestCase
|
3
|
+
|
4
|
+
|
5
|
+
def setup
|
6
|
+
end
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
# Test signature verification.
|
13
|
+
def test_signature
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_basic_calls
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_session
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_photos
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blue_light_special
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Nathaniel Bibler
|
@@ -16,16 +17,18 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2010-
|
20
|
+
date: 2010-07-27 00:00:00 -04:00
|
20
21
|
default_executable:
|
21
22
|
dependencies:
|
22
23
|
- !ruby/object:Gem::Dependency
|
23
24
|
name: mini_fb
|
24
25
|
prerelease: false
|
25
26
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
26
28
|
requirements:
|
27
29
|
- - "="
|
28
30
|
- !ruby/object:Gem::Version
|
31
|
+
hash: 19
|
29
32
|
segments:
|
30
33
|
- 0
|
31
34
|
- 2
|
@@ -37,9 +40,11 @@ dependencies:
|
|
37
40
|
name: delayed_job
|
38
41
|
prerelease: false
|
39
42
|
requirement: &id002 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
40
44
|
requirements:
|
41
45
|
- - "="
|
42
46
|
- !ruby/object:Gem::Version
|
47
|
+
hash: 63
|
43
48
|
segments:
|
44
49
|
- 1
|
45
50
|
- 8
|
@@ -51,9 +56,11 @@ dependencies:
|
|
51
56
|
name: mad_mimi_mailer
|
52
57
|
prerelease: false
|
53
58
|
requirement: &id003 !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
54
60
|
requirements:
|
55
61
|
- - "="
|
56
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 17
|
57
64
|
segments:
|
58
65
|
- 0
|
59
66
|
- 0
|
@@ -65,9 +72,11 @@ dependencies:
|
|
65
72
|
name: shoulda
|
66
73
|
prerelease: false
|
67
74
|
requirement: &id004 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
68
76
|
requirements:
|
69
77
|
- - ">="
|
70
78
|
- !ruby/object:Gem::Version
|
79
|
+
hash: 3
|
71
80
|
segments:
|
72
81
|
- 0
|
73
82
|
version: "0"
|
@@ -150,6 +159,70 @@ files:
|
|
150
159
|
- lib/blue_light_special/user.rb
|
151
160
|
- rails/init.rb
|
152
161
|
- shoulda_macros/blue_light_special.rb
|
162
|
+
- test/controllers/passwords_controller_test.rb
|
163
|
+
- test/controllers/sessions_controller_test.rb
|
164
|
+
- test/controllers/users_controller_test.rb
|
165
|
+
- test/models/blue_light_special_mailer_test.rb
|
166
|
+
- test/models/impersonation_test.rb
|
167
|
+
- test/models/user_test.rb
|
168
|
+
- test/rails_root/app/controllers/accounts_controller.rb
|
169
|
+
- test/rails_root/app/controllers/admin/admin_controller.rb
|
170
|
+
- test/rails_root/app/controllers/admin/users_controller.rb
|
171
|
+
- test/rails_root/app/controllers/application_controller.rb
|
172
|
+
- test/rails_root/app/helpers/application_helper.rb
|
173
|
+
- test/rails_root/app/helpers/confirmations_helper.rb
|
174
|
+
- test/rails_root/app/helpers/passwords_helper.rb
|
175
|
+
- test/rails_root/app/models/user.rb
|
176
|
+
- test/rails_root/config/boot.rb
|
177
|
+
- test/rails_root/config/environment.rb
|
178
|
+
- test/rails_root/config/environments/development.rb
|
179
|
+
- test/rails_root/config/environments/production.rb
|
180
|
+
- test/rails_root/config/environments/test.rb
|
181
|
+
- test/rails_root/config/initializers/blue_light_special.rb
|
182
|
+
- test/rails_root/config/initializers/inflections.rb
|
183
|
+
- test/rails_root/config/initializers/mime_types.rb
|
184
|
+
- test/rails_root/config/initializers/requires.rb
|
185
|
+
- test/rails_root/config/initializers/time_formats.rb
|
186
|
+
- test/rails_root/config/routes.rb
|
187
|
+
- test/rails_root/db/migrate/20100727214301_blue_light_special_create_users.rb
|
188
|
+
- test/rails_root/db/migrate/20100727214302_create_delayed_jobs.rb
|
189
|
+
- test/rails_root/public/dispatch.rb
|
190
|
+
- test/rails_root/script/create_project.rb
|
191
|
+
- test/rails_root/test/factories/user.rb
|
192
|
+
- test/rails_root/test/functional/accounts_controller_test.rb
|
193
|
+
- test/rails_root/test/integration/admin/users_test.rb
|
194
|
+
- test/rails_root/test/integration/edit_profile_test.rb
|
195
|
+
- test/rails_root/test/integration/facebook_test.rb
|
196
|
+
- test/rails_root/test/integration/impersonation_test.rb
|
197
|
+
- test/rails_root/test/integration/password_reset_test.rb
|
198
|
+
- test/rails_root/test/integration/sign_in_test.rb
|
199
|
+
- test/rails_root/test/integration/sign_out_test.rb
|
200
|
+
- test/rails_root/test/integration/sign_up_test.rb
|
201
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/delayed_job_generator.rb
|
202
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/templates/migration.rb
|
203
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/init.rb
|
204
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/command.rb
|
205
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/job.rb
|
206
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/message_sending.rb
|
207
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/performable_method.rb
|
208
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/recipes.rb
|
209
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/tasks.rb
|
210
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/worker.rb
|
211
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed_job.rb
|
212
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/recipes/delayed_job.rb
|
213
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/database.rb
|
214
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/delayed_method_spec.rb
|
215
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/job_spec.rb
|
216
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/story_spec.rb
|
217
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/generators/formtastic_stylesheets/formtastic_stylesheets_generator.rb
|
218
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/formtastic.rb
|
219
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/justin_french/formtastic.rb
|
220
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/rails/init.rb
|
221
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/formtastic_spec.rb
|
222
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/test_helper.rb
|
223
|
+
- test/rails_root/vendor/gems/mini_fb-0.2.2/lib/mini_fb.rb
|
224
|
+
- test/rails_root/vendor/gems/mini_fb-0.2.2/test/test_mini_fb.rb
|
225
|
+
- test/test_helper.rb
|
153
226
|
has_rdoc: true
|
154
227
|
homepage: http://github.com/envylabs/blue_light_special
|
155
228
|
licenses: []
|
@@ -160,23 +233,27 @@ rdoc_options:
|
|
160
233
|
require_paths:
|
161
234
|
- lib
|
162
235
|
required_ruby_version: !ruby/object:Gem::Requirement
|
236
|
+
none: false
|
163
237
|
requirements:
|
164
238
|
- - ">="
|
165
239
|
- !ruby/object:Gem::Version
|
240
|
+
hash: 3
|
166
241
|
segments:
|
167
242
|
- 0
|
168
243
|
version: "0"
|
169
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
|
+
none: false
|
170
246
|
requirements:
|
171
247
|
- - ">="
|
172
248
|
- !ruby/object:Gem::Version
|
249
|
+
hash: 3
|
173
250
|
segments:
|
174
251
|
- 0
|
175
252
|
version: "0"
|
176
253
|
requirements: []
|
177
254
|
|
178
255
|
rubyforge_project:
|
179
|
-
rubygems_version: 1.3.
|
256
|
+
rubygems_version: 1.3.7
|
180
257
|
signing_key:
|
181
258
|
specification_version: 3
|
182
259
|
summary: Rails authentication by email and password
|
@@ -188,6 +265,8 @@ test_files:
|
|
188
265
|
- test/models/impersonation_test.rb
|
189
266
|
- test/models/user_test.rb
|
190
267
|
- test/rails_root/app/controllers/accounts_controller.rb
|
268
|
+
- test/rails_root/app/controllers/admin/admin_controller.rb
|
269
|
+
- test/rails_root/app/controllers/admin/users_controller.rb
|
191
270
|
- test/rails_root/app/controllers/application_controller.rb
|
192
271
|
- test/rails_root/app/helpers/application_helper.rb
|
193
272
|
- test/rails_root/app/helpers/confirmations_helper.rb
|
@@ -204,16 +283,42 @@ test_files:
|
|
204
283
|
- test/rails_root/config/initializers/requires.rb
|
205
284
|
- test/rails_root/config/initializers/time_formats.rb
|
206
285
|
- test/rails_root/config/routes.rb
|
207
|
-
- test/rails_root/db/migrate/
|
208
|
-
- test/rails_root/db/migrate/
|
286
|
+
- test/rails_root/db/migrate/20100727214301_blue_light_special_create_users.rb
|
287
|
+
- test/rails_root/db/migrate/20100727214302_create_delayed_jobs.rb
|
209
288
|
- test/rails_root/public/dispatch.rb
|
210
289
|
- test/rails_root/script/create_project.rb
|
211
290
|
- test/rails_root/test/factories/user.rb
|
212
291
|
- test/rails_root/test/functional/accounts_controller_test.rb
|
292
|
+
- test/rails_root/test/integration/admin/users_test.rb
|
293
|
+
- test/rails_root/test/integration/edit_profile_test.rb
|
213
294
|
- test/rails_root/test/integration/facebook_test.rb
|
214
295
|
- test/rails_root/test/integration/impersonation_test.rb
|
215
296
|
- test/rails_root/test/integration/password_reset_test.rb
|
216
297
|
- test/rails_root/test/integration/sign_in_test.rb
|
217
298
|
- test/rails_root/test/integration/sign_out_test.rb
|
218
299
|
- test/rails_root/test/integration/sign_up_test.rb
|
300
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/delayed_job_generator.rb
|
301
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/generators/delayed_job/templates/migration.rb
|
302
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/init.rb
|
303
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/command.rb
|
304
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/job.rb
|
305
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/message_sending.rb
|
306
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/performable_method.rb
|
307
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/recipes.rb
|
308
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/tasks.rb
|
309
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed/worker.rb
|
310
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/lib/delayed_job.rb
|
311
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/recipes/delayed_job.rb
|
312
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/database.rb
|
313
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/delayed_method_spec.rb
|
314
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/job_spec.rb
|
315
|
+
- test/rails_root/vendor/gems/delayed_job-1.8.4/spec/story_spec.rb
|
316
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/generators/formtastic_stylesheets/formtastic_stylesheets_generator.rb
|
317
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/formtastic.rb
|
318
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/lib/justin_french/formtastic.rb
|
319
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/rails/init.rb
|
320
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/formtastic_spec.rb
|
321
|
+
- test/rails_root/vendor/gems/justinfrench-formtastic-0.2.4/spec/test_helper.rb
|
322
|
+
- test/rails_root/vendor/gems/mini_fb-0.2.2/lib/mini_fb.rb
|
323
|
+
- test/rails_root/vendor/gems/mini_fb-0.2.2/test/test_mini_fb.rb
|
219
324
|
- test/test_helper.rb
|