multipass 1.2.3 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'yaml'
2
3
  require 'rake'
3
4
 
4
5
  begin
@@ -7,14 +8,14 @@ begin
7
8
  gem.name = "multipass"
8
9
  gem.summary = 'Bare bones implementation of encoding and decoding MultiPass values for SSO.'
9
10
  gem.email = "technoweenie@gmail.com"
10
- gem.homepage = "http://github.com/entp/multipass"
11
+ gem.homepage = "https://github.com/entp/multipass"
11
12
  gem.authors = ["rick"]
12
13
  gem.add_dependency 'ezcrypto'
13
14
 
14
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
16
  end
16
17
  rescue LoadError
17
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
+ puts "Jeweler not available. Install it with: gem install jeweler"
18
19
  end
19
20
 
20
21
  require 'rake/testtask'
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
- :minor: 2
4
- :patch: 3
3
+ :minor: 3
4
+ :patch: 2
5
5
  :build:
@@ -67,13 +67,13 @@ class MultiPass
67
67
  def decode(data)
68
68
  json = options = nil
69
69
  json = @crypto_key.decrypt(self.class.decode_64(data, @url_safe))
70
-
70
+
71
71
  if json.nil?
72
72
  raise MultiPass::DecryptError.new(data)
73
73
  end
74
74
 
75
75
  options = decode_json(data, json)
76
-
76
+
77
77
  if !options.is_a?(Hash)
78
78
  raise MultiPass::JSONError.new(data, json, options)
79
79
  end
@@ -82,7 +82,13 @@ class MultiPass
82
82
  options[key.to_sym] = unencode_javascript_unicode_escape(options.delete(key))
83
83
  end
84
84
 
85
- if options[:expires].nil? || Time.now.utc > Time.parse(options[:expires])
85
+ # Force everything coming out of json into a Time object if it isn't already
86
+ # with YAJL, it parses dates for us (ugh)
87
+ if options.has_key?(:expires) && options[:expires].is_a?(String) && !options[:expires].empty?
88
+ options[:expires] = Time.parse(options[:expires])
89
+ end
90
+
91
+ if options[:expires].nil? || (options[:expires] != '' && Time.now.utc > options[:expires])
86
92
  raise MultiPass::ExpiredError.new(data, json, options)
87
93
  end
88
94
 
@@ -150,4 +156,4 @@ class MultiPass
150
156
  raise MultiPass::JSONError.new(data, s)
151
157
  end
152
158
  end
153
- end
159
+ end
@@ -1,44 +1,38 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{multipass}
8
- s.version = "1.2.3"
7
+ s.name = "multipass"
8
+ s.version = "1.3.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["rick"]
12
- s.date = %q{2010-01-05}
13
- s.email = %q{technoweenie@gmail.com}
12
+ s.date = "2012-08-09"
13
+ s.email = "technoweenie@gmail.com"
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
16
- "README"
16
+ "README"
17
17
  ]
