authpwn_rails 0.10.7 → 0.10.8

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/Gemfile CHANGED
@@ -1,11 +1,13 @@
1
- source 'http://rubygems.org'
1
+ source :rubygems
2
+
2
3
  gem 'fbgraph_rails', '>= 0.2.2'
3
- gem 'rails', '>= 3.2.0.rc2'
4
+ gem 'rails', '>= 3.2.0'
4
5
 
5
6
  group :development do
6
- gem 'bundler', '~> 1.0.0'
7
- gem 'flexmock', '~> 0.9.0'
8
- gem 'jeweler', '~> 1.6.0'
9
- gem 'rcov', '>= 0', :platform => :mri
7
+ gem 'bundler', '>= 1.0.0'
8
+ gem 'flexmock', '>= 0.9.0'
9
+ gem 'jeweler', '>= 1.8.0'
10
+ gem 'rcov', '>= 0', :platform => :mri_18
11
+ gem 'simplecov', '>= 0', :platform => :mri_19
10
12
  gem 'sqlite3', '>= 1.3.5'
11
13
  end
data/Gemfile.lock CHANGED
@@ -1,41 +1,41 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.2.0.rc2)
5
- actionpack (= 3.2.0.rc2)
6
- mail (~> 2.3.0)
7
- actionpack (3.2.0.rc2)
8
- activemodel (= 3.2.0.rc2)
9
- activesupport (= 3.2.0.rc2)
4
+ actionmailer (3.2.1)
5
+ actionpack (= 3.2.1)
6
+ mail (~> 2.4.0)
7
+ actionpack (3.2.1)
8
+ activemodel (= 3.2.1)
9
+ activesupport (= 3.2.1)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
- journey (~> 1.0.0.rc1)
12
+ journey (~> 1.0.1)
13
13
  rack (~> 1.4.0)
14
14
  rack-cache (~> 1.1)
15
15
  rack-test (~> 0.6.1)
16
16
  sprockets (~> 2.1.2)
17
- activemodel (3.2.0.rc2)
18
- activesupport (= 3.2.0.rc2)
17
+ activemodel (3.2.1)
18
+ activesupport (= 3.2.1)
19
19
  builder (~> 3.0.0)
20
- activerecord (3.2.0.rc2)
21
- activemodel (= 3.2.0.rc2)
22
- activesupport (= 3.2.0.rc2)
23
- arel (~> 3.0.0.rc1)
20
+ activerecord (3.2.1)
21
+ activemodel (= 3.2.1)
22
+ activesupport (= 3.2.1)
23
+ arel (~> 3.0.0)
24
24
  tzinfo (~> 0.3.29)
25
- activeresource (3.2.0.rc2)
26
- activemodel (= 3.2.0.rc2)
27
- activesupport (= 3.2.0.rc2)
28
- activesupport (3.2.0.rc2)
25
+ activeresource (3.2.1)
26
+ activemodel (= 3.2.1)
27
+ activesupport (= 3.2.1)
28
+ activesupport (3.2.1)
29
29
  i18n (~> 0.6)
30
30
  multi_json (~> 1.0)
31
31
  addressable (2.2.6)
32
- arel (3.0.0.rc1)
32
+ arel (3.0.0)
33
33
  builder (3.0.0)
34
34
  erubis (2.7.0)
35
- faraday (0.7.5)
36
- addressable (~> 2.2.6)
37
- multipart-post (~> 1.1.3)
38
- rack (>= 1.1.0, < 2)
35
+ faraday (0.7.6)
36
+ addressable (~> 2.2)
37
+ multipart-post (~> 1.1)
38
+ rack (~> 1.1)
39
39
  fbgraph (1.9.0)
40
40
  activesupport
41
41
  faraday (>= 0.7.5)
@@ -55,13 +55,14 @@ GEM
55
55
  hashie (1.2.0)
56
56
  hike (1.2.1)
57
57
  i18n (0.6.0)
58
- jeweler (1.6.4)
58
+ jeweler (1.8.3)
59
59
  bundler (~> 1.0)
60
60
  git (>= 1.2.5)
61
61
  rake
62
- journey (1.0.0.rc4)
63
- json (1.6.4)
64
- mail (2.3.0)
62
+ rdoc
63
+ journey (1.0.1)
64
+ json (1.6.5)
65
+ mail (2.4.1)
65
66
  i18n (>= 0.4.0)
66
67
  mime-types (~> 1.16)
