json-jwt 0.2.0 → 0.3.0

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.

Potentially problematic release.


This version of json-jwt might be problematic. Click here for more details.

data/.travis.yml CHANGED
@@ -1,2 +1,3 @@
1
1
  rvm:
2
+ - 1.9.2
2
3
  - 1.9.3
data/Gemfile CHANGED
@@ -1,7 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- platform :jruby do
4
- gem 'jruby-openssl', '>= 0.7'
5
- end
6
-
7
- gemspec
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json-jwt (0.1.8)
4
+ json-jwt (0.3.0)
5
5
  activesupport (>= 2.3)
6
6
  i18n
7
7
  json (>= 1.4.3)
@@ -31,16 +31,16 @@ GEM
31
31
  rspec-core (2.11.1)
32
32
  rspec-expectations (2.11.3)
33
33
  diff-lcs (~> 1.1.3)
34
- rspec-mocks (2.11.2)
34
+ rspec-mocks (2.11.3)
35
35
  url_safe_base64 (0.2.1)
36
36
  yamler (0.1.0)
37
37
 
38
38
  PLATFORMS
39
+ java
39
40
  ruby
40
41
 
41
42
  DEPENDENCIES
42
43
  cover_me (>= 1.2.0)
43
- jruby-openssl (>= 0.7)
44
44
  json-jwt!
45
45
  rake (>= 0.8)
46
46
  rspec (>= 2)
data/Rakefile CHANGED
@@ -4,22 +4,15 @@ Bundler::GemHelper.install_tasks
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
- if RUBY_VERSION >= '1.9'
8
- namespace :cover_me do
9
- desc "Generates and opens code coverage report."
10
- task :report do
11
- require 'cover_me'
12
- CoverMe.complete!
13
- end
14
- end
15
- task :spec do
16
- Rake::Task['cover_me:report'].invoke
17
- end
18
- else
19
- RSpec::Core::RakeTask.new(:rcov) do |spec|
20
- spec.rcov = true
21
- spec.rcov_opts = ['-Ilib -Ispec --exclude spec,gems']
7
+ namespace :cover_me do
8
+ desc "Generates and opens code coverage report."
9
+ task :report do
10
+ require 'cover_me'
11
+ CoverMe.complete!
22
12
  end
23
13
  end
14
+ task :spec do
15
+ Rake::Task['cover_me:report'].invoke
16
+ end
24
17
 
25
- task :default => :spec
18
+ task default: :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/json-jwt.gemspec CHANGED
@@ -15,10 +15,6 @@ Gem::Specification.new do |s|
15
15
  s.add_runtime_dependency "activesupport", ">= 2.3"
16
16
  s.add_runtime_dependency "i18n"
17
17
  s.add_development_dependency "rake", ">= 0.8"
18
- if RUBY_VERSION >= '1.9'
19
- s.add_development_dependency "cover_me", ">= 1.2.0"
20
- else
21
- s.add_development_dependency "rcov", ">= 0.9"
22
- end
18
+ s.add_development_dependency "cover_me", ">= 1.2.0"
23
19
  s.add_development_dependency "rspec", ">= 2"
24
20
  end
data/lib/json/jwk.rb CHANGED
@@ -29,8 +29,8 @@ module JSON
29
29
  hex_x = hex[2, data_len/2]
30
30
  hex_y = hex[2+data_len/2, data_len/2]
31
31
  @ecdsa_coodinates = {
32
- :x => hex_x,
33
- :y => hex_y
32
+ x: hex_x,
33
+ y: hex_y
34
34
  }
35
35
  end
36
36
  @ecdsa_coodinates
@@ -40,16 +40,16 @@ module JSON
40
40
  hash = case public_key
41
41
  when OpenSSL::PKey::RSA
42
42
  {
43
- :alg => :RSA,
44
- :exp => UrlSafeBase64.encode64(public_key.e.to_s(2)),
45
- :mod => UrlSafeBase64.encode64(public_key.n.to_s(2))
43
+ alg: :RSA,
44
+ exp: UrlSafeBase64.encode64(public_key.e.to_s(2)),
45
+ mod: UrlSafeBase64.encode64(public_key.n.to_s(2))
46
46
  }
47
47
  when OpenSSL::PKey::EC
