PageRenderTime 51ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/json-1.6.0/ruby/1.9.1/gems/faraday-0.6.1/test/connection_test.rb

https://github.com/zenonal/voting_module
Ruby | 245 lines | 208 code | 37 blank | 0 comment | 0 complexity | f28b2226cf6a45f618b022afac70a56a 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_long_basic_auth_sets_authorization_header_without_new_lines
  50. conn = Faraday::Connection.new
  51. conn.basic_auth "A" * 255, ""
  52. assert_equal "Basic #{'QUFB' * 85}Og==", conn.headers['Authorization']
  53. end
  54. def test_auto_parses_basic_auth_from_url
  55. conn = Faraday::Connection.new :url => "http://aladdin:opensesame@sushi.com/fish"
  56. assert_equal 'Basic YWxhZGRpbjpvcGVuc2VzYW1l', conn.headers['Authorization']
  57. end
  58. def test_token_auth_sets_authorization_header
  59. conn = Faraday::Connection.new
  60. conn.token_auth 'abcdef'
  61. assert_equal 'Token token="abcdef"', conn.headers['Authorization']
  62. end
  63. def test_token_auth_with_options_sets_authorization_header
  64. conn = Faraday::Connection.new
  65. conn.token_auth 'abcdef', :nonce => 'abc'
  66. assert_equal 'Token token="abcdef",
  67. nonce="abc"', conn.headers['Authorization']
  68. end
  69. def test_build_url_uses_connection_host_as_default_uri_host
  70. conn = Faraday::Connection.new
  71. conn.host = 'sushi.com'
  72. uri = conn.build_url("/sake.html")
  73. assert_equal 'sushi.com', uri.host
  74. end
  75. def test_build_url_uses_connection_port_as_default_uri_port
  76. conn = Faraday::Connection.new
  77. conn.port = 23
  78. uri = conn.build_url("http://sushi.com")
  79. assert_equal 23, uri.port
  80. end
  81. def test_build_url_uses_connection_scheme_as_default_uri_scheme
  82. conn = Faraday::Connection.new 'http://sushi.com'
  83. uri = conn.build_url("/sake.html")
  84. assert_equal 'http', uri.scheme
  85. end
  86. def test_build_url_uses_connection_path_prefix_to_customize_path
  87. conn = Faraday::Connection.new
  88. conn.path_prefix = '/fish'
  89. uri = conn.build_url("sake.html")
  90. assert_equal '/fish/sake.html', uri.path
  91. end
  92. def test_build_url_uses_root_connection_path_prefix_to_customize_path
  93. conn = Faraday::Connection.new
  94. conn.path_prefix = '/'
  95. uri = conn.build_url("sake.html")
  96. assert_equal '/sake.html', uri.path
  97. end
  98. def test_build_url_forces_connection_path_prefix_to_be_absolute
  99. conn = Faraday::Connection.new
  100. conn.path_prefix = 'fish'
  101. uri = conn.build_url("sake.html")
  102. assert_equal '/fish/sake.html', uri.path
  103. end
  104. def test_build_url_ignores_connection_path_prefix_trailing_slash
  105. conn = Faraday::Connection.new
  106. conn.path_prefix = '/fish/'
  107. uri = conn.build_url("sake.html")
  108. assert_equal '/fish/sake.html', uri.path
  109. end
  110. def test_build_url_allows_absolute_uri_to_ignore_connection_path_prefix
  111. conn = Faraday::Connection.new
  112. conn.path_prefix = '/fish'
  113. uri = conn.build_url("/sake.html")
  114. assert_equal '/sake.html', uri.path
  115. end
  116. def test_build_url_parses_url_params_into_path
  117. conn = Faraday::Connection.new
  118. uri = conn.build_url("http://sushi.com/sake.html")
  119. assert_equal '/sake.html', uri.path
  120. end
  121. def test_build_url_parses_url_params_into_query
  122. conn = Faraday::Connection.new
  123. uri = conn.build_url("http://sushi.com/sake.html", 'a[b]' => '1 + 2')
  124. assert_equal "a%5Bb%5D=1%20%2B%202", uri.query
  125. end
  126. def test_build_url_mashes_default_and_given_params_together
  127. conn = Faraday::Connection.new 'http://sushi.com/api?token=abc', :params => {'format' => 'json'}
  128. url = conn.build_url("nigiri?page=1", :limit => 5)
  129. assert_match /limit=5/, url.query
  130. assert_match /page=1/, url.query
  131. assert_match /format=json/, url.query
  132. assert_match /token=abc/, url.query
  133. end
  134. def test_build_url_overrides_default_params_with_given_params
  135. conn = Faraday::Connection.new 'http://sushi.com/api?token=abc', :params => {'format' => 'json'}
  136. url = conn.build_url("nigiri?page=1", :limit => 5, :token => 'def', :format => 'xml')
  137. assert_match /limit=5/, url.query
  138. assert_match /page=1/, url.query
  139. assert_match /format=xml/, url.query
  140. assert_match /token=def/, url.query
  141. assert_no_match /format=json/, url.query
  142. assert_no_match /token=abc/, url.query
  143. end
  144. def test_build_url_parses_url
  145. conn = Faraday::Connection.new
  146. uri = conn.build_url("http://sushi.com/sake.html")
  147. assert_equal "http", uri.scheme
  148. assert_equal "sushi.com", uri.host
  149. assert_equal '/sake.html', uri.path
  150. assert_nil uri.port
  151. end
  152. def test_build_url_parses_url_and_changes_scheme
  153. conn = Faraday::Connection.new :url => "http://sushi.com/sushi"
  154. conn.scheme = 'https'
  155. uri = conn.build_url("sake.html")
  156. assert_equal 'https://sushi.com/sushi/sake.html', uri.to_s
  157. end
  158. def test_proxy_accepts_string
  159. conn = Faraday::Connection.new
  160. conn.proxy 'http://proxy.com'
  161. assert_equal 'proxy.com', conn.proxy[:uri].host
  162. assert_equal [:uri], conn.proxy.keys
  163. end
  164. def test_proxy_accepts_uri
  165. conn = Faraday::Connection.new
  166. conn.proxy Addressable::URI.parse('http://proxy.com')
  167. assert_equal 'proxy.com', conn.proxy[:uri].host
  168. assert_equal [:uri], conn.proxy.keys
  169. end
  170. def test_proxy_accepts_hash_with_string_uri
  171. conn = Faraday::Connection.new
  172. conn.proxy :uri => 'http://proxy.com', :user => 'rick'
  173. assert_equal 'proxy.com', conn.proxy[:uri].host
  174. assert_equal 'rick', conn.proxy[:user]
  175. end
  176. def test_proxy_accepts_hash
  177. conn = Faraday::Connection.new
  178. conn.proxy :uri => Addressable::URI.parse('http://proxy.com'), :user => 'rick'
  179. assert_equal 'proxy.com', conn.proxy[:uri].host
  180. assert_equal 'rick', conn.proxy[:user]
  181. end
  182. def test_proxy_requires_uri
  183. conn = Faraday::Connection.new
  184. assert_raises ArgumentError do
  185. conn.proxy :uri => :bad_uri, :user => 'rick'
  186. end
  187. end
  188. def test_params_to_query_converts_hash_of_params_to_uri_escaped_query_string
  189. conn = Faraday::Connection.new
  190. class << conn
  191. public :build_query
  192. end
  193. assert_equal "a%5Bb%5D=1%20%2B%202", conn.build_query('a[b]' => '1 + 2')
  194. end
  195. def test_dups_connection_object
  196. conn = Faraday::Connection.new 'http://sushi.com/foo' do |b|
  197. b.adapter :net_http
  198. end
  199. conn.headers['content-type'] = 'text/plain'
  200. conn.params['a'] = '1'
  201. duped = conn.dup
  202. assert_equal conn.build_url(''), duped.build_url('')
  203. [:headers, :params, :builder].each do |attr|
  204. assert_equal conn.send(attr), duped.send(attr)
  205. assert_not_equal conn.send(attr).object_id, duped.send(attr).object_id
  206. end
  207. end
  208. end