twitter-auth 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,12 +5,17 @@ describe TwitterAuth::GenericUser do
5
5
  should_validate_format_of :login, 'some_guy', 'awesome', 'cool_man'
6
6
  should_not_validate_format_of :login, 'with-dashes', 'with.periods', 'with spaces'
7
7
  should_validate_length_of :login, :in => 1..15
8
-
8
+
9
9
  it 'should validate uniqueness of login' do
10
10
  Factory.create(:twitter_oauth_user)
11
11
  Factory.build(:twitter_oauth_user).should have_at_least(1).errors_on(:login)
12
12
  end
13
13
 
14
+ it 'should validate uniqueness of remember_token' do
15
+ Factory.create(:twitter_oauth_user, :remember_token => 'abc')
16
+ Factory.build(:twitter_oauth_user, :remember_token => 'abc').should have_at_least(1).errors_on(:remember_token)
17
+ end
18
+
14
19
  it 'should allow capital letters in the username' do
15
20
  Factory.build(:twitter_oauth_user, :login => 'TwitterMan').should have(:no).errors_on(:login)
16
21
  end
@@ -54,4 +59,84 @@ describe TwitterAuth::GenericUser do
54
59
  lambda{user.update_twitter_attributes({'name' => 'Twitter Man', 'description' => 'Works.', 'whoopsy' => 'noworks.'})}.should_not raise_error
55
60
  end
56
61
  end
62
+
63
+ describe '#remember_me' do
64
+ before do
65
+ @user = Factory(:twitter_oauth_user)
66
+ end
67
+
68
+ it 'should check for the remember_token column' do
69
+ @user.should_receive(:respond_to?).with(:remember_token).and_return(false)
70
+ @user.remember_me
71
+ end
72
+
73
+ it 'should return nil if there is no remember_token column' do
74
+ @user.should_receive(:respond_to?).with(:remember_token).and_return(false)
75
+ @user.remember_me.should be_false
76
+ end
77
+
78
+ describe ' with proper columns' do
79
+ it 'should generate a secure random token' do
80
+ ActiveSupport::SecureRandom.should_receive(:hex).with(10).and_return('abcdef')
81
+ @user.remember_me
82
+ @user.remember_token.should == 'abcdef'
83
+ end
84
+
85
+ it 'should set the expiration to the current time plus the remember_for period' do
86
+ TwitterAuth.stub!(:remember_for).and_return(10)
87
+ time = Time.now
88
+ Time.stub!(:now).and_return(time)
89
+
90
+ @user.remember_me
91
+
92
+ @user.remember_token_expires_at.should == Time.now + 10.days
93
+ end
94
+
95
+ it 'should return a hash with a :value and :expires key' do
96
+ result = @user.remember_me
97
+ result.should be_a(Hash)
98
+ result.key?(:value).should be_true
99
+ result.key?(:expires).should be_true
100
+ end
101
+
102
+ it 'should return a hash with appropriate values' do
103
+ TwitterAuth.stub!(:remember_for).and_return(10)
104
+ time = Time.now
105
+ Time.stub!(:now).and_return(time)
106
+ ActiveSupport::SecureRandom.stub!(:hex).and_return('abcdef')
107
+
108
+ @user.remember_me.should == {:value => 'abcdef', :expires => (Time.now + 10.days)}
109
+ end
110
+ end
111
+ end
112
+
113
+ describe '#forget_me' do
114
+ it 'should reset remember_token and remember_token_expires_at' do
115
+ @user = Factory(:twitter_oauth_user, :remember_token => "abcdef", :remember_token_expires_at => Time.now + 10.days)
116
+ @user.forget_me
117
+ @user.reload
118
+ @user.remember_token.should be_nil
119
+ @user.remember_token_expires_at.should be_nil
120
+ end
121
+ end
122
+
123
+ describe '.from_remember_token' do
124
+ before do
125
+ @user = Factory(:twitter_oauth_user, :remember_token => 'abcdef', :remember_token_expires_at => (Time.now + 10.days))
126
+ end
127
+
128
+ it 'should find the user with the specified remember_token' do
129
+ User.from_remember_token('abcdef').should == @user
130
+ end
131
+
132
+ it 'should not find a user with an expired token' do
133
+ user2 = Factory(:twitter_oauth_user, :login => 'walker', :remember_token => 'ghijkl', :remember_token_expires_at => (Time.now - 10.days))
134
+ User.from_remember_token('ghijkl').should be_nil
135
+ end
136
+
137
+ it 'should not find a user with a nil token and an expiration' do
138
+ user = Factory(:twitter_oauth_user, :login => 'stranger', :remember_token => nil, :remember_token_expires_at => (Time.now + 10.days))
139
+ User.from_remember_token(nil).should be_nil
140
+ end
141
+ end
57
142
  end
data/spec/schema.rb CHANGED
@@ -10,6 +10,10 @@ ActiveRecord::Schema.define :version => 0 do
10
10
  t.binary :crypted_password
11
11
  t.string :salt
12
12
 
13
+ # Remember token fields
14
+ t.string :remember_token
15
+ t.datetime :remember_token_expires_at
16
+
13
17
  # This information is automatically kept
14
18
  # in-sync at each login of the user. You
15
19
  # may remove any/all of these columns.
@@ -13,7 +13,7 @@ describe TwitterAuth do
13
13
  end
14
14
  end
15
15
 
16
- describe '#api_timeout' do
16
+ describe '.api_timeout' do
17
17
  it 'should default to 10' do
18
18
  TwitterAuth.stub!(:config).and_return({})
19
19
  TwitterAuth.api_timeout.should == 10
@@ -25,6 +25,18 @@ describe TwitterAuth do
25
25
  end
26
26
  end
27
27
 
28
+ describe '.remember_for' do
29
+ it 'should default to 14' do
30
+ TwitterAuth.stub!(:config).and_return({})
31
+ TwitterAuth.remember_for.should == 14
32
+ end
33
+
34
+ it 'should be settable via config' do
35
+ TwitterAuth.stub!(:config).and_return({'remember_for' => '7'})
36
+ TwitterAuth.remember_for.should == 7
37
+ end
38
+ end
39
+
28
40
  describe '.net' do
29
41
  before do
30
42
  stub_basic!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh