multipass 1.2.3 → 1.3.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.
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