user_agent_test.rb 12 KB

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