faraday 0.15.4 → 0.17.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +232 -0
  3. data/README.md +15 -1
  4. data/Rakefile +13 -0
  5. data/lib/faraday/adapter/em_http.rb +9 -9
  6. data/lib/faraday/adapter/em_synchrony.rb +5 -5
  7. data/lib/faraday/adapter/excon.rb +3 -3
  8. data/lib/faraday/adapter/httpclient.rb +4 -4
  9. data/lib/faraday/adapter/net_http.rb +3 -2
  10. data/lib/faraday/adapter/net_http_persistent.rb +4 -4
  11. data/lib/faraday/adapter/patron.rb +5 -5
  12. data/lib/faraday/adapter/rack.rb +1 -1
  13. data/lib/faraday/deprecate.rb +109 -0
  14. data/lib/faraday/error.rb +127 -35
  15. data/lib/faraday/options.rb +3 -3
  16. data/lib/faraday/rack_builder.rb +2 -2
  17. data/lib/faraday/request/retry.rb +8 -5
  18. data/lib/faraday/request.rb +2 -0
  19. data/lib/faraday/response/raise_error.rb +7 -3
  20. data/lib/faraday/response.rb +3 -3
  21. data/lib/faraday/upload_io.rb +16 -6
  22. data/lib/faraday.rb +2 -3
  23. data/spec/faraday/deprecate_spec.rb +147 -0
  24. data/spec/faraday/error_spec.rb +102 -0
  25. data/spec/faraday/response/raise_error_spec.rb +106 -0
  26. data/spec/spec_helper.rb +105 -0
  27. data/test/adapters/default_test.rb +14 -0
  28. data/test/adapters/em_http_test.rb +30 -0
  29. data/test/adapters/em_synchrony_test.rb +32 -0
  30. data/test/adapters/excon_test.rb +30 -0
  31. data/test/adapters/httpclient_test.rb +34 -0
  32. data/test/adapters/integration.rb +263 -0
  33. data/test/adapters/logger_test.rb +136 -0
  34. data/test/adapters/net_http_persistent_test.rb +114 -0
  35. data/test/adapters/net_http_test.rb +79 -0
  36. data/test/adapters/patron_test.rb +40 -0
  37. data/test/adapters/rack_test.rb +38 -0
  38. data/test/adapters/test_middleware_test.rb +157 -0
  39. data/test/adapters/typhoeus_test.rb +38 -0
  40. data/test/authentication_middleware_test.rb +65 -0
  41. data/test/composite_read_io_test.rb +109 -0
  42. data/test/connection_test.rb +738 -0
  43. data/test/env_test.rb +268 -0
  44. data/test/helper.rb +75 -0
  45. data/test/live_server.rb +67 -0
  46. data/test/middleware/instrumentation_test.rb +88 -0
  47. data/test/middleware/retry_test.rb +282 -0
  48. data/test/middleware_stack_test.rb +260 -0
  49. data/test/multibyte.txt +1 -0
  50. data/test/options_test.rb +333 -0
  51. data/test/parameters_test.rb +157 -0
  52. data/test/request_middleware_test.rb +126 -0
  53. data/test/response_middleware_test.rb +72 -0
  54. data/test/strawberry.rb +2 -0
  55. data/test/utils_test.rb +98 -0
  56. metadata +48 -7
@@ -0,0 +1,109 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+ require 'stringio'
3
+
4
+ class CompositeReadIOTest < Faraday::TestCase
5
+ Part = Struct.new(:to_io) do
6
+ def length() to_io.string.length end
7
+ end
8
+
9
+ def part(str)
10
+ Part.new StringIO.new(str)
11
+ end
12
+
13
+ def composite_io(*parts)
14
+ Faraday::CompositeReadIO.new(*parts)
15
+ end
16
+
17
+ def test_empty
18
+ io = composite_io
19
+ assert_equal 0, io.length
20
+ assert_equal "", io.read
21
+ end
22
+
23
+ def test_empty_returns_nil_for_limited_read
24
+ assert_nil composite_io.read(1)
25
+ end
26
+
27
+ def test_empty_parts_returns_nil_for_limited_read
28
+ io = composite_io(part(""), part(""))
29
+ assert_nil io.read(1)
30
+ end
31
+
32
+ def test_multipart_read_all
33
+ io = composite_io(part("abcd"), part("1234"))
34
+ assert_equal 8, io.length
35
+ assert_equal "abcd1234", io.read
36
+ end
37
+
38
+ def test_multipart_read_limited
39
+ io = composite_io(part("abcd"), part("1234"))
40
+ assert_equal "abc", io.read(3)
41
+ assert_equal "d12", io.read(3)
42
+ assert_equal "34", io.read(3)
43
+ assert_nil io.read(3)
44
+ assert_nil io.read(3)
45
+ end
46
+
47
+ def test_multipart_read_limited_size_larger_than_part
48
+ io = composite_io(part("abcd"), part("1234"))
49
+ assert_equal "abcd12", io.read(6)
50
+ assert_equal "34", io.read(6)
51
+ assert_nil io.read(6)
52
+ end
53
+
54
+ def test_multipart_read_with_blank_parts
55
+ io = composite_io(part(""), part("abcd"), part(""), part("1234"), part(""))
56
+ assert_equal "abcd12", io.read(6)
57
+ assert_equal "34", io.read(6)
58
+ assert_nil io.read(6)
59
+ end
60
+
61
+ def test_multipart_rewind
62
+ io = composite_io(part("abcd"), part("1234"))
63
+ assert_equal "abc", io.read(3)
64
+ assert_equal "d12", io.read(3)
65
+ io.rewind
66
+ assert_equal "abc", io.read(3)
67
+ assert_equal "d1234", io.read(5)
68
+ assert_nil io.read(3)
69
+ io.rewind
70
+ assert_equal "ab", io.read(2)
71
+ end
72
+
73
+ # JRuby enforces types to copy_stream to be String or IO
74
+ if IO.respond_to?(:copy_stream) && !jruby?
75
+ def test_compatible_with_copy_stream
76
+ target_io = StringIO.new
77
+ def target_io.ensure_open_and_writable
78
+ # Rubinius compatibility
79
+ end
80
+ io = composite_io(part("abcd"), part("1234"))
81
+
82
+ Faraday::Timer.timeout(1) do
83
+ IO.copy_stream(io, target_io)
84
+ end
85
+ assert_equal "abcd1234", target_io.string
86
+ end
87
+ end
88
+
89
+ def test_read_from_multibyte
90
+ File.open(File.dirname(__FILE__) + '/multibyte.txt') do |utf8|
91
+ io = composite_io(part("\x86"), Part.new(utf8))
92
+ assert_equal bin("\x86\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\n"), io.read
93
+ end
94
+ end
95
+
96
+ def test_limited_from_multibyte
97
+ File.open(File.dirname(__FILE__) + '/multibyte.txt') do |utf8|
98
+ io = composite_io(part("\x86"), Part.new(utf8))
99
+ assert_equal bin("\x86\xE3\x83"), io.read(3)
100
+ assert_equal bin("\x95\xE3\x82"), io.read(3)
101
+ assert_equal bin("\xA1\xE3\x82\xA4\xE3\x83\xAB\n"), io.read(8)
102
+ end
103
+ end
104
+
105
+ def bin(str)
106
+ str.force_encoding("BINARY") if str.respond_to?(:force_encoding)
107
+ str
108
+ end
109
+ end