67
68
  treetop (~> 1.4.8)
@@ -72,34 +73,38 @@ GEM
72
73
  faraday (~> 0.7)
73
74
  multi_json (~> 1.0)
74
75
  polyglot (0.3.3)
75
- rack (1.4.0)
76
+ rack (1.4.1)
76
77
  rack-cache (1.1)
77
78
  rack (>= 0.4)
78
79
  rack-ssl (1.3.2)
79
80
  rack
80
81
  rack-test (0.6.1)
81
82
  rack (>= 1.0)
82
- rails (3.2.0.rc2)
83
- actionmailer (= 3.2.0.rc2)
84
- actionpack (= 3.2.0.rc2)
85
- activerecord (= 3.2.0.rc2)
86
- activeresource (= 3.2.0.rc2)
87
- activesupport (= 3.2.0.rc2)
83
+ rails (3.2.1)
84
+ actionmailer (= 3.2.1)
85
+ actionpack (= 3.2.1)
86
+ activerecord (= 3.2.1)
87
+ activeresource (= 3.2.1)
88
+ activesupport (= 3.2.1)
88
89
  bundler (~> 1.0)
89
- railties (= 3.2.0.rc2)
90
- railties (3.2.0.rc2)
91
- actionpack (= 3.2.0.rc2)
92
- activesupport (= 3.2.0.rc2)
90
+ railties (= 3.2.1)
91
+ railties (3.2.1)
92
+ actionpack (= 3.2.1)
93
+ activesupport (= 3.2.1)
93
94
  rack-ssl (~> 1.3.2)
94
95
  rake (>= 0.8.7)
95
96
  rdoc (~> 3.4)
96
97
  thor (~> 0.14.6)
97
98
  rake (0.9.2.2)
98
- rcov (0.9.11)
99
+ rcov (1.0.0)
99
100
  rdoc (3.12)
100
101
  json (~> 1.4)
101
102
  rest-client (1.6.7)
102
103
  mime-types (>= 1.16)
104
+ simplecov (0.5.4)
105
+ multi_json (~> 1.0.3)
106
+ simplecov-html (~> 0.5.3)
107
+ simplecov-html (0.5.3)
103
108
  sprockets (2.1.2)
104
109
  hike (~> 1.2)
105
110
  rack (~> 1.0)
@@ -116,10 +121,11 @@ PLATFORMS
116
121
  ruby
117
122
 
118
123
  DEPENDENCIES
119
- bundler (~> 1.0.0)
124
+ bundler (>= 1.0.0)
120
125
  fbgraph_rails (>= 0.2.2)
121
- flexmock (~> 0.9.0)
122
- jeweler (~> 1.6.0)
123
- rails (>= 3.2.0.rc2)
126
+ flexmock (>= 0.9.0)
127
+ jeweler (>= 1.8.0)
128
+ rails (>= 3.2.0)
124
129
  rcov
130
+ simplecov
125
131
  sqlite3 (>= 1.3.5)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.7
1
+ 0.10.8
@@ -51,7 +51,7 @@ class Facebook < ::Credential
51
51
  # encrypted OAuth2 tokens don't have UIDs anymore, so this method is an
52
52
  # interim hack for old code that still depends on it.
53
53
  def self.uid_from_token(access_token)
54
- FBGraphRails.fbclient(access_token).selection.me.info!.id.to_s
54
+ FBGraphRails.fbclient(access_token).selection.me.info![:id].to_s
55
55
  end
56
56
 
57
57
  # Forms should not be able to touch any attribute.
@@ -1,5 +1,19 @@
1
1
  require 'securerandom'
2
2
 
3
+ # :nodoc: Backport urlsafe_base64 to 1.8.7.
4
+ unless SecureRandom.respond_to? :urlsafe_base64
5
+ SecureRandom.class_eval do
6
+ # :nodoc: lifted from 1.9.3 securerandom.rb, line 190
7
+ def self.urlsafe_base64(n=nil, padding=false)
8
+ s = [random_bytes(n)].pack("m*")
9
+ s.delete!("\n")
10
+ s.tr!("+/", "-_")
11
+ s.delete!("=") if !padding
12
+ s
13
+ end
14
+ end
15
+ end
16
+
3
17
  # :namespace
4
18
  module Credentials
5
19
 
@@ -88,10 +102,13 @@ class Token < ::Credential
88
102
  token.save!
89
103
  token
90
104
  end
