faraday-digestauth 0.2.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: 1c01446f0b7a664c1686708031360d4de062e0a4
4
- data.tar.gz: 3c7447336b7b528bb1f9fe0ae111cccca2e9127f
2
+ SHA256:
3
+ metadata.gz: f84765b37878c3063ae102b62617adc1c6be849180189a4f351c5e5780d5090f
4
+ data.tar.gz: d4a48a6028b2fa6171367deef0a26a161e35b90d751c3a349b701430e2e66f4f
5
5
  SHA512:
6
- metadata.gz: a579073989264f24fdebe0f9ef56572af56fa667c8bc998c65e284ba1979acb6afb4140b157aa5936699e161e8e2d95dc632c938fb220609bd3bc8c3a089df83
7
- data.tar.gz: a8721c84ad509ec0e97143565b1586d5ff049836e4077d3b60de699cb55708f702ab7fa36235bbb7120ac6a7156f708f1d6ad7825c8b0c5beaf1b68a07ccc157
6
+ metadata.gz: d2d52fa4a06b7d19f86ccac137beea560a8d573f9f7bd7ee2d803b15f7766411d4fe8a6fb2111e67c816d0b9e4df49a5445950c47b7a063d019723a901959f7c
7
+ data.tar.gz: 7971345115f79833fb46660c6ad2a5d3d594d50cd59a41c2de823c1ea43c55eba60726eee8236128ecc65c77516b11ddb9359c38bc5faf8a39c5e1b63a457659
@@ -1,3 +1,5 @@
1
+ require: rubocop-rspec
2
+
1
3
  AllCops:
2
4
  Exclude:
3
5
  - vendor/**/*
@@ -48,6 +50,12 @@ BlockNesting:
48
50
  # TODO: fix too much nesting
49
51
  Max: 4
50
52
 
53
+ Style/BlockLength:
54
+ Exclude:
55
+ - 'Rakefile'
56
+ - '**/*.rake'
57
+ - 'spec/**/*.rb'
58
+
51
59
  Lambda:
52
60
  # TODO: replace all lambda with -> or Proc
53
61
  Enabled: false
@@ -1,20 +1,31 @@
1
1
  language: ruby
2
+ before_install:
3
+ - gem update --system
4
+ - gem update bundler
2
5
  env:
3
6
  global:
4
7
  - "JRUBY_OPTS=-Xcext.enabled=true"
5
8
  rvm:
6
- - 2.1.2
7
- - 2.0.0
9
+ - 1.8.7
10
+ - 1.9.2
8
11
  - 1.9.3
12
+ - 2.0.0
13
+ - 2.1.0
14
+ - 2.2.0
15
+ - 2.3.0
16
+ - jruby-18mode
9
17
  - jruby-19mode
10
- - rbx-2.2.10
11
18
  - ruby-head
12
19
  - jruby-head
13
20
  - ree
14
21
  matrix:
15
22
  allow_failures:
23
+ - rvm: 1.8.7
24
+ - rvm: 1.9.2
25
+ - rvm: 1.9.3
16
26
  - rvm: ree
17
- - rvm: ruby-head
18
27
  - rvm: jruby-18mode
28
+ - rvm: jruby-19mode
19
29
  - rvm: jruby-head
30
+ - rvm: ruby-head
20
31
  fast_finish: true
data/Rakefile CHANGED
@@ -8,4 +8,4 @@ task test: :spec
8
8
  require 'rubocop/rake_task'
9
9
  RuboCop::RakeTask.new
10
10
 
11
- task default: [:rubocop, :spec]
11
+ task default: %i[rubocop spec]
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'faraday/digestauth/version'
@@ -21,9 +22,9 @@ Gem::Specification.new do |spec|
21
22
  spec.add_dependency 'faraday', '~> 0.7'
22
23
  spec.add_dependency 'net-http-digest_auth', '~> 1.4'
23
24
  spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'coveralls', '~> 0.1'
24
26
  spec.add_development_dependency 'rake', '~> 10'
25
27
  spec.add_development_dependency 'rspec', '~> 3'
26
- spec.add_development_dependency 'coveralls', '~> 0.1'
27
- spec.add_development_dependency 'rubocop', '~> 0.26.1'
28
+ spec.add_development_dependency 'rubocop-rspec'
28
29
  spec.add_development_dependency 'webmock', '~> 1'
29
30
  end
@@ -2,6 +2,6 @@
2
2
  module Faraday
3
3
  # Versioning Info
4
4
  module DigestAuth
5
- VERSION = '0.2.1'
5
+ VERSION = '0.3.0'.freeze
6
6
  end
7
7
  end
@@ -31,7 +31,8 @@ module Faraday
31
31
  # the original request body
32
32
  def initialize(app, user, password, opts = {})
33
33
  super(app)
34
- @user, @password = user, password
34
+ @user = user
35
+ @password = password
35
36
  @opts = opts
36
37
  end
37
38
 
@@ -45,6 +46,7 @@ module Faraday
45
46
  def call(env)
46
47
  response = handshake(env)
47
48
  return response unless response.status == 401
49
+ return response unless response.headers['www-authenticate'] =~ /Digest +[^\s]+/
48
50
 
49
51
  env[:request_headers]['Authorization'] = header(response)
50
52
  @app.call(env)
