remember_me 0.0.1 → 0.0.2

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.
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