91
-
92
- # Generates a random token code.
93
- def self.random_code
94
- SecureRandom.urlsafe_base64(32)
105
+
106
+ if SecureRandom.respond_to? :urlsafe_base64
107
+ # Generates a random token code.
108
+ def self.random_code
109
+ SecureRandom.urlsafe_base64(32)
110
+ end
111
+ else
95
112
  end
96
113
 
97
114
  # Use codes instead of exposing ActiveRecord IDs.
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "authpwn_rails"
8
- s.version = "0.10.7"
8
+ s.version = "0.10.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Victor Costan"]
12
- s.date = "2012-01-12"
12
+ s.date = "2012-02-07"
13
13
  s.description = "Works with Facebook."
14
14
  s.email = "victor@costan.us"
15
15
  s.extra_rdoc_files = [
@@ -110,28 +110,31 @@ Gem::Specification.new do |s|
110
110
 
111
111
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
112
112
  s.add_runtime_dependency(%q<fbgraph_rails>, [">= 0.2.2"])
113
- s.add_runtime_dependency(%q<rails>, [">= 3.2.0.rc2"])
114
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
115
- s.add_development_dependency(%q<flexmock>, ["~> 0.9.0"])
116
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
113
+ s.add_runtime_dependency(%q<rails>, [">= 3.2.0"])
114
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
115
+ s.add_development_dependency(%q<flexmock>, [">= 0.9.0"])
116
+ s.add_development_dependency(%q<jeweler>, [">= 1.8.0"])
117
117
  s.add_development_dependency(%q<rcov>, [">= 0"])
118
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
118
119
  s.add_development_dependency(%q<sqlite3>, [">= 1.3.5"])
119
120
  else
120
121
  s.add_dependency(%q<fbgraph_rails>, [">= 0.2.2"])
121
- s.add_dependency(%q<rails>, [">= 3.2.0.rc2"])
122
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
123
- s.add_dependency(%q<flexmock>, ["~> 0.9.0"])
124
- s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
122
+ s.add_dependency(%q<rails>, [">= 3.2.0"])
123
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
124
+ s.add_dependency(%q<flexmock>, [">= 0.9.0"])
125
+ s.add_dependency(%q<jeweler>, [">= 1.8.0"])
125
126
  s.add_dependency(%q<rcov>, [">= 0"])
127
+ s.add_dependency(%q<simplecov>, [">= 0"])
126
128
  s.add_dependency(%q<sqlite3>, [">= 1.3.5"])
127
129
  end
128
130
  else
129
131
  s.add_dependency(%q<fbgraph_rails>, [">= 0.2.2"])
130
- s.add_dependency(%q<rails>, [">= 3.2.0.rc2"])
131
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
132
- s.add_dependency(%q<flexmock>, ["~> 0.9.0"])
133
- s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
132
+ s.add_dependency(%q<rails>, [">= 3.2.0"])
133
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
134
+ s.add_dependency(%q<flexmock>, [">= 0.9.0"])
135
+ s.add_dependency(%q<jeweler>, [">= 1.8.0"])
134
136
  s.add_dependency(%q<rcov>, [">= 0"])
137
+ s.add_dependency(%q<simplecov>, [">= 0"])
135
138
  s.add_dependency(%q<sqlite3>, [">= 1.3.5"])
136
139
  end
137
140
  end
@@ -5,13 +5,15 @@
5
5
 
6
6
  <p>
7
7
  You are receiving this e-mail because someone (hopefully you) registered
8
- an account at <%= link_to @host, root_url(:host => @host) %>
8
+ an account at
9
+ <%= link_to @host, root_url(:host => @host, :protocol => @protocol) %>
9
10
  using your e-mail address.
10
11
  </p>
11
12
 
12
13
  <p>
13
14
  Please go
14
- <%= link_to 'here', token_session_url(@token, :host => @host) %>
15
+ <%= link_to 'here', token_session_url(@token, :host => @host,
16
+ :protocol => @protocol) %>
15
17
  to confirm your e-mail address.
16
18
  </p>
17
19
 
@@ -5,7 +5,7 @@ You are receiving this e-mail because someone (hopefully you) registered an
5
5
  account at <%= @host %> using your e-mail address.
6
6
 
7
7
  Please go to the address below to confirm your e-mail address.
8
- <%= link_to 'here', token_session_url(@token, :host => @host) %>
8
+ <%= token_session_url @token, :host => @host, :protocol => @protocol %>
9
9
 
10
10
  If you haven't registered an account, please ignore this e-mail. Someone most
11
11
  likely mistyped their e-mail.
@@ -5,13 +5,15 @@
5
5
 
6
6
  <p>
7
7
  You are receiving this e-mail because someone (hopefully you) requested a
8
- password reset for your <%= link_to @host, root_url(:host => @host) %>
8
+ password reset for your
9
+ <%= link_to @host, root_url(:host => @host, :protocol => @protocol) %>
9
10
  account.
10
11
  </p>
11
12
 
12
13
  <p>
13
14
  Please go
14
- <%= link_to 'here', token_session_url(@token, :host => @host) %>
15
+ <%= link_to 'here', token_session_url(@token, :host => @host,
16
+ :protocol => @protocol) %>
15
17
  to reset your password.
16
18
  </p>
17
19
 
@@ -5,7 +5,7 @@ You are receiving this e-mail because someone (hopefully you) requested a
5
5
  password reset for your <%= @host %> account.
6
6
 
7
7
  Please go to the address below to reset your password.
8
- <%= token_session_url(@token, :host => @host) %>
8
+ <%= token_session_url @token, :host => @host, :protocol => @protocol %>
9
9
 
10
10
  If you haven't requested a password reset, please ignore this e-mail. Someone
11
11
  most likely mistyped their e-mail.
@@ -1,22 +1,22 @@
1
1
  class SessionMailer < ActionMailer::Base
2
2
  include Authpwn::SessionMailer
3
3
 
4
- def email_verification_subject(token, server_hostname)
4
+ def email_verification_subject(token, server_hostname, protocol)
5
5
  # Consider replacing the hostname with a user-friendly application name.
6
6
  "#{server_hostname} e-mail verification"
7
7
  end
8
8
 
9
- def email_verification_from(token, server_hostname)
9
+ def email_verification_from(token, server_hostname, protocol)
10
10
  # You most likely need to replace the e-mail address below.
11
11
  %Q|"#{server_hostname} staff" <admin@#{server_hostname}>|
12
12
  end
13
13
 
14
- def reset_password_subject(token, server_hostname)
14
+ def reset_password_subject(token, server_hostname, protocol)
15
15
  # Consider replacing the hostname with a user-friendly application name.
16
16
  "#{server_hostname} password reset"
17
17
  end
18
18
 
19
- def reset_password_from(token, server_hostname)
19
+ def reset_password_from(token, server_hostname, protocol)
20
20
  # You most likely need to replace the e-mail address below.
21
21
  %Q|"#{server_hostname} staff" <admin@#{server_hostname}>|
22
22
  end
@@ -6,12 +6,12 @@ class SessionMailerTest < ActionMailer::TestCase
6
6
  @reset_token = credentials(:jane_password_token)
7
7
  @verification_token = credentials(:john_email_token)
8
8
  @verification_email = credentials(:john_email).email
9
- @host = 'test.host'
9
+ @root_url = 'hxxp://test.host/'
10
10
  end
11
11
 
12
12
  test 'email verification email' do
13
- email = SessionMailer.email_verification_email(@verification_token, @host).
14
- deliver
13
+ email = SessionMailer.email_verification_email(@verification_token,
14
+ @root_url).deliver
15
15
  assert !ActionMailer::Base.deliveries.empty?
16
16
 
17
17
  assert_equal 'test.host e-mail verification', email.subject
@@ -19,12 +19,12 @@ class SessionMailerTest < ActionMailer::TestCase
19
19
  assert_equal '"test.host staff" <admin@test.host>', email['from'].to_s
20
20
  assert_equal [@verification_email], email.to
21
21
  assert_match @verification_token.code, email.encoded
22
- assert_match @host, email.encoded
22
+ assert_match @root_url, email.encoded
23
23
  end
24
24
 
25
25
  test 'password reset email' do
26
26
  email = SessionMailer.reset_password_email(@reset_email, @reset_token,
27
- @host).deliver
27
+ @root_url).deliver
28
28
  assert !ActionMailer::Base.deliveries.empty?
