jump_in 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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -6
  3. data/lib/generators/jump_in/config_initializer.rb +13 -0
  4. data/lib/generators/jump_in/install_generator.rb +14 -0
  5. data/lib/generators/templates/jump_in_initializer.rb +25 -0
  6. data/lib/jump_in/authentication/cookies.rb +35 -0
  7. data/lib/jump_in/authentication/session.rb +32 -0
  8. data/lib/jump_in/authentication.rb +54 -55
  9. data/lib/jump_in/password_reset.rb +15 -15
  10. data/lib/jump_in/persistence.rb +2 -0
  11. data/lib/jump_in/strategies/base.rb +36 -0
  12. data/lib/jump_in/strategies/by_password.rb +13 -0
  13. data/lib/jump_in/strategies.rb +2 -0
  14. data/lib/jump_in/tokenator.rb +25 -0
  15. data/lib/jump_in/version.rb +1 -1
  16. data/lib/jump_in.rb +46 -2
  17. data/spec/dummy/app/models/user_with_secure_password.rb +3 -0
  18. data/spec/dummy/db/migrate/20150908085412_rename_users_to_user_with_secure_passwords.rb +5 -0
  19. data/spec/dummy/db/schema.rb +2 -2
  20. data/spec/dummy/db/test.sqlite3 +0 -0
  21. data/spec/dummy/log/test.log +5280 -0
  22. data/spec/dummy/spec/classes/configuration_spec.rb +34 -0
  23. data/spec/dummy/spec/factories.rb +1 -1
  24. data/spec/dummy/spec/modules/authentication_spec.rb +59 -52
  25. data/spec/dummy/spec/modules/password_reset_spec.rb +60 -77
  26. data/spec/dummy/spec/modules/strategies_spec.rb +71 -0
  27. data/spec/dummy/spec/modules/tokenator_spec.rb +46 -0
  28. data/spec/dummy/spec/rails_helper.rb +1 -0
  29. data/spec/dummy/spec/support/common_methods.rb +9 -9
  30. metadata +29 -42
  31. data/lib/jump_in/authentication/by_password.rb +0 -13
  32. data/lib/jump_in/authentication/strategy.rb +0 -16
  33. data/lib/jump_in/tokenizer.rb +0 -21
  34. data/spec/dummy/README.rdoc +0 -28
  35. data/spec/dummy/app/controllers/password_resets_controller.rb +0 -34
  36. data/spec/dummy/app/controllers/sessions_controller.rb +0 -16
  37. data/spec/dummy/app/controllers/users_controller.rb +0 -32
  38. data/spec/dummy/app/mailers/system_mailer.rb +0 -8
  39. data/spec/dummy/app/models/user.rb +0 -3
  40. data/spec/dummy/app/views/layouts/application.html.erb +0 -18
  41. data/spec/dummy/app/views/password_resets/edit.html.erb +0 -9
  42. data/spec/dummy/app/views/password_resets/new.html.erb +0 -7
  43. data/spec/dummy/app/views/sessions/new.html.erb +0 -7
  44. data/spec/dummy/app/views/system_mailer/password_reset.html.erb +0 -2
  45. data/spec/dummy/app/views/users/show.html.erb +0 -1
  46. data/spec/dummy/spec/controllers/password_resets_controller_spec.rb +0 -53
  47. data/spec/dummy/spec/controllers/sessions_controller_spec.rb +0 -36
  48. data/spec/dummy/spec/controllers/users_controller_spec.rb +0 -20
  49. data/spec/dummy/spec/integration/logging_spec.rb +0 -18
  50. data/spec/dummy/spec/integration/reset_password_spec.rb +0 -39
  51. data/spec/dummy/spec/modules/tokenizer_spec.rb +0 -19
  52. /data/{README.rdoc → spec/dummy/log/development.log} +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jump_in
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
  - KatarzynaT-B
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-28 00:00:00.000000000 Z
12
+ date: 2015-10-01 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: JumpIn provides a set of methods that make building login & logout functionality
15
15
  really simple, with only few steps.
@@ -21,30 +21,25 @@ extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
23
  - MIT-LICENSE
24
- - README.rdoc
25
24
  - Rakefile
