summaryrefslogtreecommitdiff
path: root/vendor/gems/couchrest_session_store/test
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/couchrest_session_store/test')
-rw-r--r--vendor/gems/couchrest_session_store/test/couch_tester.rb27
-rw-r--r--vendor/gems/couchrest_session_store/test/database_method_test.rb116
-rw-r--r--vendor/gems/couchrest_session_store/test/database_rotation_test.rb88
-rw-r--r--vendor/gems/couchrest_session_store/test/session_document_test.rb27
-rw-r--r--vendor/gems/couchrest_session_store/test/session_store_test.rb168
-rwxr-xr-xvendor/gems/couchrest_session_store/test/setup_couch.sh7
-rw-r--r--vendor/gems/couchrest_session_store/test/stress_test.rb51
-rw-r--r--vendor/gems/couchrest_session_store/test/test_clock.rb12
-rw-r--r--vendor/gems/couchrest_session_store/test/test_helper.rb9
9 files changed, 0 insertions, 505 deletions
diff --git a/vendor/gems/couchrest_session_store/test/couch_tester.rb b/vendor/gems/couchrest_session_store/test/couch_tester.rb
deleted file mode 100644
index b623044..0000000
--- a/vendor/gems/couchrest_session_store/test/couch_tester.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Access the couch directly so we can test its state without relying
-# on the SessionStore
-#
-
-class CouchTester < CouchRest::Document
- include CouchRest::Model::Configuration
- include CouchRest::Model::Connection
- include CouchRest::Model::Rotation
-
- rotate_database 'sessions',
- :every => 1.month, :expiration_field => :expires
-
- def initialize(options = {})
- end
-
- def get(sid)
- database.get(sid)
- end
-
- def update(sid, diff)
- doc = database.get(sid)
- doc.merge! diff
- database.save_doc(doc)
- end
-
-end
diff --git a/vendor/gems/couchrest_session_store/test/database_method_test.rb b/vendor/gems/couchrest_session_store/test/database_method_test.rb
deleted file mode 100644
index 18985c3..0000000
--- a/vendor/gems/couchrest_session_store/test/database_method_test.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-require_relative 'test_helper'
-
-class DatabaseMethodTest < MiniTest::Test
-
- class TestModel < CouchRest::Model::Base
- include CouchRest::Model::DatabaseMethod
-
- use_database_method :db_name
- property :dbname, String
- property :confirm, String
-
- def db_name
- "test_db_#{self[:dbname]}"
- end
- end
-
- def test_instance_method
- doc1 = TestModel.new({:dbname => 'one'})
- doc1.database.create!
- assert doc1.database.root.ends_with?('test_db_one')
- assert doc1.save
- doc1.update_attributes(:confirm => 'yep')
-
- doc2 = TestModel.new({:dbname => 'two'})
- doc2.database.create!
- assert doc2.database.root.ends_with?('test_db_two')
- assert doc2.save
- doc2.confirm = 'sure'
- doc2.save!
-
- doc1_copy = CouchRest.get([doc1.database.root, doc1.id].join('/'))
- assert_equal "yep", doc1_copy["confirm"]
-
- doc2_copy = CouchRest.get([doc2.database.root, doc2.id].join('/'))
- assert_equal "sure", doc2_copy["confirm"]
-
- doc1.database.delete!
- doc2.database.delete!
- end
-
- def test_switch_db
- doc_red = TestModel.new({:dbname => 'red', :confirm => 'rose'})
- doc_red.database.create!
- root = doc_red.database.root
-
- doc_blue = doc_red.clone
- doc_blue.dbname = 'blue'
- doc_blue.database!
- doc_blue.save!
-
- doc_blue_copy = CouchRest.get([root.sub('red','blue'), doc_blue.id].join('/'))
- assert_equal "rose", doc_blue_copy["confirm"]
-
- doc_red.database.delete!
- doc_blue.database.delete!
- end
-
- #
- # A test scenario for database_method in which some user accounts
- # are stored in a seperate temporary database (so that the test
- # accounts don't bloat the normal database).
- #
-
- class User < CouchRest::Model::Base
- include CouchRest::Model::DatabaseMethod
-
- use_database_method :db_name
- property :login, String
- before_save :create_db
-
- class << self
- def get(id, db = database)
- result = super(id, db)
- if result.nil?
- return super(id, choose_database('test-user'))
- else
- return result
- end
- end
- alias :find :get
- end
-
- protected
-
- def self.db_name(login = nil)
- if !login.nil? && login =~ /test-user/
- 'tmp_users'
- else
- 'users'
- end
- end
-
- def db_name
- self.class.db_name(self.login)
- end
-
- def create_db
- unless database_exists?(db_name)
- self.database!
- end
- end
-
- end
-
- def test_tmp_user_db
- user1 = User.new({:login => 'test-user-1'})
- assert user1.save
- assert User.find(user1.id), 'should find user in tmp_users'
- assert_equal user1.login, User.find(user1.id).login
- assert_equal 'test-user-1', User.server.database('couchrest_tmp_users').get(user1.id)['login']
- assert_raises CouchRest::NotFound do
- User.server.database('couchrest_users').get(user1.id)
- end
- end
-
-end
diff --git a/vendor/gems/couchrest_session_store/test/database_rotation_test.rb b/vendor/gems/couchrest_session_store/test/database_rotation_test.rb
deleted file mode 100644
index 856db11..0000000
--- a/vendor/gems/couchrest_session_store/test/database_rotation_test.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-require_relative 'test_helper'
-
-class RotationTest < MiniTest::Test
-
- class Token < CouchRest::Model::Base
- include CouchRest::Model::Rotation
- property :token, String
- rotate_database 'test_rotate', :every => 1.day
- end
-
- TEST_DB_RE = /test_rotate_\d+/
-
- def test_rotate
- delete_all_dbs
- doc = nil
- original_name = nil
- next_db_name = nil
-
- Time.stub :now, Time.gm(2015,3,7,0) do
- Token.create_database!
- doc = Token.create!(:token => 'aaaa')
- original_name = Token.rotated_database_name
- assert database_exists?(original_name)
- assert_equal 1, count_dbs
- end
-
- # do nothing yet
- Time.stub :now, Time.gm(2015,3,7,22) do
- Token.rotate_database_now(:window => 1.hour)
- assert_equal original_name, Token.rotated_database_name
- assert_equal 1, count_dbs
- end
-
- # create next db, but don't switch yet.
- Time.stub :now, Time.gm(2015,3,7,23) do
- Token.rotate_database_now(:window => 1.hour)
- assert_equal 2, count_dbs
- next_db_name = Token.rotated_database_name(Time.gm(2015,3,8))
- assert original_name != next_db_name
- assert database_exists?(next_db_name)
- sleep 0.2 # allow time for documents to replicate
- assert_equal(
- Token.get(doc.id).token,
- Token.get(doc.id, database(next_db_name)).token
- )
- end
-
- # use next db
- Time.stub :now, Time.gm(2015,3,8) do
- Token.rotate_database_now(:window => 1.hour)
- assert_equal 2, count_dbs
- assert_equal next_db_name, Token.rotated_database_name
- token = Token.get(doc.id)
- token.update_attributes(:token => 'bbbb')
- assert_equal 'bbbb', Token.get(doc.id).token
- assert_equal 'aaaa', Token.get(doc.id, database(original_name)).token
- end
-
- # delete prior db
- Time.stub :now, Time.gm(2015,3,8,1) do
- Token.rotate_database_now(:window => 1.hour)
- assert_equal 1, count_dbs
- end
- end
-
- private
-
- def database(db_name)
- Token.server.database(Token.db_name_with_prefix(db_name))
- end
-
- def database_exists?(dbname)
- Token.database_exists?(dbname)
- end
-
- def delete_all_dbs(regexp=TEST_DB_RE)
- Token.server.databases.each do |db|
- if regexp.match(db)
- Token.server.database(db).delete!
- end
- end
- end
-
- def count_dbs(regexp=TEST_DB_RE)
- Token.server.databases.grep(regexp).count
- end
-
-end
diff --git a/vendor/gems/couchrest_session_store/test/session_document_test.rb b/vendor/gems/couchrest_session_store/test/session_document_test.rb
deleted file mode 100644
index 43fbbca..0000000
--- a/vendor/gems/couchrest_session_store/test/session_document_test.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require_relative 'test_helper'
-
-class SessionDocumentTest < MiniTest::Test
-
- def test_storing_session
- sid = '1234'
- session = {'a' => 'b'}
- options = {}
- couchrest_session = CouchRest::Session.build_or_update(sid, session, options)
- couchrest_session.save
- couchrest_session.fetch(sid)
- assert_equal session, couchrest_session.to_session
- end
-
- def test_storing_session_with_conflict
- sid = '1234'
- session = {'a' => 'b'}
- options = {}
- cr_session = CouchRest::Session.build_or_update(sid, session, options)
- cr_session2 = CouchRest::Session.build_or_update(sid, session, options)
- cr_session.save
- cr_session2.save
- cr_session2.fetch(sid)
- assert_equal session, cr_session2.to_session
- end
-
-end
diff --git a/vendor/gems/couchrest_session_store/test/session_store_test.rb b/vendor/gems/couchrest_session_store/test/session_store_test.rb
deleted file mode 100644
index 5949ae6..0000000
--- a/vendor/gems/couchrest_session_store/test/session_store_test.rb
+++ /dev/null
@@ -1,168 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/test_helper')
-
-class SessionStoreTest < MiniTest::Test
-
- def test_session_initialization
- sid, session = store.send :get_session, env, nil
- assert sid
- assert_equal Hash.new, session
- end
-
- def test_normal_session_flow
- sid, session = never_expiring_session
- assert_equal [sid, session], store.send(:get_session, env, sid)
- store.send :destroy_session, env, sid, {}
- end
-
- def test_updating_session
- sid, session = never_expiring_session
- session[:bla] = "blub"
- store.send :set_session, env, sid, session, {}
- assert_equal [sid, session], store.send(:get_session, env, sid)
- store.send :destroy_session, env, sid, {}
- end
-
- def test_prevent_access_to_design_docs
- sid = '_design/bla'
- session = {views: 'my hacked view'}
- assert_raises CouchRest::NotFound do
- store_session(sid, session)
- end
- end
-
- def test_unmarshalled_session_flow
- sid, session = init_session
- store_session sid, session, :marshal_data => false
- new_sid, new_session = store.send(:get_session, env, sid)
- assert_equal sid, new_sid
- assert_equal session[:key], new_session["key"]
- store.send :destroy_session, env, sid, {}
- end
-
- def test_unmarshalled_data
- sid, session = init_session
- store_session sid, session, :marshal_data => false
- couch = CouchTester.new
- data = couch.get(sid)["data"]
- assert_equal session[:key], data["key"]
- end
-
- def test_logout_in_between
- sid, session = never_expiring_session
- store.send :destroy_session, env, sid, {}
- other_sid, other_session = store.send(:get_session, env, sid)
- assert_equal Hash.new, other_session
- end
-
- def test_can_logout_twice
- sid, session = never_expiring_session
- store.send :destroy_session, env, sid, {}
- store.send :destroy_session, env, sid, {}
- other_sid, other_session = store.send(:get_session, env, sid)
- assert_equal Hash.new, other_session
- end
-
- def test_stored_and_not_expired_yet
- sid, session = expiring_session
- couchrest_session = CouchRest::Session.fetch(sid)
- expires = couchrest_session.send :expires
- assert expires
- assert !couchrest_session.expired?
- assert (expires - Time.now) > 0, "Exiry should be in the future"
- assert (expires - Time.now) <= 300, "Should expire after 300 seconds - not more"
- assert_equal [sid, session], store.send(:get_session, env, sid)
- end
-
- def test_stored_but_expired
- sid, session = expired_session
- other_sid, other_session = store.send(:get_session, env, sid)
- assert_equal Hash.new, other_session, "session should have expired"
- assert other_sid != sid
- end
-
- def test_find_expired_sessions
- expired, expiring, never_expiring = seed_sessions
- expired_session_ids = store.expired.map {|row| row['id']}
- assert expired_session_ids.include?(expired)
- assert !expired_session_ids.include?(expiring)
- assert !expired_session_ids.include?(never_expiring)
- end
-
- def test_find_never_expiring_sessions
- expired, expiring, never_expiring = seed_sessions
- never_expiring_session_ids = store.never_expiring.map {|row| row['id']}
- assert never_expiring_session_ids.include?(never_expiring)
- assert !never_expiring_session_ids.include?(expiring)
- assert !never_expiring_session_ids.include?(expired)
- end
-
- def test_cleanup_expired_sessions
- sid, session = expired_session
- store.cleanup(store.expired)
- assert_raises CouchRest::NotFound do
- CouchTester.new.get(sid)
- end
- end
-
- def test_keep_fresh_during_cleanup
- sid, session = expiring_session
- store.cleanup(store.expired)
- assert_equal [sid, session], store.send(:get_session, env, sid)
- end
-
- def test_store_without_expiry
- sid, session = never_expiring_session
- couch = CouchTester.new
- assert_nil couch.get(sid)["expires"]
- assert_equal [sid, session], store.send(:get_session, env, sid)
- end
-
- def app
- nil
- end
-
- def store(options = {})
- @store ||= CouchRest::Session::Store.new(app, options)
- end
-
- def env(settings = {})
- env ||= settings
- end
-
- # returns the session ids of an expired, and expiring and a never
- # expiring session
- def seed_sessions
- [expired_session, expiring_session, never_expiring_session].map(&:first)
- end
-
- def never_expiring_session
- store_session *init_session
- end
-
- def expiring_session
- sid, session = init_session
- store_session(sid, session, expire_after: 300)
- end
-
- def expired_session
- expire_session *expiring_session
- end
-
- def init_session
- sid, session = store.send :get_session, env, nil
- session[:key] = "stub"
- return sid, session
- end
-
- def store_session(sid, session, options = {})
- store.send :set_session, env, sid, session, options
- return sid, session
- end
-
- def expire_session(sid, session)
- CouchTester.new.update sid,
- "expires" => (Time.now - 10.minutes).utc.iso8601
- return sid, session
- end
-
-end
diff --git a/vendor/gems/couchrest_session_store/test/setup_couch.sh b/vendor/gems/couchrest_session_store/test/setup_couch.sh
deleted file mode 100755
index 731534b..0000000
--- a/vendor/gems/couchrest_session_store/test/setup_couch.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-HOST="http://localhost:5984"
-echo "couch version :"
-curl -X GET $HOST
-
-curl -X PUT $HOST/couchrest_sessions
-curl -X PUT $HOST/couchrest_sessions/_design/Session --data @design/Session.json
-
diff --git a/vendor/gems/couchrest_session_store/test/stress_test.rb b/vendor/gems/couchrest_session_store/test/stress_test.rb
deleted file mode 100644
index b74b132..0000000
--- a/vendor/gems/couchrest_session_store/test/stress_test.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require_relative 'test_helper'
-
-#
-# This doesn't really test much, but is useful if you want to see what happens
-# when you have a lot of documents.
-#
-
-class StressTest < MiniTest::Test
-
- COUNT = 200 # change to 200,000 if you dare
-
- class Stress < CouchRest::Model::Base
- include CouchRest::Model::Rotation
- property :token, String
- property :expires_at, Time
- rotate_database 'stress_test', :every => 1.day, :expiration_field => :expires_at
- end
-
- def test_stress
- delete_all_dbs /^couchrest_stress_test_\d+$/
-
- Stress.database!
- COUNT.times do |i|
- doc = Stress.create!(:token => SecureRandom.hex(32), :expires_at => expires(i))
- end
-
- Time.stub :now, 1.day.from_now do
- Stress.rotate_database_now(:window => 1.hour)
- sleep 0.5
- assert_equal (COUNT/100)+1, Stress.database.info["doc_count"]
- end
- end
-
- private
-
- def delete_all_dbs(regexp=TEST_DB_RE)
- Stress.server.databases.each do |db|
- if regexp.match(db)
- Stress.server.database(db).delete!
- end
- end
- end
-
- def expires(i)
- if i % 100 == 0
- 1.hour.from_now.utc
- else
- 1.hour.ago.utc
- end
- end
-end
diff --git a/vendor/gems/couchrest_session_store/test/test_clock.rb b/vendor/gems/couchrest_session_store/test/test_clock.rb
deleted file mode 100644
index 4170763..0000000
--- a/vendor/gems/couchrest_session_store/test/test_clock.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class TestClock
- attr_accessor :now
-
- def initialize(tick = 60)
- @tick = tick
- @now = Time.now
- end
-
- def tick(seconds = nil)
- @now += seconds || @tick
- end
-end
diff --git a/vendor/gems/couchrest_session_store/test/test_helper.rb b/vendor/gems/couchrest_session_store/test/test_helper.rb
deleted file mode 100644
index 32f147d..0000000
--- a/vendor/gems/couchrest_session_store/test/test_helper.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require "rubygems"
-gem 'minitest'
-require 'minitest/autorun'
-require File.expand_path(File.dirname(__FILE__) + '/../lib/couchrest_session_store.rb')
-require File.expand_path(File.dirname(__FILE__) + '/couch_tester.rb')
-require File.expand_path(File.dirname(__FILE__) + '/test_clock.rb')
-
-# Create the session db if it does not already exist.
-CouchRest::Session::Document.create_database!