mechanize 1.0.1.beta.20110107104205 → 2.0.pre.1

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 (89) hide show
  1. data.tar.gz.sig +2 -0
  2. data/{lib/mechanize/chain/post_connect_hook.rb → .gemtest} +0 -0
  3. data/CHANGELOG.rdoc +51 -6
  4. data/EXAMPLES.rdoc +5 -3
  5. data/GUIDE.rdoc +72 -32
  6. data/LICENSE.rdoc +20 -340
  7. data/Manifest.txt +20 -27
  8. data/README.rdoc +12 -9
  9. data/Rakefile +5 -2
  10. data/examples/spider.rb +13 -2
  11. data/lib/mechanize.rb +545 -267
  12. data/lib/mechanize/content_type_error.rb +1 -1
  13. data/lib/mechanize/cookie.rb +72 -65
  14. data/lib/mechanize/cookie_jar.rb +197 -148
  15. data/lib/mechanize/element_matcher.rb +35 -0
  16. data/lib/mechanize/file.rb +3 -1
  17. data/lib/mechanize/file_connection.rb +17 -0
  18. data/lib/mechanize/file_request.rb +26 -0
  19. data/lib/mechanize/file_response.rb +61 -47
  20. data/lib/mechanize/form.rb +57 -58
  21. data/lib/mechanize/form/image_button.rb +2 -3
  22. data/lib/mechanize/form/multi_select_list.rb +71 -55
  23. data/lib/mechanize/form/select_list.rb +34 -62
  24. data/lib/mechanize/monkey_patch.rb +13 -11
  25. data/lib/mechanize/page.rb +277 -270
  26. data/lib/mechanize/page/image.rb +6 -2
  27. data/lib/mechanize/redirect_limit_reached_error.rb +1 -1
  28. data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -1
  29. data/lib/mechanize/response_code_error.rb +3 -3
  30. data/lib/mechanize/unsupported_scheme_error.rb +1 -1
  31. data/lib/mechanize/uri_resolver.rb +82 -0
  32. data/lib/mechanize/util.rb +76 -60
  33. data/test/helper.rb +35 -5
  34. data/test/htdocs/dir with spaces/foo.html +1 -0
  35. data/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  36. data/test/htdocs/tc_base_images.html +10 -0
  37. data/test/htdocs/tc_images.html +8 -0
  38. data/test/htdocs/test_click.html +11 -0
  39. data/test/servlets.rb +3 -2
  40. data/test/test_authenticate.rb +5 -5
  41. data/test/test_errors.rb +8 -8
  42. data/test/test_follow_meta.rb +4 -4
  43. data/test/test_form_as_hash.rb +4 -4
  44. data/test/test_forms.rb +3 -7
  45. data/test/test_hash_api.rb +2 -2
  46. data/test/test_headers.rb +1 -1
  47. data/test/test_images.rb +19 -0
  48. data/test/test_mech.rb +6 -6
  49. data/test/test_mechanize.rb +687 -0
  50. data/test/{test_cookie_class.rb → test_mechanize_cookie.rb} +52 -45
  51. data/test/test_mechanize_cookie_jar.rb +400 -0
  52. data/test/test_mechanize_file.rb +7 -1
  53. data/test/test_mechanize_file_request.rb +19 -0
  54. data/test/test_mechanize_file_response.rb +21 -0
  55. data/test/test_mechanize_form_image_button.rb +12 -0
  56. data/test/test_mechanize_page.rb +165 -0
  57. data/test/test_mechanize_uri_resolver.rb +29 -0
  58. data/test/{test_util.rb → test_mechanize_util.rb} +1 -1
  59. data/test/test_multi_select.rb +12 -0
  60. data/test/test_post_form.rb +7 -0
  61. data/test/test_redirect_verb_handling.rb +6 -6
  62. data/test/test_scheme.rb +0 -7
  63. data/test/test_verbs.rb +3 -3
  64. metadata +106 -72
  65. metadata.gz.sig +0 -0
  66. data/lib/mechanize/chain.rb +0 -36
  67. data/lib/mechanize/chain/auth_headers.rb +0 -78
  68. data/lib/mechanize/chain/body_decoding_handler.rb +0 -50
  69. data/lib/mechanize/chain/connection_resolver.rb +0 -28
  70. data/lib/mechanize/chain/custom_headers.rb +0 -21
  71. data/lib/mechanize/chain/handler.rb +0 -9
  72. data/lib/mechanize/chain/header_resolver.rb +0 -48
  73. data/lib/mechanize/chain/parameter_resolver.rb +0 -22
  74. data/lib/mechanize/chain/pre_connect_hook.rb +0 -20
  75. data/lib/mechanize/chain/request_resolver.rb +0 -31
  76. data/lib/mechanize/chain/response_body_parser.rb +0 -36
  77. data/lib/mechanize/chain/response_header_handler.rb +0 -34
  78. data/lib/mechanize/chain/response_reader.rb +0 -39
  79. data/lib/mechanize/chain/ssl_resolver.rb +0 -40
  80. data/lib/mechanize/chain/uri_resolver.rb +0 -75
  81. data/test/chain/test_argument_validator.rb +0 -14
  82. data/test/chain/test_auth_headers.rb +0 -25
  83. data/test/chain/test_custom_headers.rb +0 -18
  84. data/test/chain/test_header_resolver.rb +0 -27
  85. data/test/chain/test_parameter_resolver.rb +0 -35
  86. data/test/chain/test_request_resolver.rb +0 -29
  87. data/test/chain/test_response_reader.rb +0 -24
  88. data/test/test_cookie_jar.rb +0 -324
  89. data/test/test_page.rb +0 -124
