diff options
author | jessib <jessib@riseup.net> | 2013-09-19 10:41:58 -0700 |
---|---|---|
committer | jessib <jessib@riseup.net> | 2013-09-19 10:41:58 -0700 |
commit | 16b8966a0df0104390ce95e35f1bb17f173f8d4d (patch) | |
tree | 58d277ef2dc9d3b8731501b91773cee04272bd26 | |
parent | 9e451421420abf520622e779443fb113ea3c4ce7 (diff) | |
parent | 165e417bc6ba66d51d74764db7b59279fb6a923f (diff) |
Merge pull request #82 from azul/feature/sessions-expire
Feature/sessions expire
-rw-r--r-- | config/initializers/session_store.rb | 5 | ||||
-rw-r--r-- | core/leap_web_core.gemspec | 2 | ||||
-rw-r--r-- | test/test_helper.rb | 1 | ||||
-rw-r--r-- | users/test/integration/browser/account_test.rb | 11 | ||||
-rw-r--r-- | users/test/integration/browser/session_test.rb | 28 | ||||
-rw-r--r-- | users/test/support/integration_test_helper.rb | 12 | ||||
-rw-r--r-- | users/test/support/time_test_helper.rb | 30 |
7 files changed, 75 insertions, 14 deletions
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index b454120..8b63e5b 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -1,8 +1,9 @@ # Be sure to restart your server when you modify this file. -LeapWeb::Application.config.session_store CouchRestSessionStore +LeapWeb::Application.config.session_store CouchRest::Session::Store, + expire_after: 1800 -CouchRestSessionStore.configure do |conf| +CouchRest::Session::Store.configure do |conf| conf.environment = Rails.env conf.connection_config_file = File.join(Rails.root, 'config', 'couchdb.yml') conf.connection[:prefix] = diff --git a/core/leap_web_core.gemspec b/core/leap_web_core.gemspec index a29db87..f391f00 100644 --- a/core/leap_web_core.gemspec +++ b/core/leap_web_core.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |s| s.add_dependency "couchrest", "~> 1.1.3" s.add_dependency "couchrest_model", "~> 2.0.0.beta2" - s.add_dependency "couchrest_session_store", "~> 0.1.3" + s.add_dependency "couchrest_session_store", "~> 0.2.0" s.add_dependency "json" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 26b99f4..b2f674d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -36,6 +36,7 @@ Capybara.default_wait_time = 5 class BrowserIntegrationTest < ActionDispatch::IntegrationTest # Make the Capybara DSL available include Capybara::DSL + include IntegrationTestHelper teardown do Capybara.reset_sessions! # Forget the (simulated) browser state diff --git a/users/test/integration/browser/account_test.rb b/users/test/integration/browser/account_test.rb index 06f2401..8c2c997 100644 --- a/users/test/integration/browser/account_test.rb +++ b/users/test/integration/browser/account_test.rb @@ -45,17 +45,6 @@ class AccountTest < BrowserIntegrationTest assert page.has_content?("server failed") end - def submit_signup - username = "test_#{SecureRandom.urlsafe_base64}".downcase - password = SecureRandom.base64 - visit '/users/new' - fill_in 'Username', with: username - fill_in 'Password', with: password - fill_in 'Password confirmation', with: password - click_on 'Sign Up' - return username, password - end - def inject_malicious_js page.execute_script <<-EOJS var calc = new srp.Calculate(); diff --git a/users/test/integration/browser/session_test.rb b/users/test/integration/browser/session_test.rb new file mode 100644 index 0000000..bb4e8c9 --- /dev/null +++ b/users/test/integration/browser/session_test.rb @@ -0,0 +1,28 @@ +require 'test_helper' + +class SessionTest < BrowserIntegrationTest + + setup do + Capybara.current_driver = Capybara.javascript_driver + @username, password = submit_signup + end + + teardown do + user = User.find_by_login(@username) + id = user.identity + id.destroy + user.destroy + end + + test "valid session" do + assert page.has_content?("Welcome #{@username}") + end + + test "expired session" do + assert page.has_content?("Welcome #{@username}") + pretend_now_is(Time.now + 40.minutes) do + visit '/' + assert page.has_no_content?("Welcome #{@username}") + end + end +end diff --git a/users/test/support/integration_test_helper.rb b/users/test/support/integration_test_helper.rb new file mode 100644 index 0000000..cfe72cf --- /dev/null +++ b/users/test/support/integration_test_helper.rb @@ -0,0 +1,12 @@ +module IntegrationTestHelper + def submit_signup + username = "test_#{SecureRandom.urlsafe_base64}".downcase + password = SecureRandom.base64 + visit '/users/new' + fill_in 'Username', with: username + fill_in 'Password', with: password + fill_in 'Password confirmation', with: password + click_on 'Sign Up' + return username, password + end +end diff --git a/users/test/support/time_test_helper.rb b/users/test/support/time_test_helper.rb new file mode 100644 index 0000000..f673f12 --- /dev/null +++ b/users/test/support/time_test_helper.rb @@ -0,0 +1,30 @@ +# Extend the Time class so that we can offset the time that 'now' +# returns. This should allow us to effectively time warp for functional +# tests that require limits per hour, what not. +class Time #:nodoc: + class <<self + attr_accessor :testing_offset + + def now_with_testing_offset + now_without_testing_offset - testing_offset + end + alias_method_chain :now, :testing_offset + end +end +Time.testing_offset = 0 + +module TimeTestHelper + # Time warp to the specified time for the duration of the passed block + def pretend_now_is(time) + begin + Time.testing_offset = Time.now - time + yield + ensure + Time.testing_offset = 0 + end + end +end + +class ActiveSupport::TestCase + include TimeTestHelper +end |