25
+ - lib/generators/jump_in/config_initializer.rb
26
+ - lib/generators/jump_in/install_generator.rb
27
+ - lib/generators/templates/jump_in_initializer.rb
26
28
  - lib/jump_in.rb
27
29
  - lib/jump_in/authentication.rb
28
- - lib/jump_in/authentication/by_password.rb
29
- - lib/jump_in/authentication/strategy.rb
30
+ - lib/jump_in/authentication/cookies.rb
31
+ - lib/jump_in/authentication/session.rb
30
32
  - lib/jump_in/password_reset.rb
31
- - lib/jump_in/tokenizer.rb
33
+ - lib/jump_in/persistence.rb
34
+ - lib/jump_in/strategies.rb
35
+ - lib/jump_in/strategies/base.rb
36
+ - lib/jump_in/strategies/by_password.rb
37
+ - lib/jump_in/tokenator.rb
32
38
  - lib/jump_in/version.rb
33
39
  - lib/tasks/jump_in_tasks.rake
34
- - spec/dummy/README.rdoc
35
40
  - spec/dummy/Rakefile
36
41
  - spec/dummy/app/controllers/application_controller.rb
37
- - spec/dummy/app/controllers/password_resets_controller.rb
38
- - spec/dummy/app/controllers/sessions_controller.rb
39
- - spec/dummy/app/controllers/users_controller.rb
40
- - spec/dummy/app/mailers/system_mailer.rb
41
- - spec/dummy/app/models/user.rb
42
- - spec/dummy/app/views/layouts/application.html.erb
43
- - spec/dummy/app/views/password_resets/edit.html.erb
44
- - spec/dummy/app/views/password_resets/new.html.erb
45
- - spec/dummy/app/views/sessions/new.html.erb
46
- - spec/dummy/app/views/system_mailer/password_reset.html.erb
47
- - spec/dummy/app/views/users/show.html.erb
42
+ - spec/dummy/app/models/user_with_secure_password.rb
48
43
  - spec/dummy/bin/bundle
49
44
  - spec/dummy/bin/rails
50
45
  - spec/dummy/bin/rake
@@ -70,20 +65,21 @@ files:
70
65
  - spec/dummy/config/secrets.yml
71
66
  - spec/dummy/db/migrate/20150706144746_create_users.rb
72
67
  - spec/dummy/db/migrate/20150717123339_add_password_reset_token_to_users.rb
68
+ - spec/dummy/db/migrate/20150908085412_rename_users_to_user_with_secure_passwords.rb
73
69
  - spec/dummy/db/schema.rb
70
+ - spec/dummy/db/test.sqlite3
71
+ - spec/dummy/log/development.log
72
+ - spec/dummy/log/test.log
74
73
  - spec/dummy/public/404.html
75
74
  - spec/dummy/public/422.html
76
75
  - spec/dummy/public/500.html
77
76
  - spec/dummy/public/favicon.ico
78
- - spec/dummy/spec/controllers/password_resets_controller_spec.rb
79
- - spec/dummy/spec/controllers/sessions_controller_spec.rb
80
- - spec/dummy/spec/controllers/users_controller_spec.rb
77
+ - spec/dummy/spec/classes/configuration_spec.rb
81
78
  - spec/dummy/spec/factories.rb
82
- - spec/dummy/spec/integration/logging_spec.rb
83
- - spec/dummy/spec/integration/reset_password_spec.rb
84
79
  - spec/dummy/spec/modules/authentication_spec.rb
85
80
  - spec/dummy/spec/modules/password_reset_spec.rb
86
- - spec/dummy/spec/modules/tokenizer_spec.rb
81
+ - spec/dummy/spec/modules/strategies_spec.rb
82
+ - spec/dummy/spec/modules/tokenator_spec.rb
87
83
  - spec/dummy/spec/rails_helper.rb
88
84
  - spec/dummy/spec/spec_helper.rb
89
85
  - spec/dummy/spec/support/common_methods.rb
@@ -117,7 +113,9 @@ test_files:
117
113
  - spec/dummy/public/404.html
118
114
  - spec/dummy/public/422.html
119
115
  - spec/dummy/db/migrate/20150706144746_create_users.rb
