test/multipass_test.rb in multipass-1.1.4 vs test/multipass_test.rb in multipass-1.2.1

- old
+ new

@@ -1,30 +1,17 @@ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') require 'rubygems' require 'test/unit' -require 'ezcrypto' require 'multipass' +#require 'active_support' -class MultiPassTest < Test::Unit::TestCase - def setup - @date = Time.now + 1234 - @input = {:expires => @date, :email => 'ricky@bobby.com'} - @output = @input.merge(:expires => @input[:expires].to_s) - @key = EzCrypto::Key.with_password('example', 'abc') - @mp = MultiPass.new('example', 'abc') - end - +module MultiPassTests def test_encodes_multipass - expected = @key.encrypt64(@output.to_json) + expected = MultiPass.encode_64(@key.encrypt(@output.to_json), @mp.url_safe?) assert_equal expected, @mp.encode(@input) end - def test_encodes_multipass_with_class_method - expected = @key.encrypt64(@output.to_json) - assert_equal expected, MultiPass.encode('example', 'abc', @input) - end - def test_decodes_multipass encoded = @mp.encode(@input) assert_equal @input, @mp.decode(encoded) end @@ -50,8 +37,101 @@ def test_invalidates_old_expiration encrypted = @key.encrypt64(@input.merge(:expires => (Time.now - 1)).to_json) assert_raises MultiPass::ExpiredError do @mp.decode(encrypted) + end + end +end + +class StandardMultiPassTest < Test::Unit::TestCase + include MultiPassTests + + def setup + @date = Time.now + 1234 + @input = {:expires => @date, :email => 'ricky@bobby.com'} + @output = @input.merge(:expires => @input[:expires].to_s) + @key = EzCrypto::Key.with_password('example', 'abc') + @mp = MultiPass.new('example', 'abc', :url_safe => false) + end +end + +class UrlSafeMultiPassTest < Test::Unit::TestCase + include MultiPassTests + + def test_encodes_multipass_with_class_method + expected = MultiPass.encode_64(@key.encrypt(@output.to_json), @mp.url_safe?) + assert_equal expected, MultiPass.encode('example', 'abc', @input) + end + + def setup + @date = Time.now + 1234 + @input = {:expires => @date, :email => 'ricky@bobby.com'} + @output = @input.merge(:expires => @input[:expires].to_s) + @key = EzCrypto::Key.with_password('example', 'abc') + @mp = MultiPass.new('example', 'abc', :url_safe => true) + end +end + +class ErrorTest < Test::Unit::TestCase + def setup + @key = EzCrypto::Key.with_password('example', 'abc') + @mp = MultiPass.new('example', 'abc') + end + + def test_decrypt_error_stores_data + begin + @mp.decode 'abc' + rescue MultiPass::DecryptError => e + assert_equal 'abc', e.data + end + end + + def test_json_error_stores_data + begin + data = @key.encrypt64("abc") + @mp.decode data + rescue MultiPass::JSONError => e + assert_equal data, e.data + end + end + + def test_json_error_stores_json + begin + data = @key.encrypt64("{a") + @mp.decode data + rescue MultiPass::JSONError => e + assert_equal "{a", e.json + end + end + + def test_expiration_error_stores_data + begin + json = {:expires => Time.now - 5, :email => 'ricky@bobby.com'}.to_json + data = @key.encrypt64(json) + @mp.decode data + rescue MultiPass::ExpiredError => e + assert_equal data, e.data + end + end + + def test_expiration_error_stores_json + begin + json = {:expires => Time.now - 5, :email => 'ricky@bobby.com'}.to_json + data = @key.encrypt64(json) + @mp.decode data + rescue MultiPass::ExpiredError => e + assert_equal json, e.json + end + end + + def test_expiration_error_stores_options + begin + opt = {:expires => (Time.now - 5).to_s, :email => 'ricky@bobby.com'} + json = opt.to_json + data = @key.encrypt64(json) + @mp.decode data + rescue MultiPass::ExpiredError => e + assert_equal opt, e.options end end end \ No newline at end of file