18
18
  s.files = [
19
- ".gitignore",
20
- "LICENSE",
21
- "README",
22
- "Rakefile",
23
- "VERSION.yml",
24
- "lib/multipass.rb",
25
- "multipass.gemspec",
26
- "test/multipass_test.rb"
27
- ]
28
- s.homepage = %q{http://github.com/entp/multipass}
29
- s.rdoc_options = ["--charset=UTF-8"]
30
- s.require_paths = ["lib"]
31
- s.rubygems_version = %q{1.3.5}
32
- s.summary = %q{Bare bones implementation of encoding and decoding MultiPass values for SSO.}
33
- s.test_files = [
19
+ "LICENSE",
20
+ "README",
21
+ "Rakefile",
22
+ "VERSION.yml",
23
+ "lib/multipass.rb",
24
+ "multipass.gemspec",
34
25
  "test/multipass_test.rb"
35
26
  ]
27
+ s.homepage = "https://github.com/entp/multipass"
28
+ s.require_paths = ["lib"]
29
+ s.rubygems_version = "1.8.23"
30
+ s.summary = "Bare bones implementation of encoding and decoding MultiPass values for SSO."
36
31
 
37
32
  if s.respond_to? :specification_version then
38
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
39
33
  s.specification_version = 3
40
34
 
41
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
35
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
36
  s.add_runtime_dependency(%q<ezcrypto>, [">= 0"])
43
37
  else
44
38
  s.add_dependency(%q<ezcrypto>, [">= 0"])
@@ -1,10 +1,21 @@
1
+ # encoding: UTF-8
2
+
1
3
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
4
  require 'rubygems'
3
5
  require 'test/unit'
4
6
  require 'multipass'
5
7
  #require 'active_support'
6
8
 
9
+ module MultiPassTestHelper
10
+ def assert_multipass(expected, actual)
11
+ assert_equal expected[:email], actual[:email]
12
+ assert_equal expected[:expires].to_s, actual[:expires].to_s
13
+ end
14
+ end
15
+
7
16
  module MultiPassTests
17
+ include MultiPassTestHelper
18
+
8
19
  def test_encodes_multipass
9
20
  expected = MultiPass.encode_64(@key.encrypt(@output.to_json), @mp.url_safe?)
10
21
  assert_equal expected, @mp.encode(@input)
@@ -12,12 +23,12 @@ module MultiPassTests
12
23
 
13
24
  def test_decodes_multipass
14
25
  encoded = @mp.encode(@input)
15
- assert_equal @input, @mp.decode(encoded)
26
+ assert_multipass @input, @mp.decode(encoded)
16
27
  end
17
28
 
18
29
  def test_decodes_multipass_with_class_method
19
30
  encoded = @mp.encode(@input)
20
- assert_equal @input, MultiPass.decode('example', 'abc', encoded)
31
+ assert_multipass @input, MultiPass.decode('example', 'abc', encoded)
21
32
  end
22
33
 
23
34
  def test_decodes_unicode
@@ -80,6 +91,8 @@ class UrlSafeMultiPassTest < Test::Unit::TestCase
80
91
  end
81
92
 
82
93
  class ErrorTest < Test::Unit::TestCase
94
+ include MultiPassTestHelper
95
+
83
96
  def setup
84
97
  @key = EzCrypto::Key.with_password('example', 'abc')
85
98
  @mp = MultiPass.new('example', 'abc')
@@ -133,12 +146,12 @@ class ErrorTest < Test::Unit::TestCase
133
146
 
134
147
  def test_expiration_error_stores_options
135
148
  begin
136
- opt = {:expires => (Time.now - 5).to_s, :email => 'ricky@bobby.com'}
149
+ opt = {:expires => Time.now - 5, :email => 'ricky@bobby.com'}
137
150
  json = opt.to_json
138
151
  data = @key.encrypt64(json)
139
152
  @mp.decode data
140
153
  rescue MultiPass::ExpiredError => e
141
- assert_equal opt, e.options
154
+ assert_multipass opt, e.options
142
155
  end
143
156
  end
144
- end
157
+ end
metadata CHANGED
@@ -1,38 +1,40 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: multipass
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.2
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - rick
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2010-01-05 00:00:00 -08:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: ezcrypto
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
17
22
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description:
26
31
  email: technoweenie@gmail.com
27
32
  executables: []
28
-
29
33
  extensions: []
30
-
31
- extra_rdoc_files:
34
+ extra_rdoc_files:
32
35
  - LICENSE
33
36
  - README
34
- files:
35
- - .gitignore
37
+ files:
36
38
  - LICENSE
37
39
  - README
38
40
  - Rakefile
@@ -40,33 +42,28 @@ files:
40
42
  - lib/multipass.rb
41
43
  - multipass.gemspec
42
44
  - test/multipass_test.rb
43
- has_rdoc: true
44
- homepage: http://github.com/entp/multipass
45
+ homepage: https://github.com/entp/multipass
45
46
  licenses: []
46
-
47
47
  post_install_message:
48
- rdoc_options:
49
- - --charset=UTF-8
50
- require_paths:
48
+ rdoc_options: []
49
+ require_paths:
51
50
  - lib
52
- required_ruby_version: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- version:
58
- required_rubygems_version: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
63
- version:
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
64
63
  requirements: []
65
-
66
64
  rubyforge_project:
67
- rubygems_version: 1.3.5
65
+ rubygems_version: 1.8.23
68
66
  signing_key:
69
67
  specification_version: 3
70
68
  summary: Bare bones implementation of encoding and decoding MultiPass values for SSO.
71
- test_files:
72
- - test/multipass_test.rb
69
+ test_files: []
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- .rake_tasks
2
- pkg