116
+ - spec/dummy/db/migrate/20150908085412_rename_users_to_user_with_secure_passwords.rb
120
117
  - spec/dummy/db/migrate/20150717123339_add_password_reset_token_to_users.rb
118
+ - spec/dummy/db/test.sqlite3
121
119
  - spec/dummy/db/schema.rb
122
120
  - spec/dummy/config/routes.rb
123
121
  - spec/dummy/config/initializers/inflections.rb
@@ -137,34 +135,23 @@ test_files:
137
135
  - spec/dummy/config/environments/development.rb
138
136
  - spec/dummy/config/locales/en.yml
139
137
  - spec/dummy/config/secrets.yml
140
- - spec/dummy/app/views/users/show.html.erb
141
- - spec/dummy/app/views/password_resets/new.html.erb
142
- - spec/dummy/app/views/password_resets/edit.html.erb
143
- - spec/dummy/app/views/sessions/new.html.erb
144
- - spec/dummy/app/views/layouts/application.html.erb
145
- - spec/dummy/app/views/system_mailer/password_reset.html.erb
146
- - spec/dummy/app/mailers/system_mailer.rb
147
- - spec/dummy/app/controllers/users_controller.rb
148
- - spec/dummy/app/controllers/sessions_controller.rb
149
- - spec/dummy/app/controllers/password_resets_controller.rb
150
138
  - spec/dummy/app/controllers/application_controller.rb
151
- - spec/dummy/app/models/user.rb
139
+ - spec/dummy/app/models/user_with_secure_password.rb
140
+ - spec/dummy/log/development.log
141
+ - spec/dummy/log/test.log
152
142
  - spec/dummy/bin/rake
153
143
  - spec/dummy/bin/setup
154
144
  - spec/dummy/bin/rails
155
145
  - spec/dummy/bin/bundle
156
146
  - spec/dummy/config.ru
157
- - spec/dummy/README.rdoc
158
147
  - spec/dummy/spec/factories.rb
159
148
  - spec/dummy/spec/support/common_methods.rb
160
- - spec/dummy/spec/integration/reset_password_spec.rb
161
- - spec/dummy/spec/integration/logging_spec.rb
162
149
  - spec/dummy/spec/rails_helper.rb
163
- - spec/dummy/spec/controllers/password_resets_controller_spec.rb
164
- - spec/dummy/spec/controllers/sessions_controller_spec.rb
165
- - spec/dummy/spec/controllers/users_controller_spec.rb
150
+ - spec/dummy/spec/classes/configuration_spec.rb
166
151
  - spec/dummy/spec/spec_helper.rb
167
152
  - spec/dummy/spec/modules/password_reset_spec.rb
153
+ - spec/dummy/spec/modules/strategies_spec.rb
154
+ - spec/dummy/spec/modules/tokenator_spec.rb
168
155
  - spec/dummy/spec/modules/authentication_spec.rb
169
- - spec/dummy/spec/modules/tokenizer_spec.rb
170
156
  - spec/dummy/Rakefile
