user_agent_test.rb 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. # encoding: utf-8
  2. require 'integration_test_helper'
  3. class UserAgentTest < ActiveSupport::TestCase
  4. host = 'https://r2d2.znuny.com'
  5. # check
  6. test 'check some results' do
  7. # get / 200
  8. result = UserAgent.get(
  9. "#{host}/test/get/1?submitted=123",
  10. )
  11. assert(result)
  12. assert_equal(true, result.success?)
  13. assert_equal('200', result.code)
  14. assert_equal(String, result.body.class)
  15. assert(result.body =~ /"get"/)
  16. assert(result.body =~ /"123"/)
  17. # get / 404
  18. result = UserAgent.get(
  19. "#{host}/test/not_existing",
  20. )
  21. assert(result)
  22. assert_equal(false, result.success?)
  23. assert_equal('404', result.code)
  24. assert_equal(NilClass, result.body.class)
  25. # post / 200
  26. result = UserAgent.post(
  27. "#{host}/test/post/1",
  28. {
  29. :submitted => 'some value',
  30. }
  31. )
  32. assert(result)
  33. assert_equal(true, result.success?)
  34. assert_equal('200', result.code)
  35. assert_equal(String, result.body.class)
  36. assert(result.body =~ /"post"/)
  37. assert(result.body =~ /"some value"/)
  38. # post / 404
  39. result = UserAgent.post(
  40. "#{host}/test/not_existing",
  41. {
  42. :submitted => 'some value',
  43. }
  44. )
  45. assert(result)
  46. assert_equal(false, result.success?)
  47. assert_equal('404', result.code)
  48. assert_equal(NilClass, result.body.class)
  49. # put / 200
  50. result = UserAgent.put(
  51. "#{host}/test/put/1",
  52. {
  53. :submitted => 'some value',
  54. }
  55. )
  56. assert(result)
  57. assert_equal(true, result.success?)
  58. assert_equal('200', result.code)
  59. assert_equal(String, result.body.class)
  60. assert(result.body =~ /"put"/)
  61. assert(result.body =~ /"some value"/)
  62. # put / 404
  63. result = UserAgent.put(
  64. "#{host}/test/not_existing",
  65. {
  66. :submitted => 'some value',
  67. }
  68. )
  69. assert(result)
  70. assert_equal(false, result.success?)
  71. assert_equal('404', result.code)
  72. assert_equal(NilClass, result.body.class)
  73. # delete / 200
  74. result = UserAgent.delete(
  75. "#{host}/test/delete/1",
  76. )
  77. assert(result)
  78. assert_equal(true, result.success?)
  79. assert_equal('200', result.code)
  80. assert_equal(String, result.body.class)
  81. assert(result.body =~ /"delete"/)
  82. # delete / 404
  83. result = UserAgent.delete(
  84. "#{host}/test/not_existing",
  85. )
  86. assert(result)
  87. assert_equal(false, result.success?)
  88. assert_equal('404', result.code)
  89. assert_equal(NilClass, result.body.class)
  90. # with http basic auth
  91. # get / 200
  92. result = UserAgent.get(
  93. "#{host}/test_basic_auth/get/1?submitted=123",
  94. {
  95. :user => 'basic_auth_user',
  96. :password => 'test123',
  97. }
  98. )
  99. assert(result)
  100. assert_equal(true, result.success?)
  101. assert_equal('200', result.code)
  102. assert_equal(String, result.body.class)
  103. assert(result.body =~ /"get"/)
  104. assert(result.body =~ /"123"/)
  105. # get / 401
  106. result = UserAgent.get(
  107. "#{host}/test_basic_auth/get/1?submitted=123",
  108. {
  109. :user => 'basic_auth_user_not_existing',
  110. :password => 'test<>123',
  111. }
  112. )
  113. assert(result)
  114. assert_equal(false, result.success?)
  115. assert_equal('401', result.code)
  116. assert_equal(NilClass, result.body.class)
  117. # post / 200
  118. result = UserAgent.post(
  119. "#{host}/test_basic_auth/post/1",
  120. {
  121. :submitted => 'some value',
  122. },
  123. {
  124. :user => 'basic_auth_user',
  125. :password => 'test123',
  126. }
  127. )
  128. assert(result)
  129. assert_equal(true, result.success?)
  130. assert_equal('200', result.code)
  131. assert_equal(String, result.body.class)
  132. assert(result.body =~ /"post"/)
  133. assert(result.body =~ /"some value"/)
  134. # post / 401
  135. result = UserAgent.post(
  136. "#{host}/test_basic_auth/post/1",
  137. {
  138. :submitted => 'some value',
  139. },
  140. {
  141. :user => 'basic_auth_user_not_existing',
  142. :password => 'test<>123',
  143. }
  144. )
  145. assert(result)
  146. assert_equal(false, result.success?)
  147. assert_equal('401', result.code)
  148. assert_equal(NilClass, result.body.class)
  149. # put / 200
  150. result = UserAgent.put(
  151. "#{host}/test_basic_auth/put/1",
  152. {
  153. :submitted => 'some value',
  154. },
  155. {
  156. :user => 'basic_auth_user',
  157. :password => 'test123',
  158. }
  159. )
  160. assert(result)
  161. assert_equal(true, result.success?)
  162. assert_equal('200', result.code)
  163. assert_equal(String, result.body.class)
  164. assert(result.body =~ /"put"/)
  165. assert(result.body =~ /"some value"/)
  166. # put / 401
  167. result = UserAgent.put(
  168. "#{host}/test_basic_auth/put/1",
  169. {
  170. :submitted => 'some value',
  171. },
  172. {
  173. :user => 'basic_auth_user_not_existing',
  174. :password => 'test<>123',
  175. }
  176. )
  177. assert(result)
  178. assert_equal(false, result.success?)
  179. assert_equal('401', result.code)
  180. assert_equal(NilClass, result.body.class)
  181. # delete / 200
  182. result = UserAgent.delete(
  183. "#{host}/test_basic_auth/delete/1",
  184. {
  185. :user => 'basic_auth_user',
  186. :password => 'test123',
  187. }
  188. )
  189. assert(result)
  190. assert_equal(true, result.success?)
  191. assert_equal('200', result.code)
  192. assert_equal(String, result.body.class)
  193. assert(result.body =~ /"delete"/)
  194. # delete / 401
  195. result = UserAgent.delete(
  196. "#{host}/test_basic_auth/delete/1",
  197. {
  198. :user => 'basic_auth_user_not_existing',
  199. :password => 'test<>123',
  200. }
  201. )
  202. assert(result)
  203. assert_equal(false, result.success?)
  204. assert_equal('401', result.code)
  205. assert_equal(NilClass, result.body.class)
  206. end
  207. # check
  208. test 'check redirect' do
  209. # get / 301
  210. result = UserAgent.request(
  211. "#{host}/test/redirect",
  212. )
  213. assert(result)
  214. assert_equal(true, result.success?)
  215. assert_equal('200', result.code)
  216. assert_equal(String, result.body.class)
  217. assert(result.body =~ /"get"/)
  218. assert(result.body =~ /"abc"/)
  219. # get / 301
  220. result = UserAgent.request(
  221. "#{host}/test_basic_auth/redirect",
  222. {
  223. :user => 'basic_auth_user',
  224. :password => 'test123',
  225. }
  226. )
  227. assert(result)
  228. assert_equal(true, result.success?)
  229. assert_equal('200', result.code)
  230. assert_equal(String, result.body.class)
  231. assert(result.body =~ /"get"/)
  232. assert(result.body =~ /"abc"/)
  233. # get / 401
  234. result = UserAgent.request(
  235. "#{host}/test_basic_auth/redirect",
  236. {
  237. :user => 'basic_auth_user_not_existing',
  238. :password => 'test123',
  239. }
  240. )
  241. assert(result)
  242. assert_equal(false, result.success?)
  243. assert_equal('401', result.code)
  244. assert_equal(NilClass, result.body.class)
  245. end
  246. # check
  247. test 'check request' do
  248. # get / 200
  249. result = UserAgent.request(
  250. "#{host}/test/get/1?submitted=123",
  251. )
  252. assert(result)
  253. assert_equal(true, result.success?)
  254. assert_equal('200', result.code)
  255. assert_equal(String, result.body.class)
  256. assert(result.body =~ /"get"/)
  257. assert(result.body =~ /"123"/)
  258. # ftp / 200
  259. result = UserAgent.request(
  260. "ftp://ftp.gwdg.de/msgs/banner.msg",
  261. )
  262. assert(result)
  263. assert_equal(true, result.success?)
  264. assert_equal('200', result.code)
  265. assert_equal(String, result.body.class)
  266. assert(result.body =~ /Gesellschaft/i)
  267. # ftp / 401
  268. result = UserAgent.request(
  269. "ftp://ftp.gwdg.de/msgs/not_existing.msg",
  270. )
  271. assert(result)
  272. assert_equal(false, result.success?)
  273. assert_equal('550', result.code)
  274. assert_equal(NilClass, result.body.class)
  275. # get / 200 / gzip
  276. result = UserAgent.request(
  277. "https://httpbin.org/gzip",
  278. )
  279. assert(result)
  280. assert_equal(true, result.success?)
  281. assert_equal('200', result.code)
  282. assert_equal(String, result.body.class)
  283. assert(result.body =~ /"GET"/)
  284. # get / 200 / gzip
  285. result = UserAgent.request(
  286. "http://httpbin.org/gzip",
  287. )
  288. assert(result)
  289. assert_equal(true, result.success?)
  290. assert_equal('200', result.code)
  291. assert_equal(String, result.body.class)
  292. assert(result.body =~ /"GET"/)
  293. # get / 200 / gzip
  294. result = UserAgent.request(
  295. "https://httpbin.org/deflate",
  296. )
  297. assert(result)
  298. assert_equal(true, result.success?)
  299. assert_equal('200', result.code)
  300. assert_equal(String, result.body.class)
  301. assert(result.body =~ /"GET"/)
  302. # get / 200 / gzip
  303. result = UserAgent.request(
  304. "http://httpbin.org/deflate",
  305. )
  306. assert(result)
  307. assert_equal(true, result.success?)
  308. assert_equal('200', result.code)
  309. assert_equal(String, result.body.class)
  310. assert(result.body =~ /"GET"/)
  311. end
  312. # check
  313. test 'check not existing' do
  314. # get / 0
  315. result = UserAgent.request(
  316. "http://not.existing.host/test.php",
  317. )
  318. assert(result)
  319. assert_equal(false, result.success?)
  320. assert_equal(0, result.code)
  321. assert_equal(NilClass, result.body.class)
  322. # ftp / 0
  323. result = UserAgent.request(
  324. "ftp://not.existing.host/test.bin",
  325. )
  326. assert(result)
  327. assert_equal(false, result.success?)
  328. assert_equal(0, result.code)
  329. assert_equal(NilClass, result.body.class)
  330. end
  331. # check
  332. test 'check timeout' do
  333. # get / timeout
  334. result = UserAgent.get(
  335. "#{host}/test/get/3?submitted=123",
  336. {
  337. :open_timeout => 1,
  338. :read_timeout => 1,
  339. }
  340. )
  341. assert(result)
  342. assert_equal(false, result.success?)
  343. assert_equal(0, result.code)
  344. assert_equal(NilClass, result.body.class)
  345. # post / timeout
  346. result = UserAgent.post(
  347. "#{host}/test/post/3",
  348. {
  349. :submitted => 'timeout',
  350. },
  351. {
  352. :open_timeout => 1,
  353. :read_timeout => 1,
  354. }
  355. )
  356. assert(result)
  357. assert_equal(false, result.success?)
  358. assert_equal(0, result.code)
  359. assert_equal(NilClass, result.body.class)
  360. end
  361. end