48
48
  {
49
- :alg => :EC,
50
- :crv => ecdsa_curve_name(public_key),
51
- :x => UrlSafeBase64.encode64(ecdsa_coodinates(public_key)[:x].to_s),
52
- :y => UrlSafeBase64.encode64(ecdsa_coodinates(public_key)[:y].to_s)
49
+ alg: :EC,
50
+ crv: ecdsa_curve_name(public_key),
51
+ x: UrlSafeBase64.encode64(ecdsa_coodinates(public_key)[:x].to_s),
52
+ y: UrlSafeBase64.encode64(ecdsa_coodinates(public_key)[:y].to_s)
53
53
  }
54
54
  else
55
55
  raise UnknownAlgorithm.new('Unknown Algorithm')
@@ -59,15 +59,15 @@ module JSON
59
59
 
60
60
  class << self
61
61
  def decode(jwk)
62
- case jwk[:alg]
63
- when :RSA
62
+ case jwk[:alg].to_s
63
+ when 'RSA'
64
64
  exp = OpenSSL::BN.new UrlSafeBase64.decode64(jwk[:exp]), 2
65
65
  mod = OpenSSL::BN.new UrlSafeBase64.decode64(jwk[:mod]), 2
66
66
  key = OpenSSL::PKey::RSA.new
67
67
  key.e = exp
68
68
  key.n = mod
69
69
  key
70
- when :EC
70
+ when 'EC'
71
71
  raise NotImplementedError.new('Not Implemented Yet')
72
72
  else
73
73
  raise UnknownAlgorithm.new('Unknown Algorithm')
data/lib/json/jwk/set.rb CHANGED
@@ -6,7 +6,7 @@ module JSON
6
6
 
7
7
  def as_json(options = {})
8
8
  # NOTE: Array.new wrapper is requied to avoid CircularReferenceError
9
- {:keys => Array.new(self)}
9
+ {keys: Array.new(self)}
10
10
  end
11
11
  end
12
12
  end
data/lib/json/jws.rb CHANGED
@@ -13,8 +13,8 @@ module JSON
13
13
  self
14
14
  end
15
15
 
16
- def verify(signature_base_string, signature, public_key_or_secret)
17
- valid?(signature_base_string, signature, public_key_or_secret) or
16
+ def verify(public_key_or_secret)
17
+ public_key_or_secret && valid?(public_key_or_secret) or
18
18
  raise VerificationFailed
19
19
  end
20
20
 
@@ -66,7 +66,7 @@ module JSON
66
66
  end
67
67
  end
68
68
 
69
- def valid?(signature_base_string, signature, public_key_or_secret)
69
+ def valid?(public_key_or_secret)
70
70
  case
71
71
  when hmac?
72
72
  secret = public_key_or_secret
data/lib/json/jwt.rb CHANGED
@@ -14,8 +14,8 @@ module JSON
14
14
 
15
15
  def initialize(claims)
16
16
  @header = {
17
- :typ => :JWT,
18
- :alg => :none
17
+ typ: :JWT,
18
+ alg: :none
19
19
  }
20
20
  [:exp, :nbf, :iat].each do |key|
21
21
  claims[key] = claims[key].to_i if claims[key]
@@ -28,12 +28,12 @@ module JSON
28
28
  JWS.new(self).sign!(private_key_or_secret)
29
29
  end
30
30
 
31
- def verify(signature_base_string, signature = '', public_key_or_secret = nil)
31
+ def verify(public_key_or_secret = nil)
32
32
  if header[:alg].to_s == 'none'
33
33
  raise UnexpectedAlgorithm if public_key_or_secret
34
34
  signature == '' or raise VerificationFailed
35
35
  else
36
- JWS.new(self).verify(signature_base_string, signature, public_key_or_secret)
36
+ JWS.new(self).verify(public_key_or_secret)
37
37
  end
38
38
  end
39
39
 
@@ -54,10 +54,14 @@ module JSON
54
54
  header, claims, signature = jwt_string.split('.', 3).collect do |segment|
55
55
  UrlSafeBase64.decode64 segment.to_s
56
56
  end
57
+ header, claims = [header, claims].collect do |json|
58
+ JSON.parse json, symbolize_names: true, symbolize_keys: true
59
+ end
57
60
  signature_base_string = jwt_string.split('.')[0, 2].join('.')
