remember_me 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a42680f6177ae0ca5cc01c7811058949a2ed7095
4
- data.tar.gz: 250d11dc425905c81dcd9c108b68633620906631
3
+ metadata.gz: 0281542a6847121ad78ac9b72222fe351b608ecf
4
+ data.tar.gz: 5d342eb5920dc0d3e2312a9c0a05f6af5cd3bd63
5
5
  SHA512:
6
- metadata.gz: c942be2252b30de128c564e7d74a9dab48bad605be679ae9991fe41e6f1b2a9ed07d1d1506b70bcf88fab4841c2c2e4fd73766c285d9c555856f4b8f2eefbcfa
7
- data.tar.gz: 9bfb468798bf19a50f2744afaab404c1c35d49e7e68656606fcd38b442748279bb8a5dde3e873fb16f7d02193d8d49840f9fc6ea7413bef868018224f2d31062
6
+ metadata.gz: 0fe1be06ee62cc36eb323a1179dbed0f9df7f0d0cfb32df908aa1afe0be71515e775910ef8e580385c794a3a51e301816b28c53a3042347ed0d6665d69bdcf3b
7
+ data.tar.gz: 0fe524909f0400291e44708af7d6ee023a190aaf66a04a726afa2808db46682c3d6099a4914120bbd295f899930a5dcffdd0a72aaf50f13dfc70845e6385f05d
data/.rspec CHANGED
@@ -1,2 +1 @@
1
1
  --color
2
- --order random
data/README.md CHANGED
@@ -16,7 +16,7 @@ RememberMe
16
16
  RememberMe is a simple remember-me login solution on Rails.
17
17
  Manages generating and clearing a token for remembering the user from a saved cookie.
18
18
 
