excon 0.62.0 → 0.85.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.
Files changed (121) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.md +1 -1
  3. data/README.md +6 -5
  4. data/data/cacert.pem +939 -1720
  5. data/excon.gemspec +17 -2
  6. data/lib/excon.rb +25 -17
  7. data/lib/excon/connection.rb +206 -139
  8. data/lib/excon/constants.rb +38 -13
  9. data/lib/excon/error.rb +15 -0
  10. data/lib/excon/headers.rb +4 -3
  11. data/lib/excon/instrumentors/logging_instrumentor.rb +4 -15
  12. data/lib/excon/instrumentors/standard_instrumentor.rb +2 -9
  13. data/lib/excon/middlewares/base.rb +6 -0
  14. data/lib/excon/middlewares/capture_cookies.rb +1 -1
  15. data/lib/excon/middlewares/decompress.rb +2 -2
  16. data/lib/excon/middlewares/expects.rb +7 -1
  17. data/lib/excon/middlewares/idempotent.rb +20 -3
  18. data/lib/excon/middlewares/instrumentor.rb +8 -0
  19. data/lib/excon/middlewares/mock.rb +12 -3
  20. data/lib/excon/middlewares/redirect_follower.rb +25 -3
  21. data/lib/excon/middlewares/response_parser.rb +3 -0
  22. data/lib/excon/pretty_printer.rb +1 -8
  23. data/lib/excon/response.rb +12 -9
  24. data/lib/excon/socket.rb +51 -33
  25. data/lib/excon/ssl_socket.rb +33 -13
  26. data/lib/excon/test/plugin/server/exec.rb +2 -2
  27. data/lib/excon/test/server.rb +1 -1
  28. data/lib/excon/unix_socket.rb +1 -0
  29. data/lib/excon/utils.rb +58 -5
  30. data/lib/excon/version.rb +1 -1
  31. metadata +27 -98
  32. data/.document +0 -5
  33. data/.gitignore +0 -13
  34. data/.rspec +0 -3
  35. data/.travis.yml +0 -29
  36. data/Gemfile +0 -19
  37. data/Rakefile +0 -41
  38. data/benchmarks/class_vs_lambda.rb +0 -50
  39. data/benchmarks/concat_vs_insert.rb +0 -21
  40. data/benchmarks/concat_vs_interpolate.rb +0 -22
  41. data/benchmarks/cr_lf.rb +0 -21
  42. data/benchmarks/downcase-eq-eq_vs_casecmp.rb +0 -169
  43. data/benchmarks/excon.rb +0 -69
  44. data/benchmarks/excon_vs.rb +0 -165
  45. data/benchmarks/for_vs_array_each.rb +0 -27
  46. data/benchmarks/for_vs_hash_each.rb +0 -27
  47. data/benchmarks/has_key-vs-lookup.rb +0 -177
  48. data/benchmarks/headers_case_sensitivity.rb +0 -83
  49. data/benchmarks/headers_split_vs_match.rb +0 -34
  50. data/benchmarks/implicit_block-vs-explicit_block.rb +0 -98
  51. data/benchmarks/merging.rb +0 -21
  52. data/benchmarks/single_vs_double_quotes.rb +0 -21
  53. data/benchmarks/string_ranged_index.rb +0 -87
  54. data/benchmarks/strip_newline.rb +0 -115
  55. data/benchmarks/vs_stdlib.rb +0 -82
  56. data/changelog.txt +0 -1083
  57. data/spec/excon/error_spec.rb +0 -139
  58. data/spec/excon/test/server_spec.rb +0 -28
  59. data/spec/excon_spec.rb +0 -7
  60. data/spec/helpers/file_path_helpers.rb +0 -22
  61. data/spec/requests/basic_spec.rb +0 -40
  62. data/spec/requests/eof_requests_spec.rb +0 -36
  63. data/spec/requests/unix_socket_spec.rb +0 -46
  64. data/spec/spec_helper.rb +0 -24
  65. data/spec/support/shared_contexts/test_server_context.rb +0 -83
  66. data/spec/support/shared_examples/shared_example_for_clients.rb +0 -218
  67. data/spec/support/shared_examples/shared_example_for_streaming_clients.rb +0 -20
  68. data/spec/support/shared_examples/shared_example_for_test_servers.rb +0 -16
  69. data/tests/authorization_header_tests.rb +0 -29
  70. data/tests/bad_tests.rb +0 -47
  71. data/tests/basic_tests.rb +0 -351
  72. data/tests/batch_requests.rb +0 -133
  73. data/tests/complete_responses.rb +0 -31
  74. data/tests/data/127.0.0.1.cert.crt +0 -20
  75. data/tests/data/127.0.0.1.cert.key +0 -27
  76. data/tests/data/excon.cert.crt +0 -20
  77. data/tests/data/excon.cert.key +0 -27
  78. data/tests/data/xs +0 -1
  79. data/tests/error_tests.rb +0 -145
  80. data/tests/header_tests.rb +0 -119
  81. data/tests/middlewares/canned_response_tests.rb +0 -34
  82. data/tests/middlewares/capture_cookies_tests.rb +0 -34
  83. data/tests/middlewares/decompress_tests.rb +0 -157
  84. data/tests/middlewares/escape_path_tests.rb +0 -36
  85. data/tests/middlewares/idempotent_tests.rb +0 -206
  86. data/tests/middlewares/instrumentation_tests.rb +0 -315
  87. data/tests/middlewares/mock_tests.rb +0 -304
  88. data/tests/middlewares/redirect_follower_tests.rb +0 -112
  89. data/tests/pipeline_tests.rb +0 -40
  90. data/tests/proxy_tests.rb +0 -306
  91. data/tests/query_string_tests.rb +0 -87
  92. data/tests/rackups/basic.rb +0 -41
  93. data/tests/rackups/basic.ru +0 -3
  94. data/tests/rackups/basic_auth.ru +0 -14
  95. data/tests/rackups/deflater.ru +0 -4
  96. data/tests/rackups/proxy.ru +0 -18
  97. data/tests/rackups/query_string.ru +0 -13
  98. data/tests/rackups/redirecting.ru +0 -23
  99. data/tests/rackups/redirecting_with_cookie.ru +0 -40
  100. data/tests/rackups/request_headers.ru +0 -15
  101. data/tests/rackups/request_methods.ru +0 -21
  102. data/tests/rackups/response_header.ru +0 -18
  103. data/tests/rackups/ssl.ru +0 -16
  104. data/tests/rackups/ssl_mismatched_cn.ru +0 -15
  105. data/tests/rackups/ssl_verify_peer.ru +0 -16
  106. data/tests/rackups/streaming.ru +0 -30
  107. data/tests/rackups/thread_safety.ru +0 -17
  108. data/tests/rackups/timeout.ru +0 -14
  109. data/tests/rackups/webrick_patch.rb +0 -34
  110. data/tests/request_headers_tests.rb +0 -21
  111. data/tests/request_method_tests.rb +0 -47
  112. data/tests/request_tests.rb +0 -59
  113. data/tests/response_tests.rb +0 -197
  114. data/tests/servers/bad.rb +0 -20
  115. data/tests/servers/eof.rb +0 -17
  116. data/tests/servers/error.rb +0 -20
  117. data/tests/servers/good.rb +0 -350
  118. data/tests/test_helper.rb +0 -306
  119. data/tests/thread_safety_tests.rb +0 -39
  120. data/tests/timeout_tests.rb +0 -12
  121. data/tests/utils_tests.rb +0 -81
