diamond-mechanize 2.1 → 2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- metadata +222 -167
- data/Rakefile +0 -49
- data/lib/mechanize/content_type_error.rb +0 -13
- data/lib/mechanize/cookie.rb +0 -232
- data/lib/mechanize/cookie_jar.rb +0 -194
- data/lib/mechanize/download.rb +0 -59
- data/lib/mechanize/element_matcher.rb +0 -36
- data/lib/mechanize/file.rb +0 -65
- data/lib/mechanize/file_connection.rb +0 -17
- data/lib/mechanize/file_request.rb +0 -26
- data/lib/mechanize/file_response.rb +0 -74
- data/lib/mechanize/file_saver.rb +0 -39
- data/lib/mechanize/form/button.rb +0 -6
- data/lib/mechanize/form/check_box.rb +0 -12
- data/lib/mechanize/form/field.rb +0 -54
- data/lib/mechanize/form/file_upload.rb +0 -21
- data/lib/mechanize/form/hidden.rb +0 -3
- data/lib/mechanize/form/image_button.rb +0 -19
- data/lib/mechanize/form/keygen.rb +0 -34
- data/lib/mechanize/form/multi_select_list.rb +0 -94
- data/lib/mechanize/form/option.rb +0 -50
- data/lib/mechanize/form/radio_button.rb +0 -55
- data/lib/mechanize/form/reset.rb +0 -3
- data/lib/mechanize/form/select_list.rb +0 -44
- data/lib/mechanize/form/submit.rb +0 -3
- data/lib/mechanize/form/text.rb +0 -3
- data/lib/mechanize/form/textarea.rb +0 -3
- data/lib/mechanize/form.rb +0 -543
- data/lib/mechanize/headers.rb +0 -23
- data/lib/mechanize/history.rb +0 -82
- data/lib/mechanize/http/agent.rb +0 -1004
- data/lib/mechanize/http/auth_challenge.rb +0 -59
- data/lib/mechanize/http/auth_realm.rb +0 -31
- data/lib/mechanize/http/content_disposition_parser.rb +0 -188
- data/lib/mechanize/http/www_authenticate_parser.rb +0 -155
- data/lib/mechanize/http.rb +0 -8
- data/lib/mechanize/monkey_patch.rb +0 -16
- data/lib/mechanize/page/base.rb +0 -7
- data/lib/mechanize/page/frame.rb +0 -27
- data/lib/mechanize/page/image.rb +0 -30
- data/lib/mechanize/page/label.rb +0 -20
- data/lib/mechanize/page/link.rb +0 -98
- data/lib/mechanize/page/meta_refresh.rb +0 -68
- data/lib/mechanize/page.rb +0 -440
- data/lib/mechanize/parser.rb +0 -173
- data/lib/mechanize/pluggable_parsers.rb +0 -144
- data/lib/mechanize/redirect_limit_reached_error.rb +0 -19
- data/lib/mechanize/redirect_not_get_or_head_error.rb +0 -21
- data/lib/mechanize/response_code_error.rb +0 -21
- data/lib/mechanize/response_read_error.rb +0 -27
- data/lib/mechanize/robots_disallowed_error.rb +0 -28
- data/lib/mechanize/test_case.rb +0 -663
- data/lib/mechanize/unauthorized_error.rb +0 -3
- data/lib/mechanize/unsupported_scheme_error.rb +0 -6
- data/lib/mechanize/util.rb +0 -101
- data/lib/mechanize.rb +0 -1079
- data/test/data/htpasswd +0 -1
- data/test/data/server.crt +0 -16
- data/test/data/server.csr +0 -12
- data/test/data/server.key +0 -15
- data/test/data/server.pem +0 -15
- data/test/htdocs/alt_text.html +0 -10
- data/test/htdocs/bad_form_test.html +0 -9
- data/test/htdocs/button.jpg +0 -0
- data/test/htdocs/canonical_uri.html +0 -9
- data/test/htdocs/dir with spaces/foo.html +0 -1
- data/test/htdocs/empty_form.html +0 -6
- data/test/htdocs/file_upload.html +0 -26
- data/test/htdocs/find_link.html +0 -41
- data/test/htdocs/form_multi_select.html +0 -16
- data/test/htdocs/form_multival.html +0 -37
- data/test/htdocs/form_no_action.html +0 -18
- data/test/htdocs/form_no_input_name.html +0 -16
- data/test/htdocs/form_order_test.html +0 -11
- data/test/htdocs/form_select.html +0 -16
- data/test/htdocs/form_set_fields.html +0 -14
- data/test/htdocs/form_test.html +0 -188
- data/test/htdocs/frame_referer_test.html +0 -10
- data/test/htdocs/frame_test.html +0 -30
- data/test/htdocs/google.html +0 -13
- data/test/htdocs/index.html +0 -6
- data/test/htdocs/link with space.html +0 -5
- data/test/htdocs/meta_cookie.html +0 -11
- data/test/htdocs/no_title_test.html +0 -6
- data/test/htdocs/noindex.html +0 -9
- data/test/htdocs/rails_3_encoding_hack_form_test.html +0 -27
- data/test/htdocs/relative/tc_relative_links.html +0 -21
- data/test/htdocs/robots.html +0 -8
- data/test/htdocs/robots.txt +0 -2
- data/test/htdocs/tc_bad_charset.html +0 -9
- data/test/htdocs/tc_bad_links.html +0 -5
- data/test/htdocs/tc_base_link.html +0 -8
- data/test/htdocs/tc_blank_form.html +0 -11
- data/test/htdocs/tc_charset.html +0 -6
- data/test/htdocs/tc_checkboxes.html +0 -19
- data/test/htdocs/tc_encoded_links.html +0 -5
- data/test/htdocs/tc_field_precedence.html +0 -11
- data/test/htdocs/tc_follow_meta.html +0 -8
- data/test/htdocs/tc_form_action.html +0 -48
- data/test/htdocs/tc_links.html +0 -19
- data/test/htdocs/tc_meta_in_body.html +0 -9
- data/test/htdocs/tc_pretty_print.html +0 -17
- data/test/htdocs/tc_referer.html +0 -16
- data/test/htdocs/tc_relative_links.html +0 -19
- data/test/htdocs/tc_textarea.html +0 -23
- data/test/htdocs/test_click.html +0 -11
- data/test/htdocs/unusual______.html +0 -5
- data/test/test_mechanize.rb +0 -1164
- data/test/test_mechanize_cookie.rb +0 -451
- data/test/test_mechanize_cookie_jar.rb +0 -483
- data/test/test_mechanize_download.rb +0 -43
- data/test/test_mechanize_file.rb +0 -61
- data/test/test_mechanize_file_connection.rb +0 -21
- data/test/test_mechanize_file_request.rb +0 -19
- data/test/test_mechanize_file_saver.rb +0 -21
- data/test/test_mechanize_form.rb +0 -875
- data/test/test_mechanize_form_check_box.rb +0 -38
- data/test/test_mechanize_form_encoding.rb +0 -114
- data/test/test_mechanize_form_field.rb +0 -63
- data/test/test_mechanize_form_file_upload.rb +0 -20
- data/test/test_mechanize_form_image_button.rb +0 -12
- data/test/test_mechanize_form_keygen.rb +0 -32
- data/test/test_mechanize_form_multi_select_list.rb +0 -84
- data/test/test_mechanize_form_option.rb +0 -55
- data/test/test_mechanize_form_radio_button.rb +0 -78
- data/test/test_mechanize_form_select_list.rb +0 -76
- data/test/test_mechanize_form_textarea.rb +0 -52
- data/test/test_mechanize_headers.rb +0 -35
- data/test/test_mechanize_history.rb +0 -103
- data/test/test_mechanize_http_agent.rb +0 -1225
- data/test/test_mechanize_http_auth_challenge.rb +0 -39
- data/test/test_mechanize_http_auth_realm.rb +0 -49
- data/test/test_mechanize_http_content_disposition_parser.rb +0 -118
- data/test/test_mechanize_http_www_authenticate_parser.rb +0 -146
- data/test/test_mechanize_link.rb +0 -80
- data/test/test_mechanize_page.rb +0 -118
- data/test/test_mechanize_page_encoding.rb +0 -182
- data/test/test_mechanize_page_frame.rb +0 -16
- data/test/test_mechanize_page_link.rb +0 -390
- data/test/test_mechanize_page_meta_refresh.rb +0 -127
- data/test/test_mechanize_parser.rb +0 -289
- data/test/test_mechanize_pluggable_parser.rb +0 -52
- data/test/test_mechanize_redirect_limit_reached_error.rb +0 -24
- data/test/test_mechanize_redirect_not_get_or_head_error.rb +0 -14
- data/test/test_mechanize_subclass.rb +0 -22
- data/test/test_mechanize_util.rb +0 -103
- data/test/test_multi_select.rb +0 -119
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'mechanize/test_case'
|
2
|
-
|
3
|
-
class TestMechanizeRedirectLimitReachedError < Mechanize::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
super
|
7
|
-
|
8
|
-
@error = Mechanize::RedirectLimitReachedError.new fake_page, 10
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_message
|
12
|
-
assert_equal 'Redirect limit of 10 reached', @error.message
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_redirects
|
16
|
-
assert_equal 10, @error.redirects
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_response_code
|
20
|
-
assert_equal 200, @error.response_code
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'mechanize/test_case'
|
2
|
-
|
3
|
-
class TestMechanizeRedirectNotGetOrHead < Mechanize::TestCase
|
4
|
-
|
5
|
-
def test_to_s
|
6
|
-
page = fake_page
|
7
|
-
|
8
|
-
error = Mechanize::RedirectNotGetOrHeadError.new(page, :put)
|
9
|
-
|
10
|
-
assert_match(/ PUT /, error.to_s)
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'mechanize/test_case'
|
2
|
-
|
3
|
-
class TestMechanizeSubclass < Mechanize::TestCase
|
4
|
-
|
5
|
-
class Parent < Mechanize
|
6
|
-
@html_parser = :parser
|
7
|
-
@log = :log
|
8
|
-
end
|
9
|
-
|
10
|
-
class Child < Parent
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_subclass_inherits_html_parser
|
14
|
-
assert_equal :parser, Child.html_parser
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_subclass_inherits_log
|
18
|
-
assert_equal :log, Child.log
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
data/test/test_mechanize_util.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'mechanize/test_case'
|
4
|
-
|
5
|
-
class TestMechanizeUtil < Mechanize::TestCase
|
6
|
-
|
7
|
-
INPUTTED_VALUE = "テスト" # "test" in Japanese UTF-8 encoding
|
8
|
-
CONTENT_ENCODING = 'Shift_JIS' # one of Japanese encoding
|
9
|
-
ENCODED_VALUE = "\x83\x65\x83\x58\x83\x67" # "test" in Japanese Shift_JIS encoding
|
10
|
-
|
11
|
-
if Mechanize::Util::NEW_RUBY_ENCODING
|
12
|
-
ENCODING_ERRORS = [EncodingError, Encoding::ConverterNotFoundError] # and so on
|
13
|
-
ERROR_LOG_MESSAGE = /from_native_charset: Encoding::ConverterNotFoundError: form encoding: "UTF-eight"/
|
14
|
-
ENCODED_VALUE.force_encoding(::Encoding::SHIFT_JIS)
|
15
|
-
else
|
16
|
-
ENCODING_ERRORS = [Iconv::InvalidEncoding, Iconv::IllegalSequence]
|
17
|
-
ERROR_LOG_MESSAGE = /from_native_charset: Iconv::InvalidEncoding: form encoding: "UTF-eight"/
|
18
|
-
end
|
19
|
-
|
20
|
-
INVALID_ENCODING = 'UTF-eight'
|
21
|
-
|
22
|
-
def setup
|
23
|
-
super
|
24
|
-
|
25
|
-
@MU = Mechanize::Util
|
26
|
-
@result = "not set"
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_from_native_charset
|
30
|
-
@result = @MU.from_native_charset(INPUTTED_VALUE, CONTENT_ENCODING)
|
31
|
-
assert_equal ENCODED_VALUE, @result
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_from_native_charset_returns_nil_when_no_string
|
35
|
-
@result = @MU.from_native_charset(nil, CONTENT_ENCODING)
|
36
|
-
assert_equal nil, @result
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_from_native_charset_doesnot_convert_when_no_encoding
|
40
|
-
@result = @MU.from_native_charset(INPUTTED_VALUE, nil)
|
41
|
-
refute_equal ENCODED_VALUE, @result
|
42
|
-
assert_equal INPUTTED_VALUE, @result
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_from_native_charset_doesnot_convert_when_not_nokogiri
|
46
|
-
parser = Mechanize.html_parser
|
47
|
-
Mechanize.html_parser = 'Another HTML Parser'
|
48
|
-
|
49
|
-
@result = @MU.from_native_charset(INPUTTED_VALUE, CONTENT_ENCODING)
|
50
|
-
refute_equal ENCODED_VALUE, @result
|
51
|
-
assert_equal INPUTTED_VALUE, @result
|
52
|
-
ensure
|
53
|
-
Mechanize.html_parser = parser
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_from_native_charset_raises_error_with_bad_encoding
|
57
|
-
assert_raises(*ENCODING_ERRORS) do
|
58
|
-
@MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_from_native_charset_suppress_encoding_error_when_3rd_arg_is_true
|
63
|
-
@MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true)
|
64
|
-
|
65
|
-
# HACK no assertion
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_from_native_charset_doesnot_convert_when_encoding_error_raised_and_ignored
|
69
|
-
@result = @MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true)
|
70
|
-
|
71
|
-
refute_equal ENCODED_VALUE, @result
|
72
|
-
assert_equal INPUTTED_VALUE, @result
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_from_native_charset_logs_form_when_encoding_error_raised
|
76
|
-
sio = StringIO.new("")
|
77
|
-
log = Logger.new(sio)
|
78
|
-
log.level = Logger::DEBUG
|
79
|
-
|
80
|
-
assert_raises(*ENCODING_ERRORS) do
|
81
|
-
@MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, nil, log)
|
82
|
-
end
|
83
|
-
|
84
|
-
assert_match ERROR_LOG_MESSAGE, sio.string
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_from_native_charset_logs_form_when_encoding_error_is_ignored
|
88
|
-
sio = StringIO.new("")
|
89
|
-
log = Logger.new(sio)
|
90
|
-
log.level = Logger::DEBUG
|
91
|
-
|
92
|
-
@MU.from_native_charset(INPUTTED_VALUE, INVALID_ENCODING, true, log)
|
93
|
-
|
94
|
-
assert_match ERROR_LOG_MESSAGE, sio.string
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_self_html_unescape_entity
|
98
|
-
assert_equal '&', @MU::html_unescape('&')
|
99
|
-
assert_equal '&', @MU::html_unescape('&')
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
|
data/test/test_multi_select.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'mechanize/test_case'
|
2
|
-
|
3
|
-
class MultiSelectTest < Mechanize::TestCase
|
4
|
-
def setup
|
5
|
-
super
|
6
|
-
|
7
|
-
@page = @mech.get("http://localhost/form_multi_select.html")
|
8
|
-
@form = @page.forms.first
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_option_with
|
12
|
-
o = @form.field_with(:name => 'list').option_with(:value => '1')
|
13
|
-
assert_equal '1', o.value
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_options_with
|
17
|
-
os = @form.field_with(:name => 'list').options_with(:value => /1|2/)
|
18
|
-
assert_equal ['1', '2'].sort, os.map { |x| x.value }.sort
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_select_none
|
22
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
23
|
-
form = page.forms.first
|
24
|
-
form.field_with(:name => 'list').select_none
|
25
|
-
page = @mech.submit(form)
|
26
|
-
assert_equal(0, page.links.length)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_select_all
|
30
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
31
|
-
form = page.forms.first
|
32
|
-
form.field_with(:name => 'list').select_all
|
33
|
-
page = @mech.submit(form)
|
34
|
-
assert_equal(6, page.links.length)
|
35
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
36
|
-
assert_equal(1, page.links_with(:text => 'list:2').length)
|
37
|
-
assert_equal(1, page.links_with(:text => 'list:3').length)
|
38
|
-
assert_equal(1, page.links_with(:text => 'list:4').length)
|
39
|
-
assert_equal(1, page.links_with(:text => 'list:5').length)
|
40
|
-
assert_equal(1, page.links_with(:text => 'list:6').length)
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_click_all
|
44
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
45
|
-
form = page.forms.first
|
46
|
-
form.field_with(:name => 'list').options.each { |o| o.click }
|
47
|
-
page = @mech.submit(form)
|
48
|
-
assert_equal(5, page.links.length)
|
49
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
50
|
-
assert_equal(1, page.links_with(:text => 'list:3').length)
|
51
|
-
assert_equal(1, page.links_with(:text => 'list:4').length)
|
52
|
-
assert_equal(1, page.links_with(:text => 'list:5').length)
|
53
|
-
assert_equal(1, page.links_with(:text => 'list:6').length)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_select_default
|
57
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
58
|
-
form = page.forms.first
|
59
|
-
page = @mech.submit(form)
|
60
|
-
assert_equal(1, page.links.length)
|
61
|
-
assert_equal(1, page.links_with(:text => 'list:2').length)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_select_one
|
65
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
66
|
-
form = page.forms.first
|
67
|
-
form.list = 'Aaron'
|
68
|
-
assert_equal(['Aaron'], form.list)
|
69
|
-
page = @mech.submit(form)
|
70
|
-
assert_equal(1, page.links.length)
|
71
|
-
assert_equal('list:Aaron', page.links.first.text)
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_select_two
|
75
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
76
|
-
form = page.forms.first
|
77
|
-
form.list = ['1', 'Aaron']
|
78
|
-
page = @mech.submit(form)
|
79
|
-
assert_equal(2, page.links.length)
|
80
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
81
|
-
assert_equal(1, page.links_with(:text => 'list:Aaron').length)
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_select_three
|
85
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
86
|
-
form = page.forms.first
|
87
|
-
form.list = ['1', '2', '3']
|
88
|
-
page = @mech.submit(form)
|
89
|
-
assert_equal(3, page.links.length)
|
90
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
91
|
-
assert_equal(1, page.links_with(:text => 'list:2').length)
|
92
|
-
assert_equal(1, page.links_with(:text => 'list:3').length)
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_select_three_twice
|
96
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
97
|
-
form = page.forms.first
|
98
|
-
form.list = ['1', '2', '3']
|
99
|
-
form.list = ['1', '2', '3']
|
100
|
-
page = @mech.submit(form)
|
101
|
-
assert_equal(3, page.links.length)
|
102
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
103
|
-
assert_equal(1, page.links_with(:text => 'list:2').length)
|
104
|
-
assert_equal(1, page.links_with(:text => 'list:3').length)
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_select_with_click
|
108
|
-
page = @mech.get("http://localhost/form_multi_select.html")
|
109
|
-
form = page.forms.first
|
110
|
-
form.list = ['1', 'Aaron']
|
111
|
-
form.field_with(:name => 'list').options[3].tick
|
112
|
-
assert_equal(['1', 'Aaron', '4'].sort, form.list.sort)
|
113
|
-
page = @mech.submit(form)
|
114
|
-
assert_equal(3, page.links.length)
|
115
|
-
assert_equal(1, page.links_with(:text => 'list:1').length)
|
116
|
-
assert_equal(1, page.links_with(:text => 'list:Aaron').length)
|
117
|
-
assert_equal(1, page.links_with(:text => 'list:4').length)
|
118
|
-
end
|
119
|
-
end
|