opentoken 1.2.2 → 1.2.3
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/.rvmrc +1 -1
- data/Rakefile +1 -1
- data/lib/opentoken/token.rb +4 -2
- data/lib/opentoken/version.rb +1 -1
- data/test/test_opentoken.rb +33 -3
- metadata +43 -18
data/.rvmrc
CHANGED
data/Rakefile
CHANGED
data/lib/opentoken/token.rb
CHANGED
@@ -3,6 +3,8 @@ require 'active_support/hash_with_indifferent_access'
|
|
3
3
|
require 'active_support/core_ext/time/calculations'
|
4
4
|
|
5
5
|
module OpenToken
|
6
|
+
CLOCK_SKEW_TOLERANCE = 5 # in seconds
|
7
|
+
|
6
8
|
class TokenExpiredError < StandardError; end
|
7
9
|
|
8
10
|
class Token < ActiveSupport::HashWithIndifferentAccess
|
@@ -11,7 +13,7 @@ module OpenToken
|
|
11
13
|
end
|
12
14
|
#verify that the current time is between the not-before and not-on-or-after values
|
13
15
|
def valid?
|
14
|
-
start_at.past? && end_at.future?
|
16
|
+
(start_at - CLOCK_SKEW_TOLERANCE).past? && (end_at + CLOCK_SKEW_TOLERANCE).future?
|
15
17
|
end
|
16
18
|
def expired?
|
17
19
|
!valid?
|
@@ -31,4 +33,4 @@ module OpenToken
|
|
31
33
|
Time.iso8601(self[key])
|
32
34
|
end
|
33
35
|
end
|
34
|
-
end
|
36
|
+
end
|
data/lib/opentoken/version.rb
CHANGED
data/test/test_opentoken.rb
CHANGED
@@ -31,9 +31,9 @@ class TestOpentoken < Test::Unit::TestCase
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
context "decoding token when current time is before expiration date" do
|
34
|
+
context "decoding token when current time is outside clock skew tolerance of before expiration date" do
|
35
35
|
should "raise TokenExpiredError" do
|
36
|
-
Timecop.travel(Time.iso8601('2010-03-04T19:19:
|
36
|
+
Timecop.travel(Time.iso8601('2010-03-04T19:19:05Z')) do
|
37
37
|
assert_raises OpenToken::TokenExpiredError do
|
38
38
|
@token = OpenToken.decode @opentoken
|
39
39
|
end
|
@@ -41,9 +41,39 @@ class TestOpentoken < Test::Unit::TestCase
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
context "decoding token when current time is within clock skew tolerance of before expiration date" do
|
45
|
+
should "not raise TokenExpiredError" do
|
46
|
+
Timecop.travel(Time.iso8601('2010-03-04T19:19:10Z')) do
|
47
|
+
assert_nothing_raised do
|
48
|
+
@token = OpenToken.decode @opentoken
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
44
54
|
context "decoding token when current time is equal to expiration date" do
|
45
|
-
should "raise TokenExpiredError" do
|
55
|
+
should "not raise TokenExpiredError" do
|
46
56
|
Timecop.travel(Time.iso8601('2010-03-04T19:24:15Z')) do
|
57
|
+
assert_nothing_raised do
|
58
|
+
@token = OpenToken.decode @opentoken
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "decoding token when current time is within clock skew tolerance of expiration date" do
|
65
|
+
should "not raise TokenExpiredError" do
|
66
|
+
Timecop.travel(Time.iso8601('2010-03-04T19:24:19Z')) do
|
67
|
+
assert_nothing_raised do
|
68
|
+
@token = OpenToken.decode @opentoken
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "decoding token when current time is outside clock skew tolerance of expiration date" do
|
75
|
+
should "raise TokenExpiredError" do
|
76
|
+
Timecop.travel(Time.iso8601('2010-03-04T19:24:25Z')) do
|
47
77
|
assert_raises OpenToken::TokenExpiredError do
|
48
78
|
@token = OpenToken.decode @opentoken
|
49
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentoken
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 3.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.3
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: i18n
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,40 +37,60 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: shoulda
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- - =
|
51
|
+
- - '='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: 2.11.3
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.11.3
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: timecop
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
|
-
- - =
|
67
|
+
- - '='
|
53
68
|
- !ruby/object:Gem::Version
|
54
69
|
version: 0.3.5
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.3.5
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rake
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
|
-
- - =
|
83
|
+
- - '='
|
64
84
|
- !ruby/object:Gem::Version
|
65
85
|
version: 0.9.2
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - '='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.9.2
|
69
94
|
description: parse opentoken properties passed for Single Signon requests
|
70
95
|
email:
|
71
96
|
- ryan@socialcast.com
|
@@ -104,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
129
|
version: '0'
|
105
130
|
segments:
|
106
131
|
- 0
|
107
|
-
hash:
|
132
|
+
hash: 4385898841292862662
|
108
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
134
|
none: false
|
110
135
|
requirements:
|
@@ -113,10 +138,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
138
|
version: '0'
|
114
139
|
segments:
|
115
140
|
- 0
|
116
|
-
hash:
|
141
|
+
hash: 4385898841292862662
|
117
142
|
requirements: []
|
118
143
|
rubyforge_project: opentoken
|
119
|
-
rubygems_version: 1.8.
|
144
|
+
rubygems_version: 1.8.24
|
120
145
|
signing_key:
|
121
146
|
specification_version: 3
|
122
147
|
summary: ruby implementation of the opentoken specification
|