@@ -1,124 +0,0 @@
1
- require "helper"
2
-
3
- require 'cgi'
4
-
5
- class TestPage < Test::Unit::TestCase
6
- def setup
7
- @agent = Mechanize.new
8
- end
9
-
10
- def test_page_gets_charset_from_page
11
- page = @agent.get("http://localhost/tc_charset.html")
12
- assert_equal 'windows-1255', page.encoding
13
- end
14
-
15
- def test_double_semicolon
16
- page = @agent.get("http://localhost/http_headers?content-disposition=#{CGI.escape('attachment;; filename=fooooo')}")
17
- assert page.parser
18
- end
19
-
20
- def test_broken_charset
21
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=akldsjfhaldjfksh')}")
22
- assert page.parser
23
- end
24
-
25
- def test_mostly_broken_charset
26
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=ISO_8859-1')}")
27
- assert_equal 'ISO_8859-1', page.encoding
28
- end
29
-
30
- def test_another_mostly_broken_charset
31
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF8')}")
32
- assert_equal 'UTF8', page.parser.encoding
33
- assert_equal 'UTF8', page.encoding
34
- end
35
-
36
- def test_upper_case_content_type
37
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/HTML')}")
38
- assert_instance_of Mechanize::Page, page
39
- assert_equal 'text/HTML', page.content_type
40
- end
41
-
42
- def test_encoding_override_before_parser_initialized
43
- # document has a bad encoding information - windows-1255
44
- page = @agent.get("http://localhost/tc_bad_charset.html")
45
- # encoding is wrong, so user wants to force ISO-8859-2
46
- page.encoding = 'ISO-8859-2'
47
- assert_equal 'ISO-8859-2', page.encoding
48
- end
49
-
50
- def test_encoding_override_after_parser_was_initialized
51
- # document has a bad encoding information - windows-1255
52
- page = @agent.get("http://localhost/tc_bad_charset.html")
53
- page.parser
54
- # autodetection sets encoding to windows-1255
55
- assert_equal 'windows-1255', page.encoding
56
- # encoding is wrong, so user wants to force ISO-8859-2
57
- page.encoding = 'ISO-8859-2'
58
- assert_equal 'ISO-8859-2', page.encoding
59
- end
60
-
61
- def test_page_gets_charset_sent_by_server
62
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF-8')}")
63
- assert_equal 'UTF-8', page.encoding
64
- end
65
-
66
- def test_page_gets_charset_sent_by_server_with_trailing_semicolon
67
- page = @agent.get("http://localhost/http_headers?content-type=#{CGI.escape('text/html; charset=UTF-8;')}")
68
- assert_equal 'UTF-8', page.encoding
69
- end
70
-
71
- def test_set_encoding
72
- page = @agent.get("http://localhost/file_upload.html")
73
- page.encoding = 'UTF-8'
74
- assert_equal 'UTF-8', page.parser.encoding
75
- end
76
-
77
- def test_page_gets_yielded
78
- pages = nil
79
- @agent.get("http://localhost/file_upload.html") { |page|
80
- pages = page
81
- }
82
- assert pages
83
- assert_equal('File Upload Form', pages.title)
84
- end
85
-
86
- def test_title
87
- page = @agent.get("http://localhost/file_upload.html")
88
- assert_equal('File Upload Form', page.title)
89
- end
90
-
91
- def test_no_title
92
- page = @agent.get("http://localhost/no_title_test.html")
93
- assert_equal(nil, page.title)
94
- end
95
-
96
- def test_page_decoded_with_charset
97
- page = Mechanize::Page.new(
98
- URI.parse('http://tenderlovemaking.com/'),
99
- { 'content-type' => 'text/html; charset=EUC-JP' },
100
- '<html><body>hello</body></html>',
101
- 400,
102
- @agent
103
- )
104
- assert_equal 'EUC-JP', page.parser.encoding
105
- end
106
-
107
- def test_find_form_with_hash
108
- page = @agent.get("http://localhost/tc_form_action.html")
109
- form = page.form(:name => 'post_form1')
110
- assert form
111
- yielded = false
112
- form = page.form(:name => 'post_form1') { |f|
113
- yielded = true
114
- assert f
115
- assert_equal(form, f)
116
- }
117
- assert yielded
118
-
119
- form_by_action = page.form(:action => '/form_post?a=b&b=c')
120
- assert form_by_action
121
- assert_equal(form, form_by_action)
122
- end
123
- end
124
-