19
- ![RememberMe](http://www.movieposterdb.com/posters/10_04/2010/1403981/l_1403981_94a56aed.jpg)
19
+ ![remember me](http://blog-imgs-60.fc2.com/k/u/g/kugibera/remember-me-robert.jpg)
20
20
 
21
21
  Installation
22
22
  ------------
@@ -46,8 +46,17 @@ end
46
46
 
47
47
  models/user.rb:
48
48
 
49
+ ```ruby
50
+ class User < ActiveRecord::Base
51
+ include RememberMe::Model
52
+ end
53
+ ```
54
+
55
+ if mongoid
56
+
49
57
  ```ruby
50
58
  class User
59
+ include Mongoid::Document
51
60
  include RememberMe::Model
52
61
  end
53
62
  ```
@@ -1,3 +1,5 @@
1
+ require 'digest/sha1'
2
+
1
3
  module RememberMe
2
4
  module Model
3
5
  extend ::ActiveSupport::Concern
@@ -10,9 +12,8 @@ module RememberMe
10
12
  end
11
13
 
12
14
  def forget_me!
13
- return if self.remember_created_at.nil?
14
15
  self.remember_created_at = nil
15
- save(validate: false)
16
+ save(validate: false) if self.changed?
16
17
  end
17
18
 
18
19
  def remember_expired?
@@ -1,3 +1,3 @@
1
1
  module RememberMe
2
- VERSION = "0.0.1"
2
+ VERSION = '0.0.2'
3
3
  end
data/remember_me.gemspec CHANGED
@@ -21,8 +21,11 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler', '~> 1.3'
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'rspec-rails'
24
25
  spec.add_development_dependency 'simplecov'
25
26
  spec.add_development_dependency 'coveralls'
27
+ spec.add_development_dependency 'pry'
28
+ spec.add_development_dependency 'awesome_print'
26
29
 
27
30
  spec.add_dependency 'rails', '>= 3.2'
28
31
  spec.add_dependency 'mongoid', '>= 3'
@@ -0,0 +1,69 @@
1
+ require 'helper'
2
+
3
+ class ApplicationController < ActionController::Base
4
+ include RememberMe::Controller
5
+ include Rails.application.routes.url_helpers
6
+
7
+ def current_user
8
+ @current_user ||= session[:user_id] ? User.find(session[:user_id]) : remember('user')
9
+ end
10
+
11
+ def current_user=(user)
12
+ @current_user = user
13
+ session[:user_id] = user.present? ? user.id : nil
14
+ end
15
+
16
+ def authenticate_user!
17
+ redirect_to signin_path unless current_user
18
+ end
19
+
20
+ def user_signed_in?
21
+ !!current_user
22
+ end
23
+ end
24
+
25
+ class SessionsController < ApplicationController
26
+ def create
27
+ current_user = User.new
28
+ remember_me(current_user) if remember_me?
29
+ redirect_to '/'
30
+ end
31
+
32
+ def destroy
33
+ forget_me(current_user)
34
+ self.current_user = nil
35
+ redirect_to '/signin'
36
+ end
37
+ end
38
+
39
+ class HomesController < ApplicationController
40
+ before_filter :authenticate_user!
41
+
42
+ def index
43
+ render nothing: true
44
+ end
45
+ end
46
+
47
+ describe SessionsController do
48
+ let(:remember_me) { true }
49
+ let(:attrs) { { remember_me: remember_me } }
50
+
51
+ describe 'POST #create' do
52
+ before do
53
+ controller.stub_chain(:cookies, :signed, :[]=) { '' }
54
+ post :create, attrs
55
+ end
56
+
57
+ it { response.status.should eq 302 }
58
+ end
59
+
60
+ describe 'GET #destroy' do
61
+ before do
62
+ controller.stub(:current_user) { User.new }
63
+ controller.stub_chain(:cookies, :delete) { nil }
64
+ get :destroy
65
+ end
66
+
67
+ it { response.status.should eq 302 }
68
+ end
69
+ end
data/spec/helper.rb CHANGED
@@ -9,9 +9,33 @@ if ENV["CI"]
9
9
  SimpleCov.start
10
10
  end
11
11
 
12
+ require 'rails'
13
+ require 'action_controller'
12
14
  require 'active_support/concern'
13
15
  require 'active_record'
14
16
  require 'mongoid'
15
17
  require 'remember_me'
16
18
  require 'rspec'
19
+ require 'rspec/rails'
17
20
 
21
+ RSpec.configure do |config|
22
+ config.mock_with :rspec
23
+ end
24
+
25
+ module Example
26
+ class Application < Rails::Application
27
+ end
28
+ end
29
+
30
+ Example::Application.routes.draw do
31
+ post 'signin', to: 'sessions#create'
32
+ get 'signout', to: 'sessions#destroy'
33
+ end
34
+
35
+ class User
36
+ include Mongoid::Document
37
+ include RememberMe::Model
38
+ def save(arg = {})
39
+ true
40
+ end
41
+ end
@@ -0,0 +1,103 @@
1
+ require 'helper'
2
+
3
+ describe RememberMe::Model do
4
+ before { @model = User.new }
5
+
6
+ it { expect(@model.fields.has_key? 'remember_created_at').to be_true }
7
+ it { expect(@model.fields['remember_created_at'].options[:type]).to eq Time }
8
+
9
+ it { expect(@model.respond_to? :remember_me!).to be_true }
10
+ it { expect(@model.respond_to? :forget_me!).to be_true }
11
+ it { expect(@model.respond_to? :remember_expired?).to be_true }
12
+ it { expect(@model.respond_to? :remember_expires_at).to be_true }
13
+ it { expect(@model.respond_to? :rememberable_options).to be_true }
14
+ it { expect(@model.respond_to? :rememberable_value).to be_true }
15
+
16
+ describe '#remember_me!' do
17
+ before { @model.remember_me! }
18
+ it { expect(@model.remember_created_at.class).to eq Time }
19
+ end
20
+
21
+ describe '#forget_me!' do
22
+ before do
23
+ @model.remember_created_at = Time.now.utc
24
+ @model.forget_me!
25
+ end
26
+ it { expect(@model.remember_created_at).to be_nil }
27
+ end
28
+
29
+ describe '#remember_expired?' do
30
+ before { @model.remember_created_at = remember_created_at }
31
+ subject { @model.remember_expired? }
32
+
33
+ context 'when remembered' do
34
+ context 'if expired' do
35
+ let(:remember_created_at) { Time.now - 2.weeks }
36
+ it { should be_true }
37
+ end
38
+
39
+ context 'if not expired' do
40
+ let(:remember_created_at) { Time.now - 2.weeks + 1 }
41
+ it { should be_false }
42
+ end
43
+ end
44
+
45
+ context 'when not remembered' do
46
+ let(:remember_created_at) { nil }
47
+ it { should be_true }
48
+ end
49
+ end
50
+
51
+ describe '#remember_expires_at' do
52
+ before { @model.remember_created_at = remember_created_at }
53
+
54
+ context 'when remembered' do
55
+ let(:remember_created_at) { Time.now - 2.weeks }
56
+ it { expect(@model.remember_expires_at).to eq (remember_created_at + 2.weeks) }
57
+ end
58
+
59
+ context 'when not remembered' do
60
+ let(:remember_created_at) { nil }
61
+ it { expect { @model.remember_expires_at }.to raise_error }
62
+ end
63
+ end
64
+
65
+ describe '#rememberable_options' do
66
+ let(:options) { User.rememberable_options }
67
+ it { expect(@model.rememberable_options).to eq options }
68
+ end
69
+
70
+ describe '#rememberable_value' do
71
+ let(:hash) { Digest::SHA1.hexdigest "#{@model.id}" }
72
+ it { expect(@model.rememberable_value).to eq hash }
73
+ end
74
+
75
+ describe '.serialize_into_cookie' do
76
+ subject { User.serialize_into_cookie @model }
77
+ it { expect(subject).to be_instance_of Array }
78
+ it { expect(subject[0]).to eq @model.id }
79
+ it { expect(subject[1]).to eq @model.rememberable_value }
80
+ end
81
+
82
+ describe '.serialize_from_cookie' do
83
+ let(:id) { @model.id.to_s }
84
+ let(:remember_token) { @model.rememberable_value }
85
+ let(:expired) { false }
86
+ before do
87
+ User.stub_chain(:where, :first).and_return(@model)
88
+ @model.stub(:remember_expired?).and_return(expired)
89
+ end
90
+ subject { User.serialize_from_cookie(id, remember_token) }
91
+ it { expect(subject).to eq @model }
92
+ end
93
+
94
+ describe '.rememberable_options' do
95
+ let(:options) { {} }
96
+ it { expect(User.rememberable_options).to eq options }
97
+ end
98
+
99
+ describe '.remember_for' do
100
+ subject { User.remember_for }
101
+ it { should eq 2.weeks }
102
+ end
103
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remember_me
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - linyows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-28 00:00:00.000000000 Z
11
+ date: 2013-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,34 @@ dependencies:
80
94
  - - '>='
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: awesome_print
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: rails
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -128,8 +170,9 @@ files:
128
170
  - lib/remember_me/model.rb
129
171
  - lib/remember_me/version.rb
130
172
  - remember_me.gemspec
173
+ - spec/controllers/controller_spec.rb
131
174
  - spec/helper.rb
132
- - spec/model_spec.rb
175
+ - spec/models/model_spec.rb
133
176
  homepage: https://github.com/linyows/remember_me
134
177
  licenses:
135
178
  - MIT
@@ -155,5 +198,6 @@ signing_key:
155
198
  specification_version: 4
156
199
  summary: RememberMe is a simple remember-me login solution on Rails.
157
200
  test_files:
201
+ - spec/controllers/controller_spec.rb
158
202
  - spec/helper.rb
159
- - spec/model_spec.rb
203
+ - spec/models/model_spec.rb
data/spec/model_spec.rb DELETED
@@ -1,27 +0,0 @@
1
- require 'helper'
2
-
3
- describe RememberMe::Model do
4
- before :all do
5
- class User
6
- include Mongoid::Document
7
- include RememberMe::Model
8
- def save(arg = {})
9
- true
10
- end
11
- end
12
- @model = User.new
13
- end
14
-
15
- it { expect(@model.fields.has_key? 'remember_created_at').to be_true }
16
- it { expect(@model.fields['remember_created_at'].options[:type]).to eq Time }
17
- it { expect(@model.respond_to? :remember_me!).to be_true }
18
-
19
- describe '#remember_me!' do
20
- before { @model.remember_me! }
21
- it { expect(@model.remember_created_at.class).to eq Time }
22
- end
23
-
24
- describe '#forget_me!' do
25
- it { expect(@model.respond_to? :forget_me!).to be_true }
26
- end
27
- end