ruby-requests 0.0.1.a1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []