user_agent_test.rb 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  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 =~ %r{"text/plain"})
  272. # ftp / 200
  273. result = UserAgent.request(
  274. 'ftp://root.cern.ch/pub/README-root-build.txt',
  275. )
  276. assert(result)
  277. assert_equal(true, result.success?)
  278. assert_equal('200', result.code)
  279. assert_equal(String, result.body.class)
  280. assert(result.body =~ /instructions/i)
  281. # ftp / 401
  282. result = UserAgent.request(
  283. 'ftp://root.cern.ch/pub/not_existing.msg',
  284. )
  285. assert(result)
  286. assert_equal(false, result.success?)
  287. assert_equal('550', result.code)
  288. assert_equal(NilClass, result.body.class)
  289. # get / 200 / gzip
  290. result = UserAgent.request(
  291. 'https://httpbin.org/gzip',
  292. )
  293. assert(result)
  294. assert_equal(true, result.success?)
  295. assert_equal('200', result.code)
  296. assert_equal(String, result.body.class)
  297. assert(result.body =~ /"GET"/)
  298. # get / 200 / gzip
  299. result = UserAgent.request(
  300. 'http://httpbin.org/gzip',
  301. )
  302. assert(result)
  303. assert_equal(true, result.success?)
  304. assert_equal('200', result.code)
  305. assert_equal(String, result.body.class)
  306. assert(result.body =~ /"GET"/)
  307. # get / 200 / gzip
  308. result = UserAgent.request(
  309. 'https://httpbin.org/deflate',
  310. )
  311. assert(result)
  312. assert_equal(true, result.success?)
  313. assert_equal('200', result.code)
  314. assert_equal(String, result.body.class)
  315. assert(result.body =~ /"GET"/)
  316. # get / 200 / gzip
  317. result = UserAgent.request(
  318. 'http://httpbin.org/deflate',
  319. )
  320. assert(result)
  321. assert_equal(true, result.success?)
  322. assert_equal('200', result.code)
  323. assert_equal(String, result.body.class)
  324. assert(result.body =~ /"GET"/)
  325. end
  326. # check
  327. test 'check not existing' do
  328. # get / 0
  329. result = UserAgent.request(
  330. 'http://not.existing.host/test.php',
  331. )
  332. assert(result)
  333. assert_equal(false, result.success?)
  334. assert_equal(0, result.code)
  335. assert_equal(NilClass, result.body.class)
  336. # ftp / 0
  337. result = UserAgent.request(
  338. 'ftp://not.existing.host/test.bin',
  339. )
  340. assert(result)
  341. assert_equal(false, result.success?)
  342. assert_equal(0, result.code)
  343. assert_equal(NilClass, result.body.class)
  344. end
  345. # check
  346. test 'check timeout' do
  347. # get / timeout
  348. result = UserAgent.get(
  349. "#{host}/test/get/3?submitted=123",
  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. # post / timeout
  361. result = UserAgent.post(
  362. "#{host}/test/post/3",
  363. {
  364. submitted: 'timeout',
  365. },
  366. {
  367. open_timeout: 1,
  368. read_timeout: 1,
  369. }
  370. )
  371. assert(result)
  372. assert_equal(false, result.success?)
  373. assert_equal(0, result.code)
  374. assert_equal(NilClass, result.body.class)
  375. end
  376. # check
  377. test 'check json' do
  378. # get / 200
  379. result = UserAgent.get(
  380. "#{host}/test/get/1",
  381. {
  382. submitted: { key: 'some value ' }
  383. },
  384. {
  385. json: true,
  386. }
  387. )
  388. assert(result)
  389. assert_equal(true, result.success?)
  390. assert_equal('200', result.code)
  391. assert_equal(String, result.body.class)
  392. assert(result.body =~ /"content_type_requested"/)
  393. assert(result.body =~ %r{"application/json"})
  394. assert_equal('some value ', result.data['submitted']['key'])
  395. # get / 401
  396. result = UserAgent.get(
  397. "#{host}/test/not_existing",
  398. {
  399. submitted: { key: 'some value ' }
  400. },
  401. {
  402. json: true,
  403. }
  404. )
  405. assert(result)
  406. assert_equal(false, result.success?)
  407. assert_equal('404', result.code)
  408. assert_equal(NilClass, result.body.class)
  409. assert(!result.data)
  410. # post / 200
  411. result = UserAgent.post(
  412. "#{host}/test/post/1",
  413. {
  414. submitted: { key: 'some value ' }
  415. },
  416. {
  417. json: true,
  418. }
  419. )
  420. assert(result)
  421. assert_equal(true, result.success?)
  422. assert_equal('201', result.code)
  423. assert_equal(String, result.body.class)
  424. assert(result.body =~ /"content_type_requested"/)
  425. assert(result.body =~ %r{"application/json"})
  426. assert_equal('some value ', result.data['submitted']['key'])
  427. end
  428. end