ruby-requests 0.0.1.a1
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 +7 -0
- data/.gitignore +5 -0
- data/.gitlab-ci.yml +37 -0
- data/.rubocop-disables.yml +96 -0
- data/.rubocop.yml +9 -0
- data/Gemfile +9 -0
- data/LICENSE +21 -0
- data/Makefile +17 -0
- data/README.md +151 -0
- data/lib/requests.rb +95 -0
- data/lib/requests/adapters.rb +124 -0
- data/lib/requests/cookies.rb +98 -0
- data/lib/requests/exceptions.rb +32 -0
- data/lib/requests/http_methods.rb +36 -0
- data/lib/requests/logger.rb +37 -0
- data/lib/requests/request.rb +94 -0
- data/lib/requests/response.rb +93 -0
- data/lib/requests/session.rb +120 -0
- data/lib/requests/utils.rb +162 -0
- data/lib/requests/version.rb +4 -0
- data/ruby-requests.gemspec +23 -0
- data/spec/docker-compose.yml +23 -0
- data/spec/docker_test_entrypoint.sh +12 -0
- data/spec/docker_tests.sh +6 -0
- data/spec/functional/proxies/proxies_spec.rb +84 -0
- data/spec/functional/proxies/squid_conf/passwords +2 -0
- data/spec/functional/proxies/squid_conf/squid.conf +11 -0
- data/spec/functional/requests_spec.rb +326 -0
- data/spec/functional/session_spec.rb +111 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/unit/api_spec.rb +42 -0
- data/spec/unit/utils_spec.rb +112 -0
- metadata +131 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
##
|
2
|
+
# This file contains the unit tests for the top level functions on the
|
3
|
+
# Requests module, defined in lib/requests.rb.
|
4
|
+
|
5
|
+
require 'rspec'
|
6
|
+
require 'securerandom'
|
7
|
+
require_relative '../spec_helper'
|
8
|
+
|
9
|
+
|
10
|
+
RSpec.describe Requests do
|
11
|
+
describe "logging" do
|
12
|
+
before(:each) do
|
13
|
+
@log = StringIO.new
|
14
|
+
@logger = Requests::Logger.new(@log)
|
15
|
+
@logger.level = 'debug'
|
16
|
+
Requests.logger = @logger
|
17
|
+
# A unique string we can check for in the log:
|
18
|
+
@msg = SecureRandom.uuid
|
19
|
+
end
|
20
|
+
|
21
|
+
it "logs to user-provided logger" do
|
22
|
+
Requests.logger.warn(@msg)
|
23
|
+
@log.seek(0)
|
24
|
+
expect(@log.read).to match(@msg)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "disable_logging prevents logging" do
|
28
|
+
Requests.disable_logging
|
29
|
+
Requests.logger.warn(@msg)
|
30
|
+
@log.seek(0)
|
31
|
+
expect(@log.read).to eq('')
|
32
|
+
end
|
33
|
+
|
34
|
+
it "enable_logging re-enables logging" do
|
35
|
+
Requests.disable_logging
|
36
|
+
Requests.enable_logging
|
37
|
+
Requests.logger.warn(@msg)
|
38
|
+
@log.seek(0)
|
39
|
+
expect(@log.read).to match(@msg)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require_relative '../spec_helper'
|
3
|
+
|
4
|
+
|
5
|
+
RSpec.describe Requests::Utils do
|
6
|
+
describe 'InsensitiveDict' do
|
7
|
+
let(:sample_values) {
|
8
|
+
{'KEY A' => 'value a',
|
9
|
+
'Key B' => 'Value B',
|
10
|
+
'test key' => 'test value'}
|
11
|
+
}
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@dict = Requests::Utils::InsensitiveDict.new
|
15
|
+
end
|
16
|
+
|
17
|
+
it "stores values" do
|
18
|
+
@dict['key'] = 'value'
|
19
|
+
expect(@dict['key']).to eq('value')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "keys are case-insensitive" do
|
23
|
+
@dict['Some-Key'] = "Some value"
|
24
|
+
expect(@dict['Some-Key']).to eq("Some value")
|
25
|
+
expect(@dict['some-key']).to eq("Some value")
|
26
|
+
expect(@dict['SOME-KEY']).to eq("Some value")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "keys must be strings" do
|
30
|
+
expect {
|
31
|
+
@dict[:key] = 'value'
|
32
|
+
}.to raise_error(TypeError)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "values get overwritten if different case" do
|
36
|
+
@dict['initial'] = 'first value'
|
37
|
+
@dict['INITIAL'] = 'second value'
|
38
|
+
expect(@dict['initial']).to eq('second value')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "merges another dict" do
|
42
|
+
orig_values = {
|
43
|
+
'Content-Type' => 'application/json',
|
44
|
+
'Accept-Encoding' => 'identity',
|
45
|
+
'Accept' => '*/*',
|
46
|
+
}
|
47
|
+
dict = Requests::Utils::InsensitiveDict.new(orig_values)
|
48
|
+
merged = dict.merge({'New-Header' => 'example',
|
49
|
+
'Content-Type' => 'text/plain'})
|
50
|
+
expect(merged['Content-Type']).to eq('text/plain')
|
51
|
+
expect(merged['Accept-Encoding']).to eq('identity')
|
52
|
+
expect(merged['Accept']).to eq('*/*')
|
53
|
+
expect(merged['New-Header']).to eq('example')
|
54
|
+
# make sure not mutated:
|
55
|
+
expect(dict).to eq(orig_values)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "merges another dict and mutates" do
|
59
|
+
orig_values = {
|
60
|
+
'Content-Type' => 'application/json',
|
61
|
+
'Accept-Encoding' => 'identity',
|
62
|
+
'Accept' => '*/*',
|
63
|
+
}
|
64
|
+
dict = Requests::Utils::InsensitiveDict.new(orig_values)
|
65
|
+
dict.merge!({'New-Header' => 'example',
|
66
|
+
'Content-Type' => 'text/plain'})
|
67
|
+
expect(dict['Content-Type']).to eq('text/plain')
|
68
|
+
expect(dict['Accept-Encoding']).to eq('identity')
|
69
|
+
expect(dict['Accept']).to eq('*/*')
|
70
|
+
expect(dict['New-Header']).to eq('example')
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "==" do
|
74
|
+
before(:each) do
|
75
|
+
@orig_values = sample_values
|
76
|
+
@dict.merge!(@orig_values)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "equal to InsensitiveDict" do
|
80
|
+
other_dict = Requests::Utils::InsensitiveDict.new(@orig_values)
|
81
|
+
expect(@dict).to eq(other_dict)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "not equal to InsensitiveDict" do
|
85
|
+
other_dict = Requests::Utils::InsensitiveDict
|
86
|
+
.new({'some other' => 'values'})
|
87
|
+
expect(@dict).not_to eq(other_dict)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "equal to hash" do
|
91
|
+
expect(@dict).to eq(@orig_values)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "not equal to hash" do
|
95
|
+
other_hash = {'some other' => 'values'}
|
96
|
+
expect(@dict).not_to eq(other_hash)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "not equal to hash with non-string keys" do
|
100
|
+
other_hash = {:symbol_key => 'value'}
|
101
|
+
expect(@dict).not_to eq(other_hash)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
it "delete deletes keys case-insensitive" do
|
106
|
+
@dict.merge!(sample_values)
|
107
|
+
@dict.delete('key a')
|
108
|
+
@dict.delete('key b')
|
109
|
+
expect(@dict).to eq({'test key' => 'test value'})
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-requests
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.a1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Hones
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-08-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: http-cookie
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.54.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.54.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.15'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.15'
|
69
|
+
description: A library for HTTP requests that aims to provide the same API as the
|
70
|
+
Requests library in Python
|
71
|
+
email:
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".gitlab-ci.yml"
|
78
|
+
- ".rubocop-disables.yml"
|
79
|
+
- ".rubocop.yml"
|
80
|
+
- Gemfile
|
81
|
+
- LICENSE
|
82
|
+
- Makefile
|
83
|
+
- README.md
|
84
|
+
- lib/requests.rb
|
85
|
+
- lib/requests/adapters.rb
|
86
|
+
- lib/requests/cookies.rb
|
87
|
+
- lib/requests/exceptions.rb
|
88
|
+
- lib/requests/http_methods.rb
|
89
|
+
- lib/requests/logger.rb
|
90
|
+
- lib/requests/request.rb
|
91
|
+
- lib/requests/response.rb
|
92
|
+
- lib/requests/session.rb
|
93
|
+
- lib/requests/utils.rb
|
94
|
+
- lib/requests/version.rb
|
95
|
+
- ruby-requests.gemspec
|
96
|
+
- spec/docker-compose.yml
|
97
|
+
- spec/docker_test_entrypoint.sh
|
98
|
+
- spec/docker_tests.sh
|
99
|
+
- spec/functional/proxies/proxies_spec.rb
|
100
|
+
- spec/functional/proxies/squid_conf/passwords
|
101
|
+
- spec/functional/proxies/squid_conf/squid.conf
|
102
|
+
- spec/functional/requests_spec.rb
|
103
|
+
- spec/functional/session_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
- spec/unit/api_spec.rb
|
106
|
+
- spec/unit/utils_spec.rb
|
107
|
+
homepage: https://gitlab.com/danielhones/ruby_requests
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.3.0
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.3.1
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.7.6
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: A Ruby version of the Requests library for Python
|
131
|
+
test_files: []
|