29
29
 
30
30
  assert_equal 'test.host password reset', email.subject
@@ -32,6 +32,6 @@ class SessionMailerTest < ActionMailer::TestCase
32
32
  assert_equal '"test.host staff" <admin@test.host>', email['from'].to_s
33
33
  assert_equal [@reset_email], email.to
34
34
  assert_match @reset_token.code, email.encoded
35
- assert_match @host, email.encoded
35
+ assert_match @root_url, email.encoded
36
36
  end
37
37
  end
@@ -30,7 +30,7 @@ module ControllerInstanceMethods
30
30
  end
31
31
 
32
32
  def authenticate_using_session
33
- return true if current_user
33
+ return if current_user
34
34
  user_param = session[:user_exuid]
35
35
  user = user_param && User.find_by_param(user_param)
36
36
  self.current_user = user if user
@@ -11,7 +11,8 @@ module SessionController
11
11
  extend ActiveSupport::Concern
12
12
 
13
13
  included do
14
- authenticates_using_session
14
+ skip_filter :authenticate_using_session
15
+ authenticates_using_session :except => [:create, :reset_password, :token]
15
16
  end
16
17
 
17
18
  # GET /session/new
@@ -87,8 +88,7 @@ module SessionController
87
88
 
88
89
  if user = (credential && credential.user)
