excon 0.62.0 → 0.79.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.md +1 -1
  3. data/README.md +5 -4
  4. data/data/cacert.pem +769 -1496
  5. data/excon.gemspec +17 -2
  6. data/lib/excon.rb +25 -17
  7. data/lib/excon/connection.rb +193 -119
  8. data/lib/excon/constants.rb +36 -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 +38 -21
  25. data/lib/excon/ssl_socket.rb +24 -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 +41 -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