157
+ has_rdoc:
@@ -1,13 +0,0 @@
1
- module JumpIn
2
- module Authentication
3
- class ByPassword < Strategy
4
- def self.detected?(params)
5
- params.include? :password
6
- end
7
-
8
- def authenticate_user
9
- @user.authenticate(@params[:password]) ? true : false
10
- end
11
- end
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- module JumpIn
2
- module Authentication
3
-
4
- class Strategy
5
- def initialize(user:, params:)
6
- @user = user
7
- @params = params
8
- end
9
-
10
- def authenticate_user
11
- true
12
- end
13
- end
14
-
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- require 'base64'
2
-
3
- module JumpIn
4
- module Tokenizer
5
- DELIMITER = '.'.freeze
6
-
7
- def self.generate_token
8
- Base64.encode64 [SecureRandom.hex(12), Time.now.xmlschema].join(DELIMITER)
9
- end
10
-
11
- def self.decode_and_split_token(token)
12
- Base64.decode64(token).split(DELIMITER)
13
- end
14
-
15
- def self.decode_time(token)
16
- token_time = decode_and_split_token(token)[1]
17
- Time.parse(token_time)
18
- end
19
- end
20
- end
21
-
@@ -1,28 +0,0 @@
1
- == README
2
-
3
- This README would normally document whatever steps are necessary to get the
4
- application up and running.
5
-
6
- Things you may want to cover:
7
-
8
- * Ruby version
9
-
10
- * System dependencies
11
-
12
- * Configuration
13
-
14
- * Database creation
15
-
16
- * Database initialization
17
-
18
- * How to run the test suite
19
-
20
- * Services (job queues, cache servers, search engines, etc.)
21
-
22
- * Deployment instructions
23
-
24
- * ...
25
-
26
-
27
- Please feel free to use a different markup language if you do not plan to run
28
- <tt>rake doc:app</tt>.
@@ -1,34 +0,0 @@
1
- class PasswordResetsController < ApplicationController
2
-
3
- before_filter :authorize_by_token, :only => [:edit, :update]
4
-
5
- def create
6
- @user = User.find_by(email: params[:email].downcase)
7
- if set_password_reset_for(user: @user)
8
- SystemMailer.password_reset(@user).deliver
9
- redirect_to login_path
10
- else
11
- render :new
12
- end
13
- end
14
-
15
- def update
16
- user = User.where(password_reset_token: params[:token]).first
17
- if user && update_password_for(user: user,
18
- password: params[:password],
19
- password_confirmation: params[:password_confirmation],
20
- password_reset_token: params[:token])
21
- redirect_to login_path
22
- else
23
- render :edit
24
- end
25
- end
26
-
27
- private
28
- def authorize_by_token
29
- unless password_reset_valid?(password_reset_token: params[:token])
30
- flash[:error] = "Sorry, your password-reset-token is too old"
31
- redirect_to new_password_resets_path
32
- end
33
- end
34
- end
@@ -1,16 +0,0 @@
1
- class SessionsController < ApplicationController
2
-
3
- def create
4
- user = User.find_by(email: params[:session][:email].downcase)
5
- if login(user: user, password: params[:session][:password], permanent: true)
6
- redirect_to user_path(user)
7
- else
8
- render :new
9
- end
10
- end
11
-
12
- def destroy
13
- logout
14
- redirect_to login_path
15
- end
16
- end
@@ -1,32 +0,0 @@
1
- class UsersController < ApplicationController
2
- before_filter :authorize, only: :show
3
-
4
- def new
5
- @user = User.new
6
- end
7
-
8
- def create
9
- @user = User.new(user_params)
10
- if @user.save
11
- redirect_to login_path
12
- else
13
- render :new
14
- end
15
- end
16
-
17
- def show
18
- @user = User.find(params[:id])
19
- end
20
-
21
- private
22
-
23
- def user_params
24
- params.require(:user).permit(:name, :email, :password, :password_confirmation)
25
- end
26
-
27
- def authorize
28
- render nothing: true, status: 401 unless logged_in?
29
- end
30
-
31
- end
32
-
@@ -1,8 +0,0 @@
1
- class SystemMailer < ActionMailer::Base
2
- default from: "dummy@app.com"
3
-
4
- def password_reset(user)
5
- @user = user
6
- mail to: @user.email, subject: "Password reset"
7
- end
8
- end
@@ -1,3 +0,0 @@
1
- class User < ActiveRecord::Base
2
- has_secure_password
3
- end
@@ -1,18 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- </head>
5
- <body>
6
- <%= link_to "Log out", logout_path, method: :delete %>
7
-
8
- <% flash.each do |type, message| %>
9
- <div class="alert flash <%= type %>">
10
- <%= message %>
11
- </div>
12
- <% end %>
13
-
14
- <%= yield %>
15
- </body>
16
- </html>
17
-
18
-
@@ -1,9 +0,0 @@
1
- Edit for PasswordReset
2
-
3
- <%= form_tag password_resets_path, method: :patch do %>
4
- <%= password_field_tag :password %>
5
- <%= password_field_tag :password_confirmation %>
6
- <%= hidden_field_tag :token, params[:token] %>
7
- <%= submit_tag "Set new password" %>
8
- <% end %>
9
-
@@ -1,7 +0,0 @@
1
- Reset Password Page
2
-
3
- <%= form_tag password_resets_path, method: :post do %>
4
- <%= email_field_tag :email %>
5
- <%= submit_tag "Reset password" %>
6
- <% end %>
7
-
@@ -1,7 +0,0 @@
1
- Login Page
2
-
3
- <%= form_for (:session) do |f| %>
4
- <%= f.text_field :email %>
5
- <%= f.password_field :password %>
6
- <%= f.submit "Log in" %>
7
- <% end %>
@@ -1,2 +0,0 @@
1
- link to password reset:
2
- <%= edit_password_resets_path(token: @user.password_reset_token) %>
@@ -1 +0,0 @@
1
- Show view for user
@@ -1,53 +0,0 @@
1
- # require_relative '../spec_helper.rb'
2
-
3
- # describe PasswordResetsController do
4
- # let(:user) { FactoryGirl.create(:user) }
5
- # let(:params) { { email: user.email,
6
- # password: 'new_password',
7
- # password_confirmation:'new_password',
8
- # token: user.password_reset_token } }
9
-
10
- # context "POST create" do
11
- # it "sets password_reset_token, redirects" do
12
- # post :create, { email: user.email, use_route: :password_resets }
13
- # user.reload
14
- # expect(user.password_reset_token).to_not be_nil
15
- # expect(response).to redirect_to(login_path)
16
- # end
17
-
18
- # it "raises an error if user not found" do
19
- # expect {
20
- # post :create, { password_reset: { email: 'email' }, use_route: :password_resets }
21
- # }.to raise_error(NoMethodError)
22
- # end
23
- # end
24
-
25
- # context "PATCH update" do
26
- # before(:each) {
27
- # user.update_attributes(password_reset_token: JumpIn::Tokenizer.generate_token)
28
- # }
29
-
30
- # it "before_filter redirects for token too old" do
31
- # user.update_attribute(:password_reset_token, Base64.encode64("#{SecureRandom.hex(10)}.#{5.days.ago}"))
32
- # user.reload
33
- # patch :update, params.merge( { use_route: :password_resets} )
34
- # expect(response).to redirect_to(new_password_resets_path)
35
- # end
36
-
37
- # it "allows user to update password and redirects to login_path" do
38
- # old_password_digest = user.password_digest
39
- # patch :update, params.merge( { use_route: :password_resets} )
40
- # user.reload
41
- # expect(user.password_digest).to_not eq(old_password_digest)
42
- # expect(response).to redirect_to(login_path)
43
- # end
44
-
45
- # it "renders edit for password != password_confirmation" do
46
- # inv_params = params.dup
47
- # inv_params[:password_confirmation] = "another_password"
48
- # patch :update, inv_params.merge( { use_route: :password_resets} )
49
- # expect(response).to render_template(:edit)
50
- # end
51
- # end
52
-
53
- # end
@@ -1,36 +0,0 @@
1
- # require_relative '../spec_helper.rb'
2
-
3
- # describe SessionsController do
4
- # let!(:user) { FactoryGirl.create(:user) }
5
- # let(:valid_session) { { user_id: user.id} }
6
- # subject(:service) { described_class.new() }
7
-
8
- # context "POST create" do
9
- # it "sets cookies[:user_id] if valid user params given, redirects" do
10
- # post :create, { session: { email: user.email, password: user.password} }
11
- # expect(cookies.signed[:user_id]).to eq(user.id)
12
- # expect(response.status).to be(302)
13
- # end
14
-
15
- # it "calls login method" do
16
- # expect(controller).to receive(:login).exactly(1).times
17
- # post :create, { session: { email: user.email, password: user.password} }
18
- # end
19
-
20
- # it "doesn't set cookies[:user_id] if invalid user params given, renders new" do
21
- # post :create, { session: { email: user.email, password: "wrong_password"} }
22
- # expect(cookies.signed[:user_id]).to be_nil
23
- # expect(response).to render_template(:new)
24
- # end
25
- # end
26
-
27
- # context "DELETE destroy" do
28
- # it "sets cookies[:user_id] to nil" do
29
- # cookies.signed[:user_id] = user.id
30
- # expect([cookies.signed[:user_id]]).to eq([user.id])
31
- # delete :destroy
32
- # expect([cookies.signed[:user_id]]).to eq([nil])
33
- # end
34
- # end
35
-
36
- # end
@@ -1,20 +0,0 @@
1
- # require_relative '../spec_helper.rb'
2
-
3
- # describe UsersController do
4
- # let!(:user) { FactoryGirl.create(:user) }
5
- # let(:valid_session) { { user_id: user.id} }
6
-
7
- # context "GET show" do
8
- # it "renders nothing if user not logged in" do
9
- # get :show, use_route: :users
10
- # expect(response.status).to be(401)
11
- # expect(response.body).to be_blank
12
- # end
13
-
14
- # it "renders template show if user logged in" do
15
- # get :show, { id: user.id, use_route: :users }, valid_session
16
- # expect(response.status).to be(200)
17
- # end
18
- # end
19
-
20
- # end
@@ -1,18 +0,0 @@
1
- # require_relative '../spec_helper.rb'
2
-
3
- # describe "Logging in" do
4
- # let!(:user) { FactoryGirl.create(:user) }
5
-
6
- # it "allows user to log in and visit Users#show" do
7
- # visit 'login'
8
- # expect(page).to have_content("Login Page")
9
- # fill_in "session_email", with: user.email
10
- # fill_in "session_password", with: user.password
11
- # click_button "Log in"
12
- # expect(page).to have_content("Show view for user")
13
-
14
- # click_link "Log out"
15
- # expect(page).to have_content("Login Page")
16
- # end
17
-
18
- # end
@@ -1,39 +0,0 @@
1
- # require_relative '../spec_helper.rb'
2
-
3
- # describe "Resetting password" do
4
- # let!(:user) { FactoryGirl.create(:user) }
5
-
6
- # it 'allows user to send reset password link' do
7
- # visit new_password_resets_path
8
- # expect(page).to have_content('Reset Password Page')
9
- # fill_in 'email', with: user.email
10
- # click_button 'Reset password'
11
- # expect(page).to have_content('Login Page')
12
- # end
13
-
14
- # it 'redirects to login path after password update' do
15
- # user.update_attribute(:password_reset_token, JumpIn::Tokenizer.generate_token)
16
- # visit edit_password_resets_path(token: user.password_reset_token)
17
- # expect(page).to have_content("Edit for PasswordReset")
18
- # fill_in "password", with: 'new_password'
19
- # fill_in "password_confirmation", with: 'new_password'
20
- # click_button "Set new password"
21
- # expect(page).to have_content("Login Page")
22
- # end
23
-
24
- # it 'doest allow for password reset if token too old' do
25
- # user.update_attribute(:password_reset_token, Base64.encode64("#{SecureRandom.hex(10)}.#{5.days.ago}"))
26
- # visit edit_password_resets_path(token: user.password_reset_token)
27
- # expect(page).to have_content("password-reset-token is too old")
28
- # end
29
-
30
- # it 'displays edit page when password does not match password_confirmation' do
31
- # user.update_attribute(:password_reset_token, JumpIn::Tokenizer.generate_token)
32
- # visit edit_password_resets_path(token: user.password_reset_token)
33
- # expect(page).to have_content('Edit for PasswordReset')
34
- # fill_in 'password', with: 'new_password'
35
- # fill_in 'password_confirmation', with: 'another_password'
36
- # click_button 'Set new password'
37
- # expect(page).to have_content('Edit for PasswordReset')
38
- # end
39
- # end
@@ -1,19 +0,0 @@
1
- require_relative '../spec_helper'
2
-
3
- describe JumpIn::Tokenizer do
4
-
5
- context ".generate_token" do
6
- it 'generates token' do
7
- token = JumpIn::Tokenizer.generate_token
8
- expect(token).to_not eq(nil)
9
- end
10
- end
11
-
12
- context ".decode_time" do
13
- it "decodes time correctly" do
14
- time = Time.now.xmlschema
15
- token = Base64.encode64 [SecureRandom.hex(12), time].join(JumpIn::Tokenizer::DELIMITER)
16
- expect(JumpIn::Tokenizer.decode_time(token)).to eq(time)
17
- end
18
- end
19
- end
File without changes