89
90
  token = Tokens::PasswordReset.random_for user
90
- ::SessionMailer.reset_password_email(@email, token,
91
- request.host_with_port).deliver
91
+ ::SessionMailer.reset_password_email(@email, token, root_url).deliver
92
92
  end
93
93
 
94
94
  respond_to do |format|
@@ -9,28 +9,29 @@ module SessionMailer
9
9
  #
10
10
  # Params:
11
11
  # token:: the e-mail confirmation token
12
- # host:: the server's hostname (e.g. "localhost:3000")
13
- def email_verification_email(token, host)
14
- @token, @host = token, host
15
-
16
- hostname = host.split(':', 2).first # Strip out any port.
12
+ # root_url:: the application's root URL (e.g. "https://localhost:3000/")
13
+ def email_verification_email(token, root_url)
14
+ @token = token
15
+ @protocol, @host = *root_url.split('://', 2)
16
+ @host.slice! -1 if @host[-1] == ?/
17
+ hostname = @host.split(':', 2).first # Strip out any port.
17
18
 
18
19
  mail :to => @token.email,
19
- :subject => email_verification_subject(token, hostname),
20
- :from => email_verification_from(token, hostname)
20
+ :subject => email_verification_subject(token, hostname, @protocol),
21
+ :from => email_verification_from(token, hostname, @protocol)
21
22
  end
22
23
 
23
24
  # The subject line in an e-mail verification e-mail.
24
25
  #
25
26
  # The authpwn generator encourages applications to override this method.
26
- def email_verification_subject(token, server_hostname)
27
+ def email_verification_subject(token, server_hostname, protocol)
27
28
  "#{server_hostname} e-mail verification"
28
29
  end
29
30
 
30
31
  # The sender e-mail address for an e-mail verification e-mail.
31
32
  #
32
33
  # The authpwn generator encourages applications to override this method.
33
- def email_verification_from(token, server_hostname)
34
+ def email_verification_from(token, server_hostname, protocol)
34
35
  %Q|"#{server_hostname} staff" <admin@#{server_hostname}>|
35
36
  end
36
37
 
@@ -39,26 +40,29 @@ module SessionMailer
39
40
  # Params:
40
41
  # email:: the email to send the token to
41
42
  # token:: the password reset token
42
- # host:: the server's hostname (e.g. "localhost:3000")
43
- def reset_password_email(email, token, host)
44
- @email, @token, @host = email, token, host
43
+ # root_url:: the application's root URL (e.g. "https://localhost:3000/")
44
+ def reset_password_email(email, token, root_url)
45
+ @email, @token, @host, @protocol = email, token
46
+ @token = token
47
+ @protocol, @host = *root_url.split('://', 2)
48
+ @host.slice! -1 if @host[-1] == ?/
45
49
 
46
- hostname = host.split(':', 2).first # Strip out any port.
47
- mail :to => email, :subject => reset_password_subject(token, hostname),
48
- :from => reset_password_from(token, hostname)
50
+ hostname = @host.split(':', 2).first # Strip out any port.
51
+ mail :to => email, :from => reset_password_from(token, hostname, @protocol),
52
+ :subject => reset_password_subject(token, hostname, @protocol)
49
53
  end
50
54
 
51
55
  # The subject line in a password reset e-mail.
52
56
  #
53
57
  # The authpwn generator encourages applications to override this method.
54
- def reset_password_subject(token, server_hostname)
58
+ def reset_password_subject(token, server_hostname, protocol)
55
59
  "#{server_hostname} password reset"