58
- jwt = new JSON.parse(claims, :symbolize_names => true, :symbolize_keys => true)
59
- jwt.header = JSON.parse(header, :symbolize_names => true, :symbolize_keys => true)
60
- jwt.verify signature_base_string, signature, key_or_secret
61
+ jwt = new claims
62
+ jwt.header = header
63
+ jwt.signature = signature
64
+ jwt.verify key_or_secret unless key_or_secret == :skip_verification
61
65
  jwt
62
66
  when 3 # JWE
63
67
  # TODO: Concept code first.
@@ -9,7 +9,7 @@ describe JSON::JWK do
9
9
  its(:mod) { jwk[:mod].should == UrlSafeBase64.encode64(public_key.n.to_s(2)) }
10
10
 
11
11
  context 'when kid/use options given' do
12
- let(:jwk) { JSON::JWK.new public_key, :kid => '12345', :use => :sig }
12
+ let(:jwk) { JSON::JWK.new public_key, kid: '12345', use: :sig }
13
13
  it { jwk.should include :kid, :use }
14
14
  its(:kid) { jwk[:kid].should == '12345' }
15
15
  its(:use) { jwk[:use].should == :sig }
@@ -20,22 +20,22 @@ describe JSON::JWK do
20
20
  let(:expected_coodinates) do
21
21
  {
22
22
  256 => {
23
- :x => 'OTUyMUU1NjJFOEQ3NDA0MTRDOEEyQjk5RDQ2NkZERDVFNUYwQzUzMUFGNENBNkMxMTY2Q0NFQzUzQjVGRDMwRg',
24
- :y => 'MDIwQTRENTQwN0ExQkJFNzQwNkJDNjIyMUI5NjUxQTY1NjY5Mjg4QUU1OEE1NjRDNjcwN0Q1RkQ5REM3MDlCNw'
23
+ x: 'OTUyMUU1NjJFOEQ3NDA0MTRDOEEyQjk5RDQ2NkZERDVFNUYwQzUzMUFGNENBNkMxMTY2Q0NFQzUzQjVGRDMwRg',
24
+ y: 'MDIwQTRENTQwN0ExQkJFNzQwNkJDNjIyMUI5NjUxQTY1NjY5Mjg4QUU1OEE1NjRDNjcwN0Q1RkQ5REM3MDlCNw'
25
25
  },
26
26
  384 => {
27
- :x => 'QTY1Q0MwQTcyMTY3MkJCQUIzODYwRTU3OUM4NjVCMTYzREExNjY4MUY2NTVEOTc4RjkxMTY2RUMzOUVDMzRDMUJEQjcyQUFCQTVGQUI2NDcyOERGMjgwMDVCNzA1NDZE',
28
- :y => 'OEIxMDczN0RGODY0RERGNzFCOTlFOEE5MThCOTJGNDAxMzQyQ0RFMzY2RTkwMkY3ODRFNTEzMUZBMjA1MDczMzhCRDE4RUM3QjA2NEU4QTRENEQzQjI5MkUzOTYyQkRC'
27
+ x: 'QTY1Q0MwQTcyMTY3MkJCQUIzODYwRTU3OUM4NjVCMTYzREExNjY4MUY2NTVEOTc4RjkxMTY2RUMzOUVDMzRDMUJEQjcyQUFCQTVGQUI2NDcyOERGMjgwMDVCNzA1NDZE',
28
+ y: 'OEIxMDczN0RGODY0RERGNzFCOTlFOEE5MThCOTJGNDAxMzQyQ0RFMzY2RTkwMkY3ODRFNTEzMUZBMjA1MDczMzhCRDE4RUM3QjA2NEU4QTRENEQzQjI5MkUzOTYyQkRC'
29
29
  },
30
30
  512 => {
31
- :x => 'MDFDMzAyMEZFNkI0NkJBQUU3MTNENEVGMEI0OThFQTg1RkMzMTk3NDYwRTU4REUyNERCRTFFMUNEQzEzOUI2OTAzRUEyQkEzQzdEMzNGN0ZDNzdGMTQ2MUVCRDBFODY5QUIzMTI3RTJCNjBGNjE5QTJFMUFDNkM4M0M0ODBCRDJBRkZG',
32
- :y => 'MDE0MkQ4MTFERjI1RjlCNTdGMDQ4REJDRjVBN0IzODUyMkQ5RDUxMEM1REE1QjYwMENGMTMyRjU4RUQ4QjZBNjFBRTFDMjVDQTYyQ0IzNTQzMzI5NUQ2QzAxQTdBNzIzODNBNEQ3MjBEOTI4NTZCNTU3NjYxMzc4RDM4OEExQkI4MjM2'
31
+ x: 'MDFDMzAyMEZFNkI0NkJBQUU3MTNENEVGMEI0OThFQTg1RkMzMTk3NDYwRTU4REUyNERCRTFFMUNEQzEzOUI2OTAzRUEyQkEzQzdEMzNGN0ZDNzdGMTQ2MUVCRDBFODY5QUIzMTI3RTJCNjBGNjE5QTJFMUFDNkM4M0M0ODBCRDJBRkZG',
32
+ y: 'MDE0MkQ4MTFERjI1RjlCNTdGMDQ4REJDRjVBN0IzODUyMkQ5RDUxMEM1REE1QjYwMENGMTMyRjU4RUQ4QjZBNjFBRTFDMjVDQTYyQ0IzNTQzMzI5NUQ2QzAxQTdBNzIzODNBNEQ3MjBEOTI4NTZCNTU3NjYxMzc4RDM4OEExQkI4MjM2'
33
33
  }
34
34
  }
35
35
  end
36
36
  [256, 384, 512].each do |digest_length|
37
37
  describe "EC#{digest_length}" do
38
- let(:jwk) { JSON::JWK.new public_key(:ecdsa, :digest_length => digest_length) }
38
+ let(:jwk) { JSON::JWK.new public_key(:ecdsa, digest_length: digest_length) }
39
39
  it { jwk.should include :alg, :crv, :x, :y }
40
40
  its(:alg) { jwk[:alg].should == :EC }
41
41
  its(:x) { jwk[:x].should == expected_coodinates[digest_length][:x] }
@@ -74,7 +74,8 @@ describe JSON::JWK do
74
74
  let(:exp) { 'AQAB' }
75
75
  let(:mod) { 'AK8ppaAGn6N3jDic2DhDN5mI5mWzvhfL1AFZOS9q2EBM8L5sjZbYiaHeNoKillZGmEF9a9g6Z20bDnoHTuHPsx93HYkZqPumFZ8K9lLCbqKAMWw2Qgk10RgrZ-kblJotTBCeer9-tZSWO-OWFzP4gp8MpSuQOQbwTJwDgEkFIQLUK2YgzWbn1PoW8xcfbVyWhZD880ELGRW6GhRgYAl0DN_EQS8kyUa0CusYCzOOg2W3-7qjYeojyP6jiOEr-eyjC7hcUvTVoTfz84BiZv72KS3i5JS8ZNNuRp5Ce51wjoDDUoNxDLWv6Da6qMaGpKz6NTSNbvhE_KFhpp4wf5yRQD8=' }
76
76
  let(:pem) do
77
- <<-PEM
77
+ if RUBY_VERSION >= '1.9.3'
78
+ <<-PEM
78
79
  -----BEGIN PUBLIC KEY-----
79
80
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArymloAafo3eMOJzYOEM3
80
81
  mYjmZbO+F8vUAVk5L2rYQEzwvmyNltiJod42gqKWVkaYQX1r2DpnbRsOegdO4c+z
@@ -84,7 +85,19 @@ nwylK5A5BvBMnAOASQUhAtQrZiDNZufU+hbzFx9tXJaFkPzzQQsZFboaFGBgCXQM
84
85
  LeLklLxk025GnkJ7nXCOgMNSg3EMta/oNrqoxoakrPo1NI1u+ET8oWGmnjB/nJFA
85
86
  PwIDAQAB
86
87
  -----END PUBLIC KEY-----
87
- PEM
88
+ PEM
89
+ else
90
+ <<-PEM
91
+ -----BEGIN RSA PUBLIC KEY-----
92
+ MIIBCgKCAQEArymloAafo3eMOJzYOEM3mYjmZbO+F8vUAVk5L2rYQEzwvmyNltiJ
93
+ od42gqKWVkaYQX1r2DpnbRsOegdO4c+zH3cdiRmo+6YVnwr2UsJuooAxbDZCCTXR
94
+ GCtn6RuUmi1MEJ56v361lJY745YXM/iCnwylK5A5BvBMnAOASQUhAtQrZiDNZufU
95
+ +hbzFx9tXJaFkPzzQQsZFboaFGBgCXQM38RBLyTJRrQK6xgLM46DZbf7uqNh6iPI
96
+ /qOI4Sv57KMLuFxS9NWhN/PzgGJm/vYpLeLklLxk025GnkJ7nXCOgMNSg3EMta/o
97
+ NrqoxoakrPo1NI1u+ET8oWGmnjB/nJFAPwIDAQAB
98
+ -----END RSA PUBLIC KEY-----
99
+ PEM
100
+ end
88
101
  end
