PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/bundle/ruby/1.8/gems/faraday-0.4.6/test/connection_test.rb

https://github.com/obskein/Friendtersection
Ruby | 279 lines | 237 code | 42 blank | 0 comment | 0 complexity | 105006f0b5a7e8117cca29336bf87dc5 MD5 | raw file
  1. require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
  2. class TestConnection < Faraday::TestCase
  3. def test_initialize_parses_host_out_of_given_url
  4. conn = Faraday::Connection.new "http://sushi.com"
  5. assert_equal 'sushi.com', conn.host
  6. end
  7. def test_initialize_parses_nil_port_out_of_given_url
  8. conn = Faraday::Connection.new "http://sushi.com"
  9. assert_nil conn.port
  10. end
  11. def test_initialize_parses_scheme_out_of_given_url
  12. conn = Faraday::Connection.new "http://sushi.com"
  13. assert_equal 'http', conn.scheme
  14. end
  15. def test_initialize_parses_port_out_of_given_url
  16. conn = Faraday::Connection.new "http://sushi.com:815"
  17. assert_equal 815, conn.port
  18. end
  19. def test_initialize_parses_nil_path_prefix_out_of_given_url
  20. conn = Faraday::Connection.new "http://sushi.com"
  21. assert_equal '/', conn.path_prefix
  22. end
  23. def test_initialize_parses_path_prefix_out_of_given_url
  24. conn = Faraday::Connection.new "http://sushi.com/fish"
  25. assert_equal '/fish', conn.path_prefix
  26. end
  27. def test_initialize_parses_path_prefix_out_of_given_url_option
  28. conn = Faraday::Connection.new :url => "http://sushi.com/fish"
  29. assert_equal '/fish', conn.path_prefix
  30. end
  31. def test_initialize_stores_default_params_from_options
  32. conn = Faraday::Connection.new :params => {:a => 1}
  33. assert_equal 1, conn.params['a']
  34. end
  35. def test_initialize_stores_default_params_from_uri
  36. conn = Faraday::Connection.new "http://sushi.com/fish?a=1", :params => {'b' => '2'}
  37. assert_equal '1', conn.params['a']
  38. assert_equal '2', conn.params['b']
  39. end
  40. def test_initialize_stores_default_headers_from_options
  41. conn = Faraday::Connection.new :headers => {:a => 1}
  42. assert_equal '1', conn.headers['A']
  43. end
  44. def test_basic_auth_sets_authorization_header
  45. conn = Faraday::Connection.new
  46. conn.basic_auth 'Aladdin', 'open sesame'
  47. assert_equal 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==', conn.headers['Authorization']
  48. end
  49. def test_token_auth_sets_authorization_header
  50. conn = Faraday::Connection.new
  51. conn.token_auth 'abcdef'
  52. assert_equal 'Token token="abcdef"', conn.headers['Authorization']
  53. end
  54. def test_token_auth_with_options_sets_authorization_header
  55. conn = Faraday::Connection.new
  56. conn.token_auth 'abcdef', :nonce => 'abc'
  57. assert_equal 'Token token="abcdef",
  58. nonce="abc"', conn.headers['Authorization']
  59. end
  60. def test_build_url_uses_connection_host_as_default_uri_host
  61. conn = Faraday::Connection.new
  62. conn.host = 'sushi.com'
  63. uri = conn.build_url("/sake.html")
  64. assert_equal 'sushi.com', uri.host
  65. end
  66. def test_build_url_uses_connection_port_as_default_uri_port
  67. conn = Faraday::Connection.new
  68. conn.port = 23
  69. uri = conn.build_url("http://sushi.com")
  70. assert_equal 23, uri.port
  71. end
  72. def test_build_url_uses_connection_scheme_as_default_uri_scheme
  73. conn = Faraday::Connection.new 'http://sushi.com'
  74. uri = conn.build_url("/sake.html")
  75. assert_equal 'http', uri.scheme
  76. end
  77. def test_build_url_uses_connection_path_prefix_to_customize_path
  78. conn = Faraday::Connection.new
  79. conn.path_prefix = '/fish'
  80. uri = conn.build_url("sake.html")
  81. assert_equal '/fish/sake.html', uri.path
  82. end
  83. def test_build_url_uses_root_connection_path_prefix_to_customize_path
  84. conn = Faraday::Connection.new
  85. conn.path_prefix = '/'
  86. uri = conn.build_url("sake.html")
  87. assert_equal '/sake.html', uri.path
  88. end
  89. def test_build_url_forces_connection_path_prefix_to_be_absolute
  90. conn = Faraday::Connection.new
  91. conn.path_prefix = 'fish'
  92. uri = conn.build_url("sake.html")
  93. assert_equal '/fish/sake.html', uri.path
  94. end
  95. def test_build_url_ignores_connection_path_prefix_trailing_slash
  96. conn = Faraday::Connection.new
  97. conn.path_prefix = '/fish/'
  98. uri = conn.build_url("sake.html")
  99. assert_equal '/fish/sake.html', uri.path
  100. end
  101. def test_build_url_allows_absolute_uri_to_ignore_connection_path_prefix
  102. conn = Faraday::Connection.new
  103. conn.path_prefix = '/fish'
  104. uri = conn.build_url("/sake.html")
  105. assert_equal '/sake.html', uri.path
  106. end
  107. def test_build_url_parses_url_params_into_path
  108. conn = Faraday::Connection.new
  109. uri = conn.build_url("http://sushi.com/sake.html")
  110. assert_equal '/sake.html', uri.path
  111. end
  112. def test_build_url_parses_url_params_into_query
  113. conn = Faraday::Connection.new
  114. uri = conn.build_url("http://sushi.com/sake.html", 'a[b]' => '1 + 2')
  115. assert_equal "a%5Bb%5D=1%20%2B%202", uri.query
  116. end
  117. def test_build_url_mashes_default_and_given_params_together
  118. conn = Faraday::Connection.new 'http://sushi.com/api?token=abc', :params => {'format' => 'json'}
  119. url = conn.build_url("nigiri?page=1", :limit => 5)
  120. assert_match /limit=5/, url.query
  121. assert_match /page=1/, url.query
  122. assert_match /format=json/, url.query
  123. assert_match /token=abc/, url.query
  124. end
  125. def test_build_url_overrides_default_params_with_given_params
  126. conn = Faraday::Connection.new 'http://sushi.com/api?token=abc', :params => {'format' => 'json'}
  127. url = conn.build_url("nigiri?page=1", :limit => 5, :token => 'def', :format => 'xml')
  128. assert_match /limit=5/, url.query
  129. assert_match /page=1/, url.query
  130. assert_match /format=xml/, url.query
  131. assert_match /token=def/, url.query
  132. assert_no_match /format=json/, url.query
  133. assert_no_match /token=abc/, url.query
  134. end
  135. def test_build_url_parses_url
  136. conn = Faraday::Connection.new
  137. uri = conn.build_url("http://sushi.com/sake.html")
  138. assert_equal "http", uri.scheme
  139. assert_equal "sushi.com", uri.host
  140. assert_equal '/sake.html', uri.path
  141. assert_nil uri.port
  142. end
  143. def test_build_url_parses_url_and_changes_scheme
  144. conn = Faraday::Connection.new :url => "http://sushi.com/sushi"
  145. conn.scheme = 'https'
  146. uri = conn.build_url("sake.html")
  147. assert_equal 'https://sushi.com/sushi/sake.html', uri.to_s
  148. end
  149. def test_proxy_accepts_string
  150. conn = Faraday::Connection.new
  151. conn.proxy 'http://proxy.com'
  152. assert_equal 'proxy.com', conn.proxy.host
  153. end
  154. def test_proxy_accepts_string
  155. conn = Faraday::Connection.new
  156. conn.proxy 'http://proxy.com'
  157. assert_equal 'proxy.com', conn.proxy[:uri].host
  158. assert_equal [:uri], conn.proxy.keys
  159. end
  160. def test_proxy_accepts_uri
  161. conn = Faraday::Connection.new
  162. conn.proxy Addressable::URI.parse('http://proxy.com')
  163. assert_equal 'proxy.com', conn.proxy[:uri].host
  164. assert_equal [:uri], conn.proxy.keys
  165. end
  166. def test_proxy_accepts_hash_with_string_uri
  167. conn = Faraday::Connection.new
  168. conn.proxy :uri => 'http://proxy.com', :user => 'rick'
  169. assert_equal 'proxy.com', conn.proxy[:uri].host
  170. assert_equal 'rick', conn.proxy[:user]
  171. end
  172. def test_proxy_accepts_hash
  173. conn = Faraday::Connection.new
  174. conn.proxy :uri => Addressable::URI.parse('http://proxy.com'), :user => 'rick'
  175. assert_equal 'proxy.com', conn.proxy[:uri].host
  176. assert_equal 'rick', conn.proxy[:user]
  177. end
  178. def test_proxy_requires_uri
  179. conn = Faraday::Connection.new
  180. assert_raises ArgumentError do
  181. conn.proxy :uri => :bad_uri, :user => 'rick'
  182. end
  183. end
  184. def test_params_to_query_converts_hash_of_params_to_uri_escaped_query_string
  185. conn = Faraday::Connection.new
  186. class << conn
  187. public :build_query
  188. end
  189. assert_equal "a%5Bb%5D=1%20%2B%202", conn.build_query('a[b]' => '1 + 2')
  190. end
  191. def test_dups_connection_object
  192. conn = Faraday::Connection.new 'http://sushi.com/foo' do |b|
  193. b.adapter :net_http
  194. end
  195. conn.headers['content-type'] = 'text/plain'
  196. conn.params['a'] = '1'
  197. duped = conn.dup
  198. assert_equal conn.build_url(''), duped.build_url('')
  199. [:headers, :params, :builder].each do |attr|
  200. assert_equal conn.send(attr), duped.send(attr)
  201. assert_not_equal conn.send(attr).object_id, duped.send(attr).object_id
  202. end
  203. end
  204. def test_allows_rebuilding_of_connection_handlers
  205. conn = Faraday::Connection.new
  206. conn.to_app
  207. inner = conn.builder.handlers[0]
  208. mware = conn.builder.handlers[1].call({})
  209. assert_kind_of Faraday::Adapter::NetHttp, mware
  210. conn.build do |b|
  211. b.adapter :test
  212. end
  213. mware = conn.builder.handlers[1].call({})
  214. assert_kind_of Faraday::Adapter::Test, mware
  215. assert_equal inner, conn.builder.handlers[0]
  216. end
  217. def test_allows_extending_of_existing_connection_handlers
  218. conn = Faraday::Connection.new
  219. conn.to_app
  220. mware = conn.builder.handlers[1].call({})
  221. assert_kind_of Faraday::Adapter::NetHttp, mware
  222. assert_equal 2, conn.builder.handlers.size
  223. conn.build :keep => true do |b|
  224. b.adapter :test
  225. end
  226. mware = conn.builder.handlers[1].call({})
  227. assert_kind_of Faraday::Adapter::Test, mware
  228. assert_equal 3, conn.builder.handlers.size
  229. end
  230. def test_sets_default_adapter_if_none_set
  231. conn = Faraday::Connection.new
  232. assert_equal 0, conn.builder.handlers.size
  233. app = conn.to_app
  234. mware = conn.builder.handlers[1].call({})
  235. assert_kind_of Faraday::Adapter::NetHttp, mware
  236. end
  237. end