56
60
  end
57
61
 
58
62
  # The sender e-mail address for a password reset e-mail.
59
63
  #
60
64
  # The authpwn generator encourages applications to override this method.
61
- def reset_password_from(token, server_hostname)
65
+ def reset_password_from(token, server_hostname, protocol)
62
66
  %Q|"#{server_hostname} staff" <admin@#{server_hostname}>|
63
67
  end
64
68
  end # namespace Authpwn::SessionMailer
@@ -11,7 +11,7 @@ class SessionMailerApiTest < ActionMailer::TestCase
11
11
  @reset_token = credentials(:jane_password_token)
12
12
  @verification_token = credentials(:john_email_token)
13
13
  @verification_email = credentials(:john_email).email
14
- @host = 'test.host'
14
+ @root_url = 'hxxp://test.host:8808'
15
15
 
16
16
  # The generator template has the same return value for reset_password_from
17
17
  # and email_verification_from, so we need these stubs to ensure that the
@@ -44,24 +44,26 @@ class SessionMailerApiTest < ActionMailer::TestCase
44
44
  end
45
45
 
46
46
  test 'email verification email contents' do
47
- email = SessionMailer.email_verification_email(@verification_token, @host).
48
- deliver
47
+ email = SessionMailer.email_verification_email(@verification_token,
48
+ @root_url).deliver
49
49
  assert !ActionMailer::Base.deliveries.empty?
50
50
 
51
51
  assert_equal 'test.host e-mail verification', email.subject
52
52
  assert_equal ['email_check@test.host'], email.from
53
53
  assert_equal [@verification_email], email.to
54
54
  assert_match @verification_token.code, email.encoded
55
+ assert_match 'hxxp://test.host:8808/session/token/', email.encoded
55
56
  end
56
57
 
57
58
  test 'password reset email contents' do
58
59
  email = SessionMailer.reset_password_email(@reset_email, @reset_token,
59
- @host).deliver
60
+ @root_url).deliver
60
61
  assert !ActionMailer::Base.deliveries.empty?
61
62
 
62
63
  assert_equal 'test.host password reset', email.subject
63
64
  assert_equal ['reset@test.host'], email.from
64
65
  assert_equal [@reset_email], email.to
65
66
  assert_match @reset_token.code, email.encoded
67
+ assert_match 'hxxp://test.host:8808/session/token/', email.encoded
66
68
  end
67
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authpwn_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.7
4
+ version: 0.10.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-12 00:00:00.000000000Z
12
+ date: 2012-02-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fbgraph_rails
16
- requirement: &8615220 !ruby/object:Gem::Requirement
16
+ requirement: &23571660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,54 +21,65 @@ dependencies:
21
21
  version: 0.2.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *8615220
24
+ version_requirements: *23571660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &8613980 !ruby/object:Gem::Requirement
27
+ requirement: &23570400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 3.2.0.rc2
32
+ version: 3.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *8613980
35
+ version_requirements: *23570400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &8612260 !ruby/object:Gem::Requirement
38
+ requirement: &23569240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ~>
41
+ - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *8612260
46
+ version_requirements: *23569240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: flexmock
49
- requirement: &8611500 !ruby/object:Gem::Requirement
49
+ requirement: &23568460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ~>
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.9.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *8611500
57
+ version_requirements: *23568460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &8610440 !ruby/object:Gem::Requirement
60
+ requirement: &23585100 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
- version: 1.6.0
65
+ version: 1.8.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *8610440
68
+ version_requirements: *23585100
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &8609220 !ruby/object:Gem::Requirement
71
+ requirement: &23136560 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *23136560
80
+ - !ruby/object:Gem::Dependency
81
+ name: simplecov
82
+ requirement: &21228600 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *8609220
90
+ version_requirements: *21228600
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: sqlite3
82
- requirement: &8607720 !ruby/object:Gem::Requirement
93
+ requirement: &20774920 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,7 +98,7 @@ dependencies:
87
98
  version: 1.3.5
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *8607720
101
+ version_requirements: *20774920
91
102
  description: Works with Facebook.
92
103
  email: victor@costan.us
93
104
  executables: []
@@ -192,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
203
  version: '0'
193
204
  segments:
194
205
  - 0
195
- hash: 4068830889706153214
206
+ hash: 3364552790739807555
196
207
  required_rubygems_version: !ruby/object:Gem::Requirement
197
208
  none: false
198
209
  requirements: