mechanize 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mechanize might be problematic. Click here for more details.

Files changed (242) hide show
  1. data/README +32 -0
  2. data/doc/classes/Net/HTTP.html +1716 -0
  3. data/doc/classes/Net/HTTP.src/M000103.html +18 -0
  4. data/doc/classes/Net/HTTP.src/M000104.html +18 -0
  5. data/doc/classes/Net/HTTP.src/M000105.html +18 -0
  6. data/doc/classes/Net/HTTP.src/M000106.html +18 -0
  7. data/doc/classes/Net/HTTP.src/M000107.html +29 -0
  8. data/doc/classes/Net/HTTP.src/M000108.html +18 -0
  9. data/doc/classes/Net/HTTP.src/M000109.html +22 -0
  10. data/doc/classes/Net/HTTP.src/M000110.html +18 -0
  11. data/doc/classes/Net/HTTP.src/M000111.html +18 -0
  12. data/doc/classes/Net/HTTP.src/M000112.html +18 -0
  13. data/doc/classes/Net/HTTP.src/M000113.html +18 -0
  14. data/doc/classes/Net/HTTP.src/M000114.html +22 -0
  15. data/doc/classes/Net/HTTP.src/M000115.html +29 -0
  16. data/doc/classes/Net/HTTP.src/M000116.html +18 -0
  17. data/doc/classes/Net/HTTP.src/M000117.html +19 -0
  18. data/doc/classes/Net/HTTP.src/M000118.html +19 -0
  19. data/doc/classes/Net/HTTP.src/M000119.html +18 -0
  20. data/doc/classes/Net/HTTP.src/M000121.html +18 -0
  21. data/doc/classes/Net/HTTP.src/M000122.html +28 -0
  22. data/doc/classes/Net/HTTP.src/M000123.html +19 -0
  23. data/doc/classes/Net/HTTP.src/M000124.html +30 -0
  24. data/doc/classes/Net/HTTP.src/M000125.html +18 -0
  25. data/doc/classes/Net/HTTP.src/M000126.html +18 -0
  26. data/doc/classes/Net/HTTP.src/M000127.html +18 -0
  27. data/doc/classes/Net/HTTP.src/M000128.html +18 -0
  28. data/doc/classes/Net/HTTP.src/M000129.html +18 -0
  29. data/doc/classes/Net/HTTP.src/M000130.html +18 -0
  30. data/doc/classes/Net/HTTP.src/M000133.html +28 -0
  31. data/doc/classes/Net/HTTP.src/M000134.html +20 -0
  32. data/doc/classes/Net/HTTP.src/M000135.html +28 -0
  33. data/doc/classes/Net/HTTP.src/M000136.html +18 -0
  34. data/doc/classes/Net/HTTP.src/M000137.html +18 -0
  35. data/doc/classes/Net/HTTP.src/M000138.html +18 -0
  36. data/doc/classes/Net/HTTP.src/M000139.html +18 -0
  37. data/doc/classes/Net/HTTP.src/M000140.html +18 -0
  38. data/doc/classes/Net/HTTP.src/M000141.html +18 -0
  39. data/doc/classes/Net/HTTP.src/M000142.html +18 -0
  40. data/doc/classes/Net/HTTP.src/M000143.html +18 -0
  41. data/doc/classes/Net/HTTP.src/M000144.html +18 -0
  42. data/doc/classes/Net/HTTP.src/M000145.html +18 -0
  43. data/doc/classes/Net/HTTP.src/M000146.html +18 -0
  44. data/doc/classes/Net/HTTP.src/M000147.html +18 -0
  45. data/doc/classes/Net/HTTP.src/M000148.html +18 -0
  46. data/doc/classes/Net/HTTP.src/M000152.html +19 -0
  47. data/doc/classes/Net/HTTP.src/M000153.html +39 -0
  48. data/doc/classes/Net/HTTP.src/M000154.html +18 -0
  49. data/doc/classes/Net/HTTP.src/M000156.html +24 -0
  50. data/doc/classes/Net/HTTP.src/M000157.html +18 -0
  51. data/doc/classes/Net/HTTP.src/M000158.html +19 -0
  52. data/doc/classes/Net/HTTP.src/M000159.html +21 -0
  53. data/doc/classes/Net/HTTP.src/M000161.html +19 -0
  54. data/doc/classes/Net/HTTP/Copy.html +134 -0
  55. data/doc/classes/Net/HTTP/Delete.html +134 -0
  56. data/doc/classes/Net/HTTP/Get.html +134 -0
  57. data/doc/classes/Net/HTTP/Head.html +134 -0
  58. data/doc/classes/Net/HTTP/Lock.html +134 -0
  59. data/doc/classes/Net/HTTP/Mkcol.html +134 -0
  60. data/doc/classes/Net/HTTP/Move.html +134 -0
  61. data/doc/classes/Net/HTTP/Options.html +134 -0
  62. data/doc/classes/Net/HTTP/Post.html +134 -0
  63. data/doc/classes/Net/HTTP/Propfind.html +134 -0
  64. data/doc/classes/Net/HTTP/Proppatch.html +134 -0
  65. data/doc/classes/Net/HTTP/Put.html +134 -0
  66. data/doc/classes/Net/HTTP/Trace.html +134 -0
  67. data/doc/classes/Net/HTTP/Unlock.html +134 -0
  68. data/doc/classes/Net/HTTPError.html +120 -0
  69. data/doc/classes/Net/HTTPExceptions.html +137 -0
  70. data/doc/classes/Net/HTTPFatalError.html +120 -0
  71. data/doc/classes/Net/HTTPGenericRequest.html +274 -0
  72. data/doc/classes/Net/HTTPGenericRequest.src/M000088.html +26 -0
  73. data/doc/classes/Net/HTTPGenericRequest.src/M000089.html +18 -0
  74. data/doc/classes/Net/HTTPGenericRequest.src/M000090.html +18 -0
  75. data/doc/classes/Net/HTTPGenericRequest.src/M000091.html +18 -0
  76. data/doc/classes/Net/HTTPGenericRequest.src/M000092.html +19 -0
  77. data/doc/classes/Net/HTTPGenericRequest.src/M000093.html +20 -0
  78. data/doc/classes/Net/HTTPGenericRequest.src/M000094.html +20 -0
  79. data/doc/classes/Net/HTTPHeader.html +734 -0
  80. data/doc/classes/Net/HTTPHeader.src/M000055.html +23 -0
  81. data/doc/classes/Net/HTTPHeader.src/M000056.html +19 -0
  82. data/doc/classes/Net/HTTPHeader.src/M000057.html +22 -0
  83. data/doc/classes/Net/HTTPHeader.src/M000058.html +22 -0
  84. data/doc/classes/Net/HTTPHeader.src/M000059.html +19 -0
  85. data/doc/classes/Net/HTTPHeader.src/M000060.html +19 -0
  86. data/doc/classes/Net/HTTPHeader.src/M000061.html +20 -0
  87. data/doc/classes/Net/HTTPHeader.src/M000063.html +18 -0
  88. data/doc/classes/Net/HTTPHeader.src/M000065.html +20 -0
  89. data/doc/classes/Net/HTTPHeader.src/M000066.html +20 -0
  90. data/doc/classes/Net/HTTPHeader.src/M000067.html +18 -0
  91. data/doc/classes/Net/HTTPHeader.src/M000068.html +18 -0
  92. data/doc/classes/Net/HTTPHeader.src/M000069.html +18 -0
  93. data/doc/classes/Net/HTTPHeader.src/M000070.html +20 -0
  94. data/doc/classes/Net/HTTPHeader.src/M000072.html +30 -0
  95. data/doc/classes/Net/HTTPHeader.src/M000073.html +43 -0
  96. data/doc/classes/Net/HTTPHeader.src/M000075.html +21 -0
  97. data/doc/classes/Net/HTTPHeader.src/M000076.html +22 -0
  98. data/doc/classes/Net/HTTPHeader.src/M000077.html +20 -0
  99. data/doc/classes/Net/HTTPHeader.src/M000078.html +21 -0
  100. data/doc/classes/Net/HTTPHeader.src/M000079.html +19 -0
  101. data/doc/classes/Net/HTTPHeader.src/M000080.html +18 -0
  102. data/doc/classes/Net/HTTPHeader.src/M000081.html +19 -0
  103. data/doc/classes/Net/HTTPHeader.src/M000082.html +19 -0
  104. data/doc/classes/Net/HTTPHeader.src/M000083.html +23 -0
  105. data/doc/classes/Net/HTTPHeader.src/M000084.html +18 -0
  106. data/doc/classes/Net/HTTPHeader.src/M000086.html +18 -0
  107. data/doc/classes/Net/HTTPHeader.src/M000087.html +18 -0
  108. data/doc/classes/Net/HTTPRequest.html +150 -0
  109. data/doc/classes/Net/HTTPRequest.src/M000102.html +21 -0
  110. data/doc/classes/Net/HTTPResponse.html +425 -0
  111. data/doc/classes/Net/HTTPResponse.src/M000162.html +18 -0
  112. data/doc/classes/Net/HTTPResponse.src/M000163.html +18 -0
  113. data/doc/classes/Net/HTTPResponse.src/M000164.html +23 -0
  114. data/doc/classes/Net/HTTPResponse.src/M000165.html +18 -0
  115. data/doc/classes/Net/HTTPResponse.src/M000166.html +32 -0
  116. data/doc/classes/Net/HTTPResponse.src/M000167.html +18 -0
  117. data/doc/classes/Net/HTTPRetriableError.html +120 -0
  118. data/doc/classes/Net/HTTPServerException.html +120 -0
  119. data/doc/classes/Net/ProtoAuthError.html +113 -0
  120. data/doc/classes/Net/ProtoCommandError.html +113 -0
  121. data/doc/classes/Net/ProtoFatalError.html +113 -0
  122. data/doc/classes/Net/ProtoRetriableError.html +113 -0
  123. data/doc/classes/Net/ProtoServerError.html +113 -0
  124. data/doc/classes/Net/ProtoSyntaxError.html +113 -0
  125. data/doc/classes/Net/ProtoUnknownError.html +113 -0
  126. data/doc/classes/Net/ProtocolError.html +111 -0
  127. data/doc/classes/Net/WriteAdapter.html +235 -0
  128. data/doc/classes/Net/WriteAdapter.src/M000095.html +19 -0
  129. data/doc/classes/Net/WriteAdapter.src/M000096.html +18 -0
  130. data/doc/classes/Net/WriteAdapter.src/M000097.html +18 -0
  131. data/doc/classes/Net/WriteAdapter.src/M000099.html +19 -0
  132. data/doc/classes/Net/WriteAdapter.src/M000100.html +18 -0
  133. data/doc/classes/Net/WriteAdapter.src/M000101.html +18 -0
  134. data/doc/classes/REXML.html +109 -0
  135. data/doc/classes/REXML/Comment.html +137 -0
  136. data/doc/classes/REXML/Comment.src/M000053.html +18 -0
  137. data/doc/classes/REXML/Node.html +240 -0
  138. data/doc/classes/REXML/Node.src/M000047.html +21 -0
  139. data/doc/classes/REXML/Node.src/M000048.html +21 -0
  140. data/doc/classes/REXML/Node.src/M000049.html +22 -0
  141. data/doc/classes/REXML/Node.src/M000050.html +18 -0
  142. data/doc/classes/REXML/Node.src/M000051.html +18 -0
  143. data/doc/classes/REXML/Node.src/M000052.html +18 -0
  144. data/doc/classes/REXML/Text.html +137 -0
  145. data/doc/classes/REXML/Text.src/M000054.html +18 -0
  146. data/doc/classes/WWW.html +130 -0
  147. data/doc/classes/WWW/Button.html +190 -0
  148. data/doc/classes/WWW/Button.src/M000028.html +18 -0
  149. data/doc/classes/WWW/Button.src/M000029.html +18 -0
  150. data/doc/classes/WWW/Button.src/M000030.html +25 -0
  151. data/doc/classes/WWW/CheckBox.html +160 -0
  152. data/doc/classes/WWW/CheckBox.src/M000024.html +18 -0
  153. data/doc/classes/WWW/Cookie.html +207 -0
  154. data/doc/classes/WWW/Cookie.src/M000032.html +59 -0
  155. data/doc/classes/WWW/Cookie.src/M000033.html +21 -0
  156. data/doc/classes/WWW/Cookie.src/M000034.html +18 -0
  157. data/doc/classes/WWW/CookieJar.html +197 -0
  158. data/doc/classes/WWW/CookieJar.src/M000008.html +18 -0
  159. data/doc/classes/WWW/CookieJar.src/M000009.html +22 -0
  160. data/doc/classes/WWW/CookieJar.src/M000010.html +33 -0
  161. data/doc/classes/WWW/CookieJar.src/M000011.html +18 -0
  162. data/doc/classes/WWW/Field.html +174 -0
  163. data/doc/classes/WWW/Field.src/M000045.html +18 -0
  164. data/doc/classes/WWW/Field.src/M000046.html +26 -0
  165. data/doc/classes/WWW/FileUpload.html +163 -0
  166. data/doc/classes/WWW/FileUpload.src/M000031.html +19 -0
  167. data/doc/classes/WWW/Form.html +152 -0
  168. data/doc/classes/WWW/Form.src/M000044.html +19 -0
  169. data/doc/classes/WWW/GlobalForm.html +271 -0
  170. data/doc/classes/WWW/GlobalForm.src/M000004.html +24 -0
  171. data/doc/classes/WWW/GlobalForm.src/M000005.html +26 -0
  172. data/doc/classes/WWW/GlobalForm.src/M000006.html +46 -0
  173. data/doc/classes/WWW/GlobalForm.src/M000007.html +46 -0
  174. data/doc/classes/WWW/ImageButton.html +157 -0
  175. data/doc/classes/WWW/ImageButton.src/M000027.html +22 -0
  176. data/doc/classes/WWW/Link.html +160 -0
  177. data/doc/classes/WWW/Link.src/M000025.html +20 -0
  178. data/doc/classes/WWW/Mechanize.html +379 -0
  179. data/doc/classes/WWW/Mechanize.src/M000013.html +21 -0
  180. data/doc/classes/WWW/Mechanize.src/M000014.html +18 -0
  181. data/doc/classes/WWW/Mechanize.src/M000015.html +24 -0
  182. data/doc/classes/WWW/Mechanize.src/M000016.html +19 -0
  183. data/doc/classes/WWW/Mechanize.src/M000017.html +23 -0
  184. data/doc/classes/WWW/Mechanize.src/M000018.html +32 -0
  185. data/doc/classes/WWW/Mechanize.src/M000019.html +19 -0
  186. data/doc/classes/WWW/Mechanize.src/M000020.html +18 -0
  187. data/doc/classes/WWW/Mechanize.src/M000021.html +33 -0
  188. data/doc/classes/WWW/Mechanize.src/M000022.html +18 -0
  189. data/doc/classes/WWW/Meta.html +113 -0
  190. data/doc/classes/WWW/Page.html +313 -0
  191. data/doc/classes/WWW/Page.src/M000036.html +18 -0
  192. data/doc/classes/WWW/Page.src/M000037.html +18 -0
  193. data/doc/classes/WWW/Page.src/M000038.html +18 -0
  194. data/doc/classes/WWW/Page.src/M000039.html +19 -0
  195. data/doc/classes/WWW/Page.src/M000040.html +19 -0
  196. data/doc/classes/WWW/Page.src/M000041.html +19 -0
  197. data/doc/classes/WWW/Page.src/M000042.html +19 -0
  198. data/doc/classes/WWW/Page.src/M000043.html +19 -0
  199. data/doc/classes/WWW/RadioButton.html +160 -0
  200. data/doc/classes/WWW/RadioButton.src/M000012.html +18 -0
  201. data/doc/classes/WWW/ResponseCodeError.html +150 -0
  202. data/doc/classes/WWW/ResponseCodeError.src/M000035.html +18 -0
  203. data/doc/classes/WWW/SelectList.html +160 -0
  204. data/doc/classes/WWW/SelectList.src/M000026.html +28 -0
  205. data/doc/created.rid +1 -0
  206. data/doc/files/CHANGELOG.html +136 -0
  207. data/doc/files/LICENSE.html +531 -0
  208. data/doc/files/README.html +161 -0
  209. data/doc/files/lib/mechanize/cookie_rb.html +101 -0
  210. data/doc/files/lib/mechanize/net-overrides/net/http_rb.html +139 -0
  211. data/doc/files/lib/mechanize/net-overrides/net/https_rb.html +109 -0
  212. data/doc/files/lib/mechanize/net-overrides/net/protocol_rb.html +117 -0
  213. data/doc/files/lib/mechanize/parsing_rb.html +267 -0
  214. data/doc/files/lib/mechanize/parsing_rb.src/M000001.html +22 -0
  215. data/doc/files/lib/mechanize/parsing_rb.src/M000002.html +44 -0
  216. data/doc/files/lib/mechanize/parsing_rb.src/M000003.html +34 -0
  217. data/doc/files/lib/mechanize_rb.html +152 -0
  218. data/doc/fr_class_index.html +80 -0
  219. data/doc/fr_file_index.html +35 -0
  220. data/doc/fr_method_index.html +194 -0
  221. data/doc/index.html +24 -0
  222. data/doc/rdoc-style.css +208 -0
  223. data/lib/mechanize.rb +128 -26
  224. data/lib/mechanize/cookie.rb +98 -0
  225. data/lib/mechanize/net-overrides/net/http.rb +2 -2
  226. data/test/README +7 -0
  227. data/test/htdocs/find_link.html +40 -0
  228. data/test/htdocs/form_test.html +154 -0
  229. data/test/htdocs/google.html +13 -0
  230. data/test/htdocs/index.html +6 -0
  231. data/test/server.rb +19 -0
  232. data/test/servlets.rb +130 -0
  233. data/test/tc_cookies.rb +125 -0
  234. data/test/tc_forms.rb +339 -0
  235. data/test/tc_links.rb +25 -0
  236. data/test/tc_mech.rb +70 -0
  237. data/test/tc_response_code.rb +31 -0
  238. data/test/ts_mech.rb +9 -0
  239. metadata +310 -41
  240. data/Rakefile +0 -14
  241. data/examples/rubyforge.rb +0 -13
  242. data/mechanize.gemspec +0 -22
@@ -0,0 +1,125 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'webrick'
4
+ require 'test/unit'
5
+ require 'rubygems'
6
+ require 'mechanize'
7
+ require 'servlets'
8
+ require 'net/http'
9
+ require 'uri'
10
+
11
+ class FormsMechTest < Test::Unit::TestCase
12
+ def setup
13
+ @port = 2000
14
+ end
15
+
16
+ def test_send_cookies
17
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
18
+ page = agent.get("http://localhost:#{@port}/many_cookies")
19
+ page = agent.get("http://localhost:#{@port}/send_cookies")
20
+ assert_equal(2, page.links.length)
21
+ assert_not_nil(page.links.find { |l| l.text == "name:Aaron" })
22
+ assert_not_nil(page.links.find { |l| l.text == "no_expires:nope" })
23
+ end
24
+
25
+ def test_many_cookies_as_string
26
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
27
+ page = agent.get("http://localhost:#{@port}/many_cookies_as_string")
28
+ assert_equal(5, agent.cookies.length)
29
+
30
+ name_cookie = agent.cookies.find { |k| k.name == "name" }
31
+ assert_not_nil(name_cookie, "Name cookie was nil")
32
+ assert_equal("Aaron", name_cookie.value)
33
+ assert_equal("/", name_cookie.path)
34
+ assert_equal(true, DateTime.now < name_cookie.expires)
35
+
36
+ expired_cookie = agent.cookies.find { |k| k.name == "expired" }
37
+ assert_not_nil(expired_cookie, "Expired cookie was nil")
38
+ assert_equal("doh", expired_cookie.value)
39
+ assert_equal("/", expired_cookie.path)
40
+ assert_equal(true, DateTime.now > expired_cookie.expires)
41
+
42
+ no_exp_cookie = agent.cookies.find { |k| k.name == "no_expires" }
43
+ assert_not_nil(no_exp_cookie, "No expires cookie is nil")
44
+ assert_equal("nope", no_exp_cookie.value)
45
+ assert_equal("/", no_exp_cookie.path)
46
+ assert_nil(no_exp_cookie.expires)
47
+
48
+ path_cookie = agent.cookies.find { |k| k.name == "a_path" }
49
+ assert_not_nil(path_cookie, "Path cookie is nil")
50
+ assert_equal("some_path", path_cookie.value)
51
+ assert_equal(true, DateTime.now < path_cookie.expires)
52
+
53
+ no_path_cookie = agent.cookies.find { |k| k.name == "no_path" }
54
+ assert_not_nil(no_path_cookie, "No path cookie is nil")
55
+ assert_equal("no_path", no_path_cookie.value)
56
+ assert_equal("/many_cookies_as_string", no_path_cookie.path)
57
+ assert_equal(true, DateTime.now < no_path_cookie.expires)
58
+ end
59
+
60
+ def test_many_cookies
61
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
62
+ page = agent.get("http://localhost:#{@port}/many_cookies")
63
+ assert_equal(5, agent.cookies.length)
64
+
65
+ name_cookie = agent.cookies.find { |k| k.name == "name" }
66
+ assert_not_nil(name_cookie, "Name cookie was nil")
67
+ assert_equal("Aaron", name_cookie.value)
68
+ assert_equal("/", name_cookie.path)
69
+ assert_equal(true, DateTime.now < name_cookie.expires)
70
+
71
+ expired_cookie = agent.cookies.find { |k| k.name == "expired" }
72
+ assert_not_nil(expired_cookie, "Expired cookie was nil")
73
+ assert_equal("doh", expired_cookie.value)
74
+ assert_equal("/", expired_cookie.path)
75
+ assert_equal(true, DateTime.now > expired_cookie.expires)
76
+
77
+ no_exp_cookie = agent.cookies.find { |k| k.name == "no_expires" }
78
+ assert_not_nil(no_exp_cookie, "No expires cookie is nil")
79
+ assert_equal("nope", no_exp_cookie.value)
80
+ assert_equal("/", no_exp_cookie.path)
81
+ assert_nil(no_exp_cookie.expires)
82
+
83
+ path_cookie = agent.cookies.find { |k| k.name == "a_path" }
84
+ assert_not_nil(path_cookie, "Path cookie is nil")
85
+ assert_equal("some_path", path_cookie.value)
86
+ assert_equal(true, DateTime.now < path_cookie.expires)
87
+
88
+ no_path_cookie = agent.cookies.find { |k| k.name == "no_path" }
89
+ assert_not_nil(no_path_cookie, "No path cookie is nil")
90
+ assert_equal("no_path", no_path_cookie.value)
91
+ assert_equal("/many_cookies", no_path_cookie.path)
92
+ assert_equal(true, DateTime.now < no_path_cookie.expires)
93
+ end
94
+
95
+ def test_get_cookie
96
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
97
+ assert_equal(true,
98
+ agent.cookie_jar.empty?(
99
+ URI::parse("http://localhost:#{@port}/one_cookie")))
100
+
101
+ assert_equal(0, agent.cookies.length)
102
+
103
+ page = agent.get("http://localhost:#{@port}/one_cookie")
104
+ assert_equal(1, agent.cookies.length)
105
+
106
+ cookie = agent.cookies.first
107
+ assert_equal("foo", cookie.name)
108
+ assert_equal("bar", cookie.value)
109
+ assert_equal("/", cookie.path)
110
+ assert_equal("localhost", cookie.domain)
111
+
112
+ assert_equal(false,
113
+ agent.cookie_jar.empty?(
114
+ URI::parse("http://localhost:#{@port}/one_cookie")))
115
+ page = agent.get("http://localhost:#{@port}/one_cookie")
116
+
117
+ assert_equal(1, agent.cookies.length)
118
+
119
+ cookie = agent.cookies.first
120
+ assert_equal("foo", cookie.name)
121
+ assert_equal("bar", cookie.value)
122
+ assert_equal("/", cookie.path)
123
+ assert_equal("localhost", cookie.domain)
124
+ end
125
+ end
@@ -0,0 +1,339 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'webrick'
4
+ require 'test/unit'
5
+ require 'rubygems'
6
+ require 'mechanize'
7
+ require 'servlets'
8
+
9
+ class FormsMechTest < Test::Unit::TestCase
10
+ def setup
11
+ @port = 2000
12
+ end
13
+
14
+ def test_post
15
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
16
+ page = agent.get("http://localhost:#{@port}/form_test.html")
17
+ post_form = page.forms.find { |f| f.name == "post_form1" }
18
+ assert_not_nil(post_form, "Post form is null")
19
+ assert_equal("post", post_form.method.downcase)
20
+ assert_equal("/form_post", post_form.action)
21
+ assert_equal(1, post_form.fields.size)
22
+ assert_equal(1, post_form.buttons.size)
23
+ assert_equal(2, post_form.radiobuttons.size)
24
+ assert_equal(2, post_form.checkboxes.size)
25
+ assert_not_nil(post_form.fields.find { |f| f.name == "first_name" },
26
+ "First name field was nil"
27
+ )
28
+ assert_not_nil(
29
+ post_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
30
+ "Gender male button was nil"
31
+ )
32
+
33
+ assert_not_nil(
34
+ post_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
35
+ "Gender female button was nil"
36
+ )
37
+
38
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "cool person" },
39
+ "couldn't find cool person checkbox")
40
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "likes ham" },
41
+ "couldn't find likes ham checkbox")
42
+
43
+ # Now set all the fields
44
+ post_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
45
+ post_form.radiobuttons.find { |f|
46
+ f.name == "gender" && f.value == "male"
47
+ }.checked = true
48
+ post_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
49
+ page = agent.submit(post_form, post_form.buttons.first)
50
+
51
+ # Check that the submitted fields exist
52
+ assert_equal(3, page.links.size, "Not enough links")
53
+ assert_not_nil(
54
+ page.links.find { |l| l.text == "likes ham:on" },
55
+ "likes ham check box missing"
56
+ )
57
+ assert_not_nil(
58
+ page.links.find { |l| l.text == "first_name:Aaron" },
59
+ "first_name field missing"
60
+ )
61
+ assert_not_nil(
62
+ page.links.find { |l| l.text == "gender:male" },
63
+ "gender field missing"
64
+ )
65
+ end
66
+
67
+ def test_get
68
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
69
+ page = agent.get("http://localhost:#{@port}/form_test.html")
70
+ get_form = page.forms.find { |f| f.name == "get_form1" }
71
+ assert_not_nil(get_form, "Get form is null")
72
+ assert_equal("get", get_form.method.downcase)
73
+ assert_equal("/form_post", get_form.action)
74
+ assert_equal(1, get_form.fields.size)
75
+ assert_equal(1, get_form.buttons.size)
76
+ assert_equal(2, get_form.radiobuttons.size)
77
+ assert_equal(2, get_form.checkboxes.size)
78
+ assert_not_nil(get_form.fields.find { |f| f.name == "first_name" },
79
+ "First name field was nil"
80
+ )
81
+ assert_not_nil(
82
+ get_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
83
+ "Gender male button was nil"
84
+ )
85
+
86
+ assert_not_nil(
87
+ get_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
88
+ "Gender female button was nil"
89
+ )
90
+
91
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "cool person" },
92
+ "couldn't find cool person checkbox")
93
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "likes ham" },
94
+ "couldn't find likes ham checkbox")
95
+
96
+ # Now set all the fields
97
+ get_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
98
+ get_form.radiobuttons.find { |f|
99
+ f.name == "gender" && f.value == "male"
100
+ }.checked = true
101
+ get_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
102
+ page = agent.submit(get_form, get_form.buttons.first)
103
+
104
+ # Check that the submitted fields exist
105
+ assert_equal(3, page.links.size, "Not enough links")
106
+ assert_not_nil(
107
+ page.links.find { |l| l.text == "likes ham:on" },
108
+ "likes ham check box missing"
109
+ )
110
+ assert_not_nil(
111
+ page.links.find { |l| l.text == "first_name:Aaron" },
112
+ "first_name field missing"
113
+ )
114
+ assert_not_nil(
115
+ page.links.find { |l| l.text == "gender:male" },
116
+ "gender field missing"
117
+ )
118
+ end
119
+
120
+ def test_post_with_space_in_action
121
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
122
+ page = agent.get("http://localhost:#{@port}/form_test.html")
123
+ post_form = page.forms.find { |f| f.name == "post_form2" }
124
+ assert_not_nil(post_form, "Post form is null")
125
+ assert_equal("post", post_form.method.downcase)
126
+ assert_equal("/form post", post_form.action)
127
+ assert_equal(1, post_form.fields.size)
128
+ assert_equal(1, post_form.buttons.size)
129
+ assert_equal(2, post_form.radiobuttons.size)
130
+ assert_equal(2, post_form.checkboxes.size)
131
+ assert_not_nil(post_form.fields.find { |f| f.name == "first_name" },
132
+ "First name field was nil"
133
+ )
134
+ assert_not_nil(
135
+ post_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
136
+ "Gender male button was nil"
137
+ )
138
+
139
+ assert_not_nil(
140
+ post_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
141
+ "Gender female button was nil"
142
+ )
143
+
144
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "cool person" },
145
+ "couldn't find cool person checkbox")
146
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "likes ham" },
147
+ "couldn't find likes ham checkbox")
148
+
149
+ # Now set all the fields
150
+ post_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
151
+ post_form.radiobuttons.find { |f|
152
+ f.name == "gender" && f.value == "male"
153
+ }.checked = true
154
+ post_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
155
+ page = agent.submit(post_form, post_form.buttons.first)
156
+
157
+ # Check that the submitted fields exist
158
+ assert_equal(3, page.links.size, "Not enough links")
159
+ assert_not_nil(
160
+ page.links.find { |l| l.text == "likes ham:on" },
161
+ "likes ham check box missing"
162
+ )
163
+ assert_not_nil(
164
+ page.links.find { |l| l.text == "first_name:Aaron" },
165
+ "first_name field missing"
166
+ )
167
+ assert_not_nil(
168
+ page.links.find { |l| l.text == "gender:male" },
169
+ "gender field missing"
170
+ )
171
+ end
172
+
173
+ def test_get_with_space_in_action
174
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
175
+ page = agent.get("http://localhost:#{@port}/form_test.html")
176
+ get_form = page.forms.find { |f| f.name == "get_form2" }
177
+ assert_not_nil(get_form, "Get form is null")
178
+ assert_equal("get", get_form.method.downcase)
179
+ assert_equal("/form post", get_form.action)
180
+ assert_equal(1, get_form.fields.size)
181
+ assert_equal(1, get_form.buttons.size)
182
+ assert_equal(2, get_form.radiobuttons.size)
183
+ assert_equal(2, get_form.checkboxes.size)
184
+ assert_not_nil(get_form.fields.find { |f| f.name == "first_name" },
185
+ "First name field was nil"
186
+ )
187
+ assert_not_nil(
188
+ get_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
189
+ "Gender male button was nil"
190
+ )
191
+
192
+ assert_not_nil(
193
+ get_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
194
+ "Gender female button was nil"
195
+ )
196
+
197
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "cool person" },
198
+ "couldn't find cool person checkbox")
199
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "likes ham" },
200
+ "couldn't find likes ham checkbox")
201
+
202
+ # Now set all the fields
203
+ get_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
204
+ get_form.radiobuttons.find { |f|
205
+ f.name == "gender" && f.value == "male"
206
+ }.checked = true
207
+ get_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
208
+ page = agent.submit(get_form, get_form.buttons.first)
209
+
210
+ # Check that the submitted fields exist
211
+ assert_equal(3, page.links.size, "Not enough links")
212
+ assert_not_nil(
213
+ page.links.find { |l| l.text == "likes ham:on" },
214
+ "likes ham check box missing"
215
+ )
216
+ assert_not_nil(
217
+ page.links.find { |l| l.text == "first_name:Aaron" },
218
+ "first_name field missing"
219
+ )
220
+ assert_not_nil(
221
+ page.links.find { |l| l.text == "gender:male" },
222
+ "gender field missing"
223
+ )
224
+ end
225
+
226
+ def test_post_with_param_in_action
227
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
228
+ page = agent.get("http://localhost:#{@port}/form_test.html")
229
+ post_form = page.forms.find { |f| f.name == "post_form3" }
230
+ assert_not_nil(post_form, "Post form is null")
231
+ assert_equal("post", post_form.method.downcase)
232
+ assert_equal("/form_post?great day=yes&one=two", post_form.action)
233
+ assert_equal(1, post_form.fields.size)
234
+ assert_equal(1, post_form.buttons.size)
235
+ assert_equal(2, post_form.radiobuttons.size)
236
+ assert_equal(2, post_form.checkboxes.size)
237
+ assert_not_nil(post_form.fields.find { |f| f.name == "first_name" },
238
+ "First name field was nil"
239
+ )
240
+ assert_not_nil(
241
+ post_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
242
+ "Gender male button was nil"
243
+ )
244
+
245
+ assert_not_nil(
246
+ post_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
247
+ "Gender female button was nil"
248
+ )
249
+
250
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "cool person" },
251
+ "couldn't find cool person checkbox")
252
+ assert_not_nil(post_form.checkboxes.find { |f| f.name == "likes ham" },
253
+ "couldn't find likes ham checkbox")
254
+
255
+ # Now set all the fields
256
+ post_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
257
+ post_form.radiobuttons.find { |f|
258
+ f.name == "gender" && f.value == "male"
259
+ }.checked = true
260
+ post_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
261
+ page = agent.submit(post_form, post_form.buttons.first)
262
+
263
+ # Check that the submitted fields exist
264
+ assert_equal(3, page.links.size, "Not enough links")
265
+ assert_not_nil(
266
+ page.links.find { |l| l.text == "likes ham:on" },
267
+ "likes ham check box missing"
268
+ )
269
+ assert_not_nil(
270
+ page.links.find { |l| l.text == "first_name:Aaron" },
271
+ "first_name field missing"
272
+ )
273
+ assert_not_nil(
274
+ page.links.find { |l| l.text == "gender:male" },
275
+ "gender field missing"
276
+ )
277
+ end
278
+
279
+ def test_get_with_param_in_action
280
+ agent = WWW::Mechanize.new { |a| a.log = Logger.new(nil) }
281
+ page = agent.get("http://localhost:#{@port}/form_test.html")
282
+ get_form = page.forms.find { |f| f.name == "get_form3" }
283
+ assert_not_nil(get_form, "Get form is null")
284
+ assert_equal("get", get_form.method.downcase)
285
+ assert_equal("/form_post?great day=yes&one=two", get_form.action)
286
+ assert_equal(1, get_form.fields.size)
287
+ assert_equal(1, get_form.buttons.size)
288
+ assert_equal(2, get_form.radiobuttons.size)
289
+ assert_equal(2, get_form.checkboxes.size)
290
+ assert_not_nil(get_form.fields.find { |f| f.name == "first_name" },
291
+ "First name field was nil"
292
+ )
293
+ assert_not_nil(
294
+ get_form.radiobuttons.find { |f| f.name == "gender" && f.value == "male"},
295
+ "Gender male button was nil"
296
+ )
297
+
298
+ assert_not_nil(
299
+ get_form.radiobuttons.find {|f| f.name == "gender" && f.value == "female"},
300
+ "Gender female button was nil"
301
+ )
302
+
303
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "cool person" },
304
+ "couldn't find cool person checkbox")
305
+ assert_not_nil(get_form.checkboxes.find { |f| f.name == "likes ham" },
306
+ "couldn't find likes ham checkbox")
307
+
308
+ # Now set all the fields
309
+ get_form.fields.find { |f| f.name == "first_name" }.value = "Aaron"
310
+ get_form.radiobuttons.find { |f|
311
+ f.name == "gender" && f.value == "male"
312
+ }.checked = true
313
+ get_form.checkboxes.find { |f| f.name == "likes ham" }.checked = true
314
+ page = agent.submit(get_form, get_form.buttons.first)
315
+
316
+ # Check that the submitted fields exist
317
+ assert_equal(5, page.links.size, "Not enough links")
318
+ assert_not_nil(
319
+ page.links.find { |l| l.text == "likes ham:on" },
320
+ "likes ham check box missing"
321
+ )
322
+ assert_not_nil(
323
+ page.links.find { |l| l.text == "first_name:Aaron" },
324
+ "first_name field missing"
325
+ )
326
+ assert_not_nil(
327
+ page.links.find { |l| l.text == "gender:male" },
328
+ "gender field missing"
329
+ )
330
+ assert_not_nil(
331
+ page.links.find { |l| l.text == "great day:yes" },
332
+ "great day field missing"
333
+ )
334
+ assert_not_nil(
335
+ page.links.find { |l| l.text == "one:two" },
336
+ "one field missing"
337
+ )
338
+ end
339
+ end