@@ -1,133 +0,0 @@
1
- require 'shindo'
2
-
3
- Shindo.tests('Batch Requests') do
4
- with_server('good') do
5
- tests('with batch request size 2') do
6
- returns(%w{ 1 2 1 2 }, 'batch request size 2') do
7
- connection = Excon.new('http://127.0.0.1:9292')
8
-
9
- ret = []
10
- ret << connection.batch_requests([
11
- {:method => :get, :path => '/echo/request_count'},
12
- {:method => :get, :path => '/echo/request_count'},
13
- {:method => :get, :path => '/echo/request_count'},
14
- {:method => :get, :path => '/echo/request_count'}
15
- ], 2).map(&:body)
16
-
17
- ret.flatten
18
- end
19
- end
20
-
21
- tests('peristent with batch request size 2') do
22
- returns(%w{ 1 2 3 4 }, 'persistent batch request size 2') do
23
- connection = Excon.new('http://127.0.0.1:9292', :persistent => true)
24
-
25
- ret = []
26
- ret << connection.batch_requests([
27
- {:method => :get, :path => '/echo/request_count'},
28
- {:method => :get, :path => '/echo/request_count'},
29
- {:method => :get, :path => '/echo/request_count'},
30
- {:method => :get, :path => '/echo/request_count'}
31
- ], 2).map(&:body)
32
-
33
- ret.flatten
34
- end
35
- end
36
-
37
- tests('with batch request size 3') do
38
- returns(%w{ 1 2 3 1 }, 'batch request size 3') do
39
- connection = Excon.new('http://127.0.0.1:9292')
40
-
41
- ret = []
42
- ret << connection.batch_requests([
43
- {:method => :get, :path => '/echo/request_count'},
44
- {:method => :get, :path => '/echo/request_count'},
45
- {:method => :get, :path => '/echo/request_count'},
46
- {:method => :get, :path => '/echo/request_count'}
47
- ], 3).map(&:body)
48
-
49
- ret.flatten
50
- end
51
- end
52
-
53
- tests('persistent with batch request size 3') do
54
- returns(%w{ 1 2 3 4 }, 'persistent batch request size 3') do
55
- connection = Excon.new('http://127.0.0.1:9292', :persistent => true)
56
-
57
- ret = []
58
- ret << connection.batch_requests([
59
- {:method => :get, :path => '/echo/request_count'},
60
- {:method => :get, :path => '/echo/request_count'},
61
- {:method => :get, :path => '/echo/request_count'},
62
- {:method => :get, :path => '/echo/request_count'}
63
- ], 3).map(&:body)
64
-
65
- ret.flatten
66
- end
67
- end
68
-
69
- tests('with batch request size 4') do
70
- returns(%w{ 1 2 3 4 }, 'batch request size 4') do
71
- connection = Excon.new('http://127.0.0.1:9292')
72
-
73
- ret = []
74
- ret << connection.batch_requests([
75
- {:method => :get, :path => '/echo/request_count'},
76
- {:method => :get, :path => '/echo/request_count'},
77
- {:method => :get, :path => '/echo/request_count'},
78
- {:method => :get, :path => '/echo/request_count'}
79
- ], 4).map(&:body)
80
-
81
- ret.flatten
82
- end
83
- end
84
-
85
- tests('persistent with batch request size 4') do
86
- returns(%w{ 1 2 3 4 }, 'persistent batch request size 4') do
87
- connection = Excon.new('http://127.0.0.1:9292', :persistent => true)
88
-
89
- ret = []
90
- ret << connection.batch_requests([
91
- {:method => :get, :path => '/echo/request_count'},
92
- {:method => :get, :path => '/echo/request_count'},
93
- {:method => :get, :path => '/echo/request_count'},
94
- {:method => :get, :path => '/echo/request_count'}
95
- ], 4).map(&:body)
96
-
97
- ret.flatten
98
- end
99
- end
100
-
101
- tests('with batch request size 8') do
102
- returns(%w{ 1 2 3 4 }, 'batch request size 8') do
103
- connection = Excon.new('http://127.0.0.1:9292')
104
-
105
- ret = []
106
- ret << connection.batch_requests([
107
- {:method => :get, :path => '/echo/request_count'},
108
- {:method => :get, :path => '/echo/request_count'},
109
- {:method => :get, :path => '/echo/request_count'},
110
- {:method => :get, :path => '/echo/request_count'}
111
- ], 8).map(&:body)
112
-
113
- ret.flatten
114
- end
115
- end
116
-
117
- tests('persistent with batch request size 8') do
118
- returns(%w{ 1 2 3 4 }, 'persistent batch request size 8') do
119
- connection = Excon.new('http://127.0.0.1:9292', :persistent => true)
120
-
121
- ret = []
122
- ret << connection.batch_requests([
123
- {:method => :get, :path => '/echo/request_count'},
124
- {:method => :get, :path => '/echo/request_count'},
125
- {:method => :get, :path => '/echo/request_count'},
126
- {:method => :get, :path => '/echo/request_count'}
127
- ], 8).map(&:body)
128
-
129
- ret.flatten
130
- end
131
- end
132
- end
133
- end
@@ -1,31 +0,0 @@
1
- Shindo.tests('Excon Response Validation') do
2
- env_init
3
-
4
- with_server('good') do
5
- tests('good responses with complete headers') do
6
- 100.times do
7
- res = Excon.get('http://127.0.0.1:9292/chunked/simple')
8
- returns(true) { res.body == "hello world" }
9
- returns(true) { res.status_line == "HTTP/1.1 200 OK\r\n" }
10
- returns(true) { res.status == 200}
11
- returns(true) { res.reason_phrase == "OK" }
12
- returns(true) { res.remote_ip == "127.0.0.1" }
13
- end
14
- end
15
- end
16
-
17
- with_server('error') do
18
- tests('error responses with complete headers') do
19
- 100.times do
20
- res = Excon.get('http://127.0.0.1:9292/error/not_found')
21
- returns(true) { res.body == "server says not found" }
22
- returns(true) { res.status_line == "HTTP/1.1 404 Not Found\r\n" }
23
- returns(true) { res.status == 404}
24
- returns(true) { res.reason_phrase == "Not Found" }
25
- returns(true) { res.remote_ip == "127.0.0.1" }
26
- end
27
- end
28
- end
29
-
30
- env_restore
31
- end
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDUjCCAjqgAwIBAgIJAMw/PAoBSqk8MA0GCSqGSIb3DQEBCwUAMCQxEjAQBgNV
3
- BAMTCTEyNy4wLjAuMTEOMAwGA1UEChMFZXhjb24wHhcNMTcwOTA1MTk0MzMwWhcN
4
- MTgwOTA1MTk0MzMwWjAkMRIwEAYDVQQDEwkxMjcuMC4wLjExDjAMBgNVBAoTBWV4
5
- Y29uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/PbsbAxwowMioOR4
6
- UGR/tDF4ul6TZSKtiYxYqe+xEhlgLzS7/9mQibkJAz2EKNNd+DR8XnkvB84WNWyL
7
- DNeq1de3vZCgmN9W1oddoxbhNGKLSN6KmBxANaJzpbYHBHKJhErqGYeBoBf135UF
8
- 2hVh7oU9n4P5ozdnjpx3IlNh6coDwNmuGkpfGftL2UbOZOBuXM7E0mtOlTUTg3OF
9
- tvITBcXf1iFNcLI9KrtEkvVsC3iHEis83y0V4sPSPxl+UYJI44XowjIQ9hxs2616
10
- GvITep2m/ydTnjwu/wn5OSnyNNRV+jEYzDfCSQ7MZxoLDm05RVRZJY1hJwizaP7N
11
- a2pNuQIDAQABo4GGMIGDMB0GA1UdDgQWBBRdlYAjIjj58kiqr2bDwUxdsIPgMzBU
12
- BgNVHSMETTBLgBRdlYAjIjj58kiqr2bDwUxdsIPgM6EopCYwJDESMBAGA1UEAxMJ
13
- MTI3LjAuMC4xMQ4wDAYDVQQKEwVleGNvboIJAMw/PAoBSqk8MAwGA1UdEwQFMAMB
14
- Af8wDQYJKoZIhvcNAQELBQADggEBAIN1e6jRgMI/PD/F5nMgZJZ5Zv9hPu8ID1v3
15
- Efy7hkNS7KXWLXLRbw9HVBscrNGDmX2l0oqx6WSjn6n8yFFMlI+zWAUZjuF+8PjC
16
- fa/eFa3UPq8nPqhO6sQrB2ZlPX6ydW1yD4gNflJLhzmNehgytK2FnZabH0jytot2
17
- eaZl32yLu/7SmNEpyYNUWurkyB7tk77+7AiBQ9R4HCPWcrfdKic+XN5YNE5cZ+mm
18
- YrHGxdS+5U848N6Qtj3B7fTuDn1K/WfpWKtR/RpP6k71eEZi7rufEuutcjPcUpwr
19
- NzbvNobphr9vjCv9tbZgoAmKyBKOkLfj1gfv3HEPbFKOEYGZyBI=
20
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpgIBAAKCAQEA/PbsbAxwowMioOR4UGR/tDF4ul6TZSKtiYxYqe+xEhlgLzS7
3
- /9mQibkJAz2EKNNd+DR8XnkvB84WNWyLDNeq1de3vZCgmN9W1oddoxbhNGKLSN6K
4
- mBxANaJzpbYHBHKJhErqGYeBoBf135UF2hVh7oU9n4P5ozdnjpx3IlNh6coDwNmu
5
- GkpfGftL2UbOZOBuXM7E0mtOlTUTg3OFtvITBcXf1iFNcLI9KrtEkvVsC3iHEis8
6
- 3y0V4sPSPxl+UYJI44XowjIQ9hxs2616GvITep2m/ydTnjwu/wn5OSnyNNRV+jEY
7
- zDfCSQ7MZxoLDm05RVRZJY1hJwizaP7Na2pNuQIDAQABAoIBAQCFqd+Q1B3sNKrm
8
- gvKD4CaOSxm0uGZ/qQwzQuJSoOFaY+gr6VxxOz+hVhFKEgY0IENl9C3HKZdNM3sO
9
- rZTnq0mMhtiCpNoHDPPwlURH+b3zlSJt1ZE8AKl47abX58/bbL33FjKOXMiElESJ
10
- 6E9YRbYid2rxT6XntU3V0B0vGQoConvcGN+6jtTvZInTLU+tuQTfw/GpB7AJcTej
11
- I2/gWx1lQurfv5iGcOqwPOoLN7qMWGsXbFxEFgmD1VN3AiCPV/A+gq8xf2wccws9
12
- dNwqz1sbphbR1nl0gUwWP3PRQa31RqgOsGLj2EFtBqZio8zzyNN6WLbVSMZfiDUi
13
- NIplFH6BAoGBAP/S5VKYkHCBJ+2QC9v42Bb8Ip6QC1oh+Sdm5geZuB72+xIWa6+1
14
- 7Vw6DW+wDvEEDRICcl38iI60hq+H3TZRa35daDlUXEy66HNWwCxA//l+48Jvcx0x
15
- 03qQDeB3PZqewsbey+aL23Tli8Kl2g9njzjUgi7tSbTEwWTlmNdElTnRAoGBAP0j
16
- hguvZNitFd0ScyHUr2VduWEPgsYVHcvzbUZ+UGga0zr2gfYwkVBiF7MZ2BqGWg0/
17
- ZNzmmlgLyk2sBhqN5B/8qjyJ3uvolstkj6vuwIyXa9Z4tAhy4SBtvwaLT19ZS+Y6
18
- EGnC1vdsyBypwxoet+uVs5KkFOUt6YD8upSq6udpAoGBAPLKPqYy8PI1QaWuzfKI
19
- qty1kk2WO4/hKkuA1tNjymBo2kOCT9VE/e5HkjTrjGKlC5qKA+y7HQcCwciZUxKY
20
- F0Kod5/hNnAD+1Rrgpr9XXJ2QMZpa4DLpv9s9B6STD8QaZ7AGBfHqBG7QPcM3HU+
21
- Pakb1imfPhJ3oWuWk4XKKy3hAoGBAOh7YJeIvOiWhhbj4+M1LuS8oA15LlR3fkca
22
- SMjOJ1CFGmvzi0YsMrkNbdCqMqOhskCqcRrDmwqzwVd2XqCyocmSxlIVGSu2EA+6
23
- SozQF/zG8F4nushroUCkKiV7eikKnL9TolFPhRf1yw8wBiQOBEIT2bkagqo8cVBq
24
- S31QP67JAoGBALWqrYJlU4SPW0uKAjRxHguUIyK1G1ezQjHq6kPaC2pnUkcReABZ
25
- KHKx+ZKkdO+y0itpTcxx1wKq7Uf8NH2rc2QWXNGeJajgt6V10dZbz6K6cVxeP+KV
26
- XqAxKDMfbUjqZqCBsEY+FOKoIMiCTqjvy9NIFDuvXT7Bs24FlQkjQPG8
27
- -----END RSA PRIVATE KEY-----
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDRTCCAi2gAwIBAgIJAMaDk10V/YquMA0GCSqGSIb3DQEBCwUAMCAxDjAMBgNV
3
- BAMTBWV4Y29uMQ4wDAYDVQQKEwVleGNvbjAeFw0xNzA5MDUxOTQzMzBaFw0xODA5
4
- MDUxOTQzMzBaMCAxDjAMBgNVBAMTBWV4Y29uMQ4wDAYDVQQKEwVleGNvbjCCASIw
5
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMWedu1HHibgTE5vxcA826vtlgDM
6
- KEYN7NPSkhH+ZjDz/nWZ7Y7DcDcNIsW3Nd53PsUGwva6FnBk0j/2GAwm+QO4bjHo
7
- UzB2O4rkePsrhrAOtGq9uINKmcAS0y9Ptl/ZTv1QsKUi4lKjDoalyHV8mEohpWNl
8
- 9uWO0aN+Q2KNd4p0SHmlNGAZk9BiiRvPJJqenZ2D51MbJdH5O3N9FhLnwIK6eVaU
9
- R/a3lf5hdkyGYi39zpGx47VG/6q9is1t+WXBWaaLdU0omDhlH281kq+HaV3akG6k
10
- Kh70xFGXU9Ya7qwR+PA+WkGJO6z88qwESRpGZfSSBklpM0+qIbYOP7Zb9PMCAwEA
11
- AaOBgTB/MB0GA1UdDgQWBBTMRFBCu23CeR4YBGR9+2h2b6xqODBQBgNVHSMESTBH
12
- gBTMRFBCu23CeR4YBGR9+2h2b6xqOKEkpCIwIDEOMAwGA1UEAxMFZXhjb24xDjAM
13
- BgNVBAoTBWV4Y29uggkAxoOTXRX9iq4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
14
- AQsFAAOCAQEAWU6Q11wZFK6GhYK85IkW90FHug8/13DRJ3Q041ttQEpR48DW1lgj
15
- 5861hzKkYfyudJhk97WEnx2pzsZSogbiGv/jMT1otKk8RqQG/sQy/bqoTVZEg7I2
16
- FyPCMV4fPFCm2dL7NTh51q0xeb9QFkxNFQ7YGtAvPSxs+GM/8gLxs4pSPMLSCNxX
17
- 0r6Lvook0ur+WXalGLu8110bCa4k+00SlZg0qZISlfrZyF5ofybylMjyy/qArgUy
18
- 8eltHfWbPhJEqf1yDPz2xCYGGCSplJMpvAhvSf4GSM55B27AoPlYlaS5wEaJf8Ft
19
- g72ESuzICOQ617jOTeasIkkkoINIdnW1oA==
20
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAxZ527UceJuBMTm/FwDzbq+2WAMwoRg3s09KSEf5mMPP+dZnt
3
- jsNwNw0ixbc13nc+xQbC9roWcGTSP/YYDCb5A7huMehTMHY7iuR4+yuGsA60ar24
4
- g0qZwBLTL0+2X9lO/VCwpSLiUqMOhqXIdXyYSiGlY2X25Y7Ro35DYo13inRIeaU0
5
- YBmT0GKJG88kmp6dnYPnUxsl0fk7c30WEufAgrp5VpRH9reV/mF2TIZiLf3OkbHj
6
- tUb/qr2KzW35ZcFZpot1TSiYOGUfbzWSr4dpXdqQbqQqHvTEUZdT1hrurBH48D5a
7
- QYk7rPzyrARJGkZl9JIGSWkzT6ohtg4/tlv08wIDAQABAoIBABpFHnocYh2442vp
8
- 39fWPz1zr+UbPp9RapIeA9zwfJU1WjY36CR6RoiK7nxqBnc0UtvOMkyqICGAxZJL
9
- HJdA9wlPkxZ/U8+1Z+Tmyk5ZUuZEjidCYSzS1e16kyhO6GeFc8Ko31KUeJGTq3Kq
10
- xyMXFQeFwX6dJ10Mx0F8n2iSdbmpz6Sfz+L8RwUjlbi3m1iveeMqTk0V8ChTDluC
11
- RWLoUUAqOaV3YpaV4pHmpRJ9uMLbyC72t6JnbLdi5d/EY5vGmMDgsKg/pqW8omFO
12
- 8kWo5riLncUyvEwSPoUyY12WWc3CnroacEJ7GoibuZYZwntwot+cWOkIZmnCbj+H
13
- OiBcDoECgYEA8ZgQmdlxQ5Fwe9sadDA3SYi2V/6bQNQkw54xkfsWd/PijIunVJI8
14
- cj/hVnbZL487DnJAXsLLygw048fSGwFZXmNbQUiXZaEIpa4t9DkgouGPvvuBp6TI
15
- uIjUF4aRKA4a3+MT4SNm74qXx8co5YXnE09KIMswZQ1YHjwIzV0ggJsCgYEA0Wce
16
- 7poL7Xiyu1G1vr8vEbYtqelqHP28SzXkwrTqyOV8MPlw0/OhMDWmPLdE9mxSDwdD
17
- QAlPvvCWXhHEM/St5tN72mzuyodHjNsVnlPAckj6ADTTAmUO0fixHjivZ/6v+PEo
18
- SbjzmsbEExjyLKdScW8ALq3nfCdC9+Z3aTFShokCgYBbmz9gNtT9u94c+J11RPsR
19
- xObvQrl3wXkXO5qsMbr5TN6wUBvos3J8F8DH2lTL9dF8ztGdnNtNB4feftwqJT7P
20
- zXjCrlXJ0V/IAt2l5yt613B8CD3HZXI+lpNlQD82IvMJxb659YSIe9LFi7z0Guvd
21
- pIkFGkaFaqPpAvaLeC5k1QKBgGTqrZ2P3++yG3DrEAu9V5HRmnAobVtLbVNRxc2Q
22
- IxZugkuX6yg6YZQ6RsM8D6Ay09kqRt61nhkHGXB8X3IqmSSFB0tc9DfmujTH4MNM
23
- 2ZI6WUGAM7ETwvCuSa2m4+HafDQdBK2C1OPiptwNSaj7el/wfsYASW8r/Lo795Ba
24
- lMsBAoGBAO8fKeu1cSrgNBG5Bafa5P2uPK1X9GASA1zgG6ay3FGH9m/vt36/DcRq
25
- LQQP1WJUH8AR9/jlUgpS134Ww0AFVVh/ZHZTFnVkS8mn6wzFehxt49uVVcJncRzB
26
- Vnes1S/Zky0RgvfR4rWy9NCYkIkqYAQPacfElxpGItV7V2INKFol
27
- -----END RSA PRIVATE KEY-----
data/tests/data/xs DELETED
@@ -1 +0,0 @@
1
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
data/tests/error_tests.rb DELETED
@@ -1,145 +0,0 @@
1
-
2
-
3
- Shindo.tests('HTTPStatusError request/response debugging') do
4
-
5
- # Regression against e300458f2d9330cb265baeb8973120d08c665d9
6
- tests('Excon::Error knows about pertinent errors') do
7
- expected = [
8
- 100,
9
- 101,
10
- (200..206).to_a,
11
- (300..307).to_a,
12
- (400..417).to_a,
13
- 422,
14
- 429,
15
- (500..504).to_a
16
- ]
17
- expected.flatten == Excon::Error.status_errors.keys
18
- end
19
-
20
- tests('new returns an Error').returns(true) do
21
- Excon::Error.new('bar').class == Excon::Error
22
- end
23
-
24
- tests('new raises errors for bad URIs').returns(true) do
25
- begin
26
- Excon.new('foo')
27
- false
28
- rescue => err
29
- err.to_s.include? 'foo'
30
- end
31
- end
32
-
33
- tests('new raises errors for bad paths').returns(true) do
34
- begin
35
- Excon.new('http://localhost', path: "foo\r\nbar: baz")
36
- false
37
- rescue => err
38
- err.to_s.include? "foo\r\nbar: baz"
39
- end
40
- end
41
-
42
- tests('can raise standard error and catch standard error').returns(true) do
43
- begin
44
- raise Excon::Error::Client.new('foo')
45
- rescue Excon::Error => e
46
- true
47
- end
48
- end
49
-
50
- tests('can raise legacy errors and catch legacy errors').returns(true) do
51
- begin
52
- raise Excon::Errors::Error.new('bar')
53
- rescue Excon::Errors::Error => e
54
- true
55
- end
56
- end
57
-
58
- tests('can raise standard error and catch legacy errors').returns(true) do
59
- begin
60
- raise Excon::Error::NotFound.new('bar')
61
- rescue Excon::Errors::Error => e
62
- true
63
- end
64
- end
65
-
66
- tests('can raise with status_error() and catch with standard error').returns(true) do
67
- begin
68
- raise Excon::Error.status_error({expects: 200}, {status: 400})
69
- rescue Excon::Error
70
- true
71
- end
72
- end
73
-
74
-
75
- tests('can raise with status_error() and catch with legacy error').returns(true) do
76
- begin
77
- raise Excon::Error.status_error({expects: 200}, {status: 400})
78
- rescue Excon::Errors::BadRequest
79
- true
80
- end
81
- end
82
-
83
- tests('can raise with legacy status_error() and catch with legacy').returns(true) do
84
- begin
85
- raise Excon::Errors.status_error({expects: 200}, {status: 400})
86
- rescue Excon::Errors::BadRequest
87
- true
88
- end
89
- end
90
-
91
-
92
- tests('can raise with legacy status_error() and catch with standard').returns(true) do
93
- begin
94
- raise Excon::Errors.status_error({expects: 200}, {status: 400})
95
- rescue Excon::Error
96
- true
97
- end
98
- end
99
-
100
- with_server('error') do
101
-
102
- tests('message does not include response or response info').returns(true) do
103
- begin
104
- Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200)
105
- rescue Excon::Errors::HTTPStatusError => err
106
- err.message.include?('Expected(200) <=> Actual(404 Not Found)') &&
107
- !err.message.include?('excon.error.request') &&
108
- !err.message.include?('excon.error.response')
109
- end
110
- end
111
-
112
- tests('message includes only request info').returns(true) do
113
- begin
114
- Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200,
115
- :debug_request => true)
116
- rescue Excon::Errors::HTTPStatusError => err
117
- err.message.include?('Expected(200) <=> Actual(404 Not Found)') &&
118
- err.message.include?('excon.error.request') &&
119
- !err.message.include?('excon.error.response')
120
- end
121
- end
122
-
123
- tests('message includes only response info').returns(true) do
124
- begin
125
- Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200,
126
- :debug_response => true)
127
- rescue Excon::Errors::HTTPStatusError => err
128
- err.message.include?('Expected(200) <=> Actual(404 Not Found)') &&
129
- !err.message.include?('excon.error.request') &&
130
- err.message.include?('excon.error.response')
131
- end
132
- end
133
-
134
- tests('message include request and response info').returns(true) do
135
- begin
136
- Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200,
137
- :debug_request => true, :debug_response => true)
138
- rescue Excon::Errors::HTTPStatusError => err
139
- err.message.include?('Expected(200) <=> Actual(404 Not Found)') &&
140
- err.message.include?('excon.error.request') &&
141
- err.message.include?('excon.error.response')
142
- end
143
- end
144
- end
145
- end
@@ -1,119 +0,0 @@
1
- Shindo.tests('Excon response header support') do
2
- env_init
3
-
4
- tests('Excon::Headers storage') do
5
- headers = Excon::Headers.new
6
- headers['Exact-Case'] = 'expected'
7
- headers['Another-Fixture'] = 'another'
8
-
9
- tests('stores and retrieves as received').returns('expected') do
10
- headers['Exact-Case']
11
- end
12
-
13
- tests('enumerates keys as received') do
14
- ks = headers.keys
15
- tests('contains Exact-Case').returns(true) { ks.include? 'Exact-Case' }
16
- tests('contains Another-Fixture').returns(true) { ks.include? 'Another-Fixture' }
17
- end
18
-
19
- tests('supports case-insensitive access').returns('expected') do
20
- headers['EXACT-CASE']
21
- end
22
-
23
- tests('but still returns nil for missing keys').returns(nil) do
24
- headers['Missing-Header']
25
- end
26
-
27
- tests('Hash methods that should support case-insensitive access') do
28
- if {}.respond_to? :assoc
29
- tests('#assoc').returns(%w{exact-case expected}) do
30
- headers.assoc('exact-Case')
31
- end
32
- end
33
-
34
- tests('#delete') do
35
- tests('with just a key').returns('yes') do
36
- headers['Extra'] = 'yes'
37
- headers.delete('extra')
38
- end
39
-
40
- tests('with a proc').returns('called with notpresent') do
41
- headers.delete('notpresent') { |k| "called with #{k}" }
42
- end
43
- end
44
-
45
- tests('#fetch') do
46
- tests('when present').returns('expected') { headers.fetch('exact-CASE') }
47
- tests('with a default value').returns('default') { headers.fetch('missing', 'default') }
48
- tests('with a default proc').returns('got missing') do
49
- headers.fetch('missing') { |k| "got #{k}" }
50
- end
51
- end
52
-
53
- tests('#has_key?') do
54
- tests('when present').returns(true) { headers.has_key?('EXACT-case') }
55
- tests('when absent').returns(false) { headers.has_key?('missing') }
56
- end
57
-
58
- tests('#values_at') do
59
- tests('all present').returns(%w{expected another}) do
60
- headers.values_at('exACT-cASE', 'anotheR-fixturE')
61
- end
62
- tests('some missing').returns(['expected', nil]) do
63
- headers.values_at('exact-case', 'missing-header')
64
- end
65
- end
66
- end
67
- end
68
-
69
- with_rackup('response_header.ru') do
70
-
71
- tests('Response#get_header') do
72
- connection = nil
73
- response = nil
74
-
75
- tests('with variable header capitalization') do
76
-
77
- tests('response.get_header("mixedcase-header")').returns('MixedCase') do
78
- connection = Excon.new('http://foo.com:8080', :proxy => 'http://127.0.0.1:9292')
79
- response = connection.request(:method => :get, :path => '/foo')
80
-
81
- response.get_header("mixedcase-header")
82
- end
83
-
84
- tests('response.get_header("uppercase-header")').returns('UPPERCASE') do
85
- response.get_header("uppercase-header")
86
- end
87
-
88
- tests('response.get_header("lowercase-header")').returns('lowercase') do
89
- response.get_header("lowercase-header")
90
- end
91
-
92
- end
93
-
94
- tests('when provided key capitalization varies') do
95
-
96
- tests('response.get_header("MIXEDCASE-HEADER")').returns('MixedCase') do
97
- response.get_header("MIXEDCASE-HEADER")
98
- end
99
-
100
- tests('response.get_header("MiXeDcAsE-hEaDeR")').returns('MixedCase') do
101
- response.get_header("MiXeDcAsE-hEaDeR")
102
- end
103
-
104
- end
105
-
106
- tests('when header is unavailable') do
107
-
108
- tests('response.get_header("missing")').returns(nil) do
109
- response.get_header("missing")
110
- end
111
-
112
- end
113
-
114
- end
115
-
116
- end
117
-
118
- env_restore
119
- end