rack-jwt-auth 0.0.3 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6a2052e477acf5027ed8dedce21869b2780c497
4
- data.tar.gz: b3103b770c27029fc0c6d9eb865d8d8c8a2577cf
3
+ metadata.gz: bbe873d8ecf67c8398c5de86881ccb16e64b23d8
4
+ data.tar.gz: 82d3627695fa803b3c714481f55865e941045d9d
5
5
  SHA512:
6
- metadata.gz: 049bc6f3a49f25795a765ce22415378d46a79458de78d7c1f4096e4a2cf077e3e6546d95fcb31f69ac23892eb520bac0c0ba4a405298163de95dd68b51cdb96c
7
- data.tar.gz: bbd0aa5a7f5d032c1c7cedf4b9e209110e267df9745bc4649b79d67bc03d401613181589be80a8df462824eabb1aa5b8a5ba56a874a5b698861932f04a816ef6
6
+ metadata.gz: 9177c3e1e77145ba05f565bc23e41ec6a1b594ad28061575b2c714037fb4bd0f8a9b12b5eb5cb9f3c59980ac6b1b74e85f1d66c1ee3b439fb6d03b168170cdfa
7
+ data.tar.gz: 65df06c77cbf4f507020418c8ddb8348201937556ea6db17cdf3caecb41f5902cd5ca9b9403cdcc5f3903fb0d8a714ec6d93780bc8e427780309c5f475cf4988
@@ -37,11 +37,15 @@ module Rack
37
37
  if authenticated_route?(env)
38
38
  header = env['HTTP_AUTHORIZATION']
39
39
 
40
- return [401, {}, ['Missing Authorization header']] if header.nil?
40
+ return [401, {}, [{message: 'Missing Authorization header'}.to_json]] if header.nil?
41
41
 
42
- payload = AuthToken.valid?(header, @secret)
42
+ scheme, token = header.split(" ")
43
43
 
44
- return [401, {}, ['Invalid Authorization']] unless payload
44
+ return [401, {}, [{message: 'Format is Authorization: Bearer [token]'}.to_json]] unless scheme.match(/^Bearer$/i) && !token.nil?
45
+
46
+ payload = AuthToken.valid?(token, @secret)
47
+
48
+ return [401, {}, [{message: 'Invalid Authorization'}.to_json]] unless payload
45
49
  end
46
50
 
47
51
  yield payload
@@ -80,4 +84,4 @@ module Rack
80
84
 
81
85
  end
82
86
  end
83
- end
87
+ end
@@ -1,7 +1,7 @@
1
1
  module Rack
2
2
  module Jwt
3
3
  module Auth
4
- VERSION = "0.0.3"
4
+ VERSION = "1.0.3"
5
5
  end
6
6
  end
7
7
  end
@@ -79,4 +79,42 @@ describe Rack::Jwt::Auth::Authenticate do
79
79
 
80
80
  end
81
81
 
82
- end
82
+ context "Only with except routes" do
83
+
84
+ let(:app) do
85
+ main_app = lambda { |env| [200, env, ['Hello']] }
86
+ Rack::Jwt::Auth::Authenticate.new(main_app, {only: ['/authenticated', '/authenticated/*'], secret: 'supertestsecret'})
87
+ end
88
+
89
+ it 'returns 200 ok if the request is for a route that is not authenticated' do
90
+ get('/not_authenticated')
91
+
92
+ expect(last_response.status).to eql(200)
93
+ expect(last_response.body).to eql('Hello')
94
+
95
+ get('/not_authenticated/other')
96
+
97
+ expect(last_response.status).to eql(200)
98
+ expect(last_response.body).to eql('Hello')
99
+
100
+ get('/not_authenticated/other/test')
101
+
102
+ expect(last_response.status).to eql(200)
103
+ expect(last_response.body).to eql('Hello')
104
+ end
105
+
106
+ it 'returns 401 ok if the request is for a route that is authenticated' do
107
+ get('/authenticated')
108
+ expect(last_response.status).to eql(401)
109
+
110
+ get('/authenticated/other')
111
+ expect(last_response.status).to eql(401)
112
+
113
+ get('/authenticated/other/test')
114
+ expect(last_response.status).to eql(401)
115
+ end
116
+
117
+ end
118
+
119
+
120
+ end
@@ -16,7 +16,7 @@ describe Rack::Jwt::Auth::Authenticate do
16
16
 
17
17
  it 'returns 200 ok if the request is authenticated' do
18
18
  token = issuer.issue_token({user_id: 1, username: 'test'}, 'supertestsecret')
19
- get('/', {}, {'HTTP_AUTHORIZATION' => token})
19
+ get('/', {}, {'HTTP_AUTHORIZATION' => "Bearer #{token}"})
20
20
 
21
21
  expect(last_response.status).to eql(200)
22
22
  expect(last_response.body).to eql('Hello')
@@ -30,16 +30,40 @@ describe Rack::Jwt::Auth::Authenticate do
30
30
  it 'returns 401 if the authorization header is missing' do
31
31
  get('/')
32
32
 
33
+ jsonResponse = JSON.parse(last_response.body)
34
+
33
35
  expect(last_response.status).to eql(401)
34
- expect(last_response.body).to eql('Missing Authorization header')
36
+ expect(jsonResponse["message"]).to eql("Missing Authorization header")
35
37
  end
36
38
 
37
39
  it 'returns 401 if the authorization header signature is invalid' do
38
40
  token = issuer.issue_token({user_id: 1}, 'invalid_secret')
39
- get('/', {}, {'HTTP_AUTHORIZATION' => token})
41
+ get('/', {}, {'HTTP_AUTHORIZATION' => "Bearer #{token}"})
42
+
43
+ jsonResponse = JSON.parse(last_response.body)
44
+
45
+ expect(last_response.status).to eql(401)
46
+ expect(jsonResponse["message"]).to eql("Invalid Authorization")
47
+ end
48
+
49
+ it 'returns 401 if the header format is not Authorization: Bearer [token]' do
50
+ token = issuer.issue_token({user_id: 1}, 'supertestsecret')
51
+ get('/', {}, {'HTTP_AUTHORIZATION' => "#{token}"})
52
+
53
+ jsonResponse = JSON.parse(last_response.body)
54
+
55
+ expect(last_response.status).to eql(401)
56
+ expect(jsonResponse["message"]).to eql("Format is Authorization: Bearer [token]")
57
+ end
58
+
59
+ it 'returns 401 if authorization scheme is not Bearer' do
60
+ token = issuer.issue_token({user_id: 1}, 'supertestsecret')
61
+ get('/', {}, {'HTTP_AUTHORIZATION' => "WrongScheme #{token}"})
62
+
63
+ jsonResponse = JSON.parse(last_response.body)
40
64
 
41
65
  expect(last_response.status).to eql(401)
42
- expect(last_response.body).to eql('Invalid Authorization')
66
+ expect(jsonResponse["message"]).to eql("Format is Authorization: Bearer [token]")
43
67
  end
44
68
 
45
- end
69
+ end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-jwt-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - João Almeida
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-28 00:00:00.000000000 Z
11
+ date: 2015-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack-test
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.6'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.6'
83
83
  description: Rack jwt auth middleware
@@ -87,7 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".gitignore"
90
+ - .gitignore
91
91
  - Gemfile
92
92
  - LICENSE.txt
93
93
  - README.md
@@ -111,17 +111,17 @@ require_paths:
111
111
  - lib
112
112
  required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - '>='
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - ">="
119
+ - - '>='
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  requirements: []
123
123
  rubyforge_project:
124
- rubygems_version: 2.4.2
124
+ rubygems_version: 2.0.14
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Rack jwt auth middleware