@@ -70,8 +72,8 @@ module Faraday
70
72
  # Returns a String with the DigestAuth header.
71
73
  def header(response)
72
74
  uri = response.env[:url]
73
- uri.user = @user
74
- uri.password = @password
75
+ uri.user = CGI.escape @user
76
+ uri.password = CGI.escape @password
75
77
 
76
78
  realm = response.headers['www-authenticate']
77
79
  method = response.env[:method].to_s.upcase
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Faraday::Request::DigestAuth do
3
+ context Faraday::Request::DigestAuth do
4
4
  let(:connection) do
5
5
  Faraday.new('http://api.example.org/') do |builder|
6
6
  builder.request :digest, 'USER', 'PASS'
@@ -12,27 +12,46 @@ describe Faraday::Request::DigestAuth do
12
12
  it 'does nothing' do
13
13
  stub_request(:get, 'http://api.example.org/productions/1')
14
14
  .to_return(status: 500, body: 'Foo body')
15
-
16
15
  response = connection.get('/productions/1')
17
16
  expect(response.body).to eq 'Foo body'
18
17
  end
19
18
  end
20
19
 
21
- describe 'when the server returns a 401' do
20
+ describe 'when the server returns a 401 without a digest authentication scheme' do
21
+ let(:first_call_headers) { 'Basic realm="MyApp"' }
22
+ let(:response) do
23
+ stub_request(:get, 'http://api.example.org/productions/1')
24
+ .with(body: nil)
25
+ .to_return(status: 401, headers: { 'www-authenticate' => first_call_headers })
26
+ connection.get('/productions/1')
27
+ end
28
+
29
+ it 'returns empty body' do
30
+ expect(response.body).to be_empty
31
+ end
32
+
33
+ it 'returns 401' do
34
+ expect(response.status).to eq 401
35
+ end
36
+ end
37
+
38
+ describe 'when the server returns a 401 with a digest authentication scheme' do
22
39
  let(:first_call_headers) { 'Digest realm="MyApp", algorithm=MD5' }
23
40
  let(:second_call_headers) { 'Digest username="USER", realm="MyApp", uri="/", algorithm="MD5"' }
24
- it 'authenticates using digest' do
41
+ let(:response) do
25
42
  stub_request(:get, 'http://api.example.org/productions/1')
26
43
  .with(body: nil)
27
44
  .to_return(status: 401, headers: { 'www-authenticate' => first_call_headers })
28
-
29
45
  stub_request(:get, 'http://api.example.org/productions/1')
30
46
  .with(body: "{\"foo\":1}",
31
47
  headers: { 'Authorization' => %r{second_call_headers} })
32
48
  .to_return(body: '{"resource": "This is the resource"}',
33
49
  headers: { content_type: 'application/json' })
34
-
35
50
  connection.get('/productions/1')
36
51
  end
52
+
53
+ it 'authenticates using digest' do
54
+ expect(response.body).to be_empty
55
+ end
37
56
  end
38
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-digestauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Haberer
@@ -9,118 +9,118 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-20 00:00:00.000000000 Z
12
+ date: 2018-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0.7'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.7'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: net-http-digest_auth
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.4'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.4'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.3'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rake
57
+ name: coveralls
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '10'
62
+ version: '0.1'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '10'
69
+ version: '0.1'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rspec
71
+ name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '3'
76
+ version: '10'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '3'
83
+ version: '10'
84
84
  - !ruby/object:Gem::Dependency
85
- name: coveralls
85
+ name: rspec
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0.1'
90
+ version: '3'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.1'
97
+ version: '3'
98
98
  - !ruby/object:Gem::Dependency
99
- name: rubocop
99
+ name: rubocop-rspec
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: 0.26.1
104
+ version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: 0.26.1
111
+ version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: webmock
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: '1'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '1'
126
126
  description: Faraday extension to enable digest auth
@@ -131,11 +131,11 @@ executables: []
131
131
  extensions: []
132
132
  extra_rdoc_files: []
133
133
  files:
134
- - .gitignore
135
- - .rspec
136
- - .rubocop.yml
137
- - .rubocop_todo.yml
138
- - .travis.yml
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".rubocop.yml"
137
+ - ".rubocop_todo.yml"
138
+ - ".travis.yml"
139
139
  - Gemfile
140
140
  - LICENSE.txt
141
141
  - README.md
@@ -145,7 +145,7 @@ files:
145
145
  - lib/faraday/digestauth/connection.rb
146
146
  - lib/faraday/digestauth/version.rb
147
147
  - lib/faraday/request/digestauth.rb
148
- - spec/faraday-digestauth_spec.rb
148
+ - spec/faraday/request/digest_auth_spec.rb
149
149
  - spec/spec_helper.rb
150
150
  homepage: https://github.com/bhaberer/faraday-digestauth
151
151
  licenses:
@@ -157,20 +157,20 @@ require_paths:
157
157
  - lib
158
158
  required_ruby_version: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - ! '>='
160
+ - - ">="
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0'
163
163
  required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ! '>='
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
169
  rubyforge_project:
170
- rubygems_version: 2.4.4
170
+ rubygems_version: 2.7.3
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: Digest Auth for Faraday
174
174
  test_files:
175
- - spec/faraday-digestauth_spec.rb
175
+ - spec/faraday/request/digest_auth_spec.rb
176
176
  - spec/spec_helper.rb