89
102
 
90
103
  it { should be_instance_of OpenSSL::PKey::RSA }
@@ -12,12 +12,12 @@ describe JSON::JWS do
12
12
  let(:decoded) { JSON::JWT.decode signed.to_s, public_key_or_secret }
13
13
  let(:claims) do
14
14
  {
15
- :iss => 'joe',
16
- :exp => 1300819380,
15
+ iss: 'joe',
16
+ exp: 1300819380,
17
17
  :'http://example.com/is_root' => true
18
18
  }
19
19
  end
20
- let(:expected_signature) {
20
+ let(:expected_signature) do
21
21
  {
22
22
  :HS256 => 'DyuTgO2Ggb5nrhkkhI-RjVYIBe3o8oL4ijkAn94YPxQ',
23
23
  :HS384 => 'a5-7rr61TG8Snv9xxJ7l064ky-SCq1Mswe9t8HEorvoc_nnfIeUy9WQCLMIli34R',
@@ -26,7 +26,7 @@ describe JSON::JWS do
26
26
  :RS384 => 'lT5JbytGKgG9QrwkJuxgw7UjmN9tjkEQW9pVGR2XnKEdC0_wLNIzAmT-jTwyMDGBLUkWO7opDOP6Xy6_DOTg58k9PwVkyQzrLnmxJMEng2Q-aMqcitRSIvUk3DPy8kemp8yUPls9NzWmByM2GoUVHbDsR0r-tZN-g_9QYev32mvMhjMr30JI5S2xiRjc9m2GAaXMOQmNTovJgV4bgCp4UjruCrA0BD1JJwDqKYoR_YYr_ALcVjD_LUgy80udJvbi8MAYJVUf0QYtQDrX2wnT_-eiiWjD5XafLuXEQVDRh-v2MKAwdvtXMq5cZ08Zjl2SyHxJ3OqhEeWPvYGltxZh_A',
27
27
  :RS512 => 'EHeGM2Mo3ghhUfSB99AlREehrbC6OPE-nYL_rwf88ysTnJ8L1QQ0UuCrXq4SpRutGLK_bYTK3ZALvFRPoOgK_g0QWmqv6qjQRU_QTxoq8y8APP-IgKKDuIiGH6daBV2rAPLDReqYNKsKjmTvZJo2c0a0e_WZkkj_ZwpgjTG3v0gW9lbDAzLJDz18eqtR4ZO7JTu_fyNrUrNk-w2_wpxSsn9sygIMp0lKE0_pt0b01fz3gjTDjlltU0cKSalUp4geaBDH7QRcexrolIctdQFbNKTXQxoigxD3NLNkKGH7f6A8KZdcOm8AnEjullcZs8_OWGnW43p1qrxoBRSivb9pqQ'
28
28
  }
29
- }
29
+ end
30
30
 
31
31
  shared_examples_for :jwt_with_alg do
32
32
  it { should == jwt }
@@ -120,8 +120,8 @@ describe JSON::JWS do
120
120
 
121
121
  [:ES256, :ES384, :ES512].each do |algorithm|
122
122
  describe algorithm do
123
- let(:private_key_or_secret) { private_key(:ecdsa, :digest_length => algorithm.to_s[2,3].to_i) }
124
- let(:public_key_or_secret) { public_key(:ecdsa, :digest_length => algorithm.to_s[2,3].to_i) }
123
+ let(:private_key_or_secret) { private_key :ecdsa, digest_length: algorithm.to_s[2,3].to_i }
124
+ let(:public_key_or_secret) { public_key :ecdsa, digest_length: algorithm.to_s[2,3].to_i }
125
125
  let(:alg) { algorithm }
126
126
  it_behaves_like :success_signature_verification
127
127
  end
@@ -131,7 +131,7 @@ describe JSON::JWS do
131
131
  let(:alg) { :unknown }
132
132
  it do
133
133
  expect do
134
- jws.verify 'signature_base_string', 'signature', 'key'
134
+ jws.verify 'key'
135
135
  end.to raise_error JSON::JWS::InvalidFormat
136
136
  end
137
137
  end
@@ -2,10 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  describe JSON::JWT do
4
4
  let(:jwt) { JSON::JWT.new claims }
5
+ let(:jws) do
6
+ jwt.header[:alg] = :HS256
7
+ jws = JSON::JWS.new jwt
8
+ jws.signature = 'signature'
9
+ jws
10
+ end
5
11
  let(:claims) do
6
12
  {
7
- :iss => 'joe',
8
- :exp => 1300819380,
13
+ iss: 'joe',
14
+ exp: 1300819380,
9
15
  :'http://example.com/is_root' => true
10
16
  }
11
17
  end
@@ -39,36 +45,49 @@ describe JSON::JWT do
39
45
 
40
46
  describe '#verify' do
41
47
  context 'when not signed nor encrypted' do
48
+ let(:jwt) do
49
+ header, claims, signature = no_signed.split('.', 3).collect do |segment|
50
+ UrlSafeBase64.decode64 segment.to_s
51
+ end
52
+ header, claims = [header, claims].collect do |json|
53
+ JSON.parse json, symbolize_names: true, symbolize_keys: true
54
+ end
55
+ jwt = JSON::JWT.new claims
56
+ jwt.header = header
57
+ jwt.signature = signature
58
+ jwt
59
+ end
60
+
42
61
  context 'when no signature nor public_key_or_secret given' do
43
62
  it do
44
- jwt.verify(no_signed).should be_true
63
+ jwt.verify.should be_true
45
64
  end
46
65
  end
47
66
 
48
67
  context 'when public_key_or_secret given' do
49
68
  it do
50
69
  expect do
51
- jwt.verify(no_signed, '', 'secret')
70
+ jwt.verify 'secret'
52
71
  end.to raise_error JSON::JWT::UnexpectedAlgorithm
53
72
  end
54
73
  end
55
74
 
56
75
  context 'when signature given' do
76
+ before { jwt.signature = 'signature' }
77
+
57
78
  it do
58
79
  expect do
59
- jwt.verify(no_signed, 'signature')
80
+ jwt.verify
60
81
  end.to raise_error JSON::JWT::VerificationFailed
61
82
  end
62
83
  end
63
84
  end
64
85
 
65
86
  context 'when signed' do
66
- before { jwt.header[:alg] = :HS256 }
67
87
  it 'should delegate verification to JWS' do
68
- jws = JSON::JWS.new jwt
69
88
  jws.should_receive(:verify)
70
89
  JSON::JWS.should_receive(:new).and_return(jws)
71
- jwt.verify 'signature_base_string', 'signature', 'shared_secret'
90
+ jwt.verify 'shared_secret'
72
91
  end
73
92
  end
74
93
  end
@@ -82,6 +101,32 @@ describe JSON::JWT do
82
101
  end
83
102
  end
84
103
 
104
+ context 'when signed' do
105
+ context 'when no secret/key given' do
106
+ it 'should do verification' do
107
+ expect do
108
+ JSON::JWT.decode jws.to_s
109
+ end.to raise_error JSON::JWT::VerificationFailed
110
+ end
111
+ end
112
+
113
+ context 'when secret/key given' do
114
+ it 'should do verification' do
115
+ expect do
116
+ JSON::JWT.decode jws.to_s, 'secret'
117
+ end.to raise_error JSON::JWT::VerificationFailed
118
+ end
119
+ end
120
+
121
+ context 'when :skip_verification given as secret/key' do
122
+ it 'should skip verification' do
123
+ expect do
124
+ jwt = JSON::JWT.decode jws.to_s, :skip_verification
125
+ end.not_to raise_error
126
+ end
127
+ end
128
+ end
129
+
85
130
  context 'when JSON parse failed' do
86
131
  it do
87
132
  expect do
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,4 @@
1
- if RUBY_VERSION >= '1.9'
2
- require 'cover_me'
3
- end
4
-
1
+ require 'cover_me'
5
2
  require 'rspec'
6
3
  require 'json/jwt'
7
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json-jwt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json