bettercap 1.1.9 → 1.1.10
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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +2 -2
- data/TODO.md +5 -2
- data/bin/bettercap +19 -11
- data/lib/bettercap.rb +5 -1
- data/lib/bettercap/base/ifirewall.rb +2 -0
- data/lib/bettercap/base/ispoofer.rb +2 -0
- data/lib/bettercap/context.rb +5 -2
- data/lib/bettercap/discovery/{arp.rb → agents/arp.rb} +15 -14
- data/lib/bettercap/discovery/{base.rb → agents/base.rb} +4 -4
- data/lib/bettercap/discovery/{icmp.rb → agents/icmp.rb} +2 -3
- data/lib/bettercap/discovery/{udp.rb → agents/udp.rb} +2 -2
- data/lib/bettercap/{discovery.rb → discovery/discovery.rb} +8 -1
- data/lib/bettercap/factories/firewall_factory.rb +2 -0
- data/lib/bettercap/factories/parser_factory.rb +11 -5
- data/lib/bettercap/factories/spoofer_factory.rb +3 -1
- data/lib/bettercap/firewalls/linux.rb +2 -0
- data/lib/bettercap/firewalls/osx.rb +2 -0
- data/lib/bettercap/firewalls/redirection.rb +2 -1
- data/lib/bettercap/httpd/server.rb +2 -3
- data/lib/bettercap/logger.rb +27 -10
- data/lib/bettercap/monkey/packetfu/utils.rb +5 -5
- data/lib/bettercap/network.rb +26 -16
- data/lib/bettercap/options.rb +27 -6
- data/lib/bettercap/proxy/certstore.rb +4 -3
- data/lib/bettercap/proxy/module.rb +2 -2
- data/lib/bettercap/proxy/proxy.rb +5 -5
- data/lib/bettercap/proxy/request.rb +2 -2
- data/lib/bettercap/proxy/response.rb +2 -0
- data/lib/bettercap/proxy/stream_logger.rb +15 -3
- data/lib/bettercap/proxy/streamer.rb +3 -1
- data/lib/bettercap/proxy/thread_pool.rb +4 -2
- data/lib/bettercap/shell.rb +2 -0
- data/lib/bettercap/sniffer/parsers/base.rb +3 -12
- data/lib/bettercap/sniffer/parsers/custom.rb +21 -0
- data/lib/bettercap/sniffer/parsers/ftp.rb +2 -0
- data/lib/bettercap/sniffer/parsers/httpauth.rb +4 -5
- data/lib/bettercap/sniffer/parsers/https.rb +3 -4
- data/lib/bettercap/sniffer/parsers/irc.rb +2 -0
- data/lib/bettercap/sniffer/parsers/mail.rb +2 -0
- data/lib/bettercap/sniffer/parsers/ntlmss.rb +3 -3
- data/lib/bettercap/sniffer/parsers/post.rb +7 -7
- data/lib/bettercap/sniffer/parsers/url.rb +11 -11
- data/lib/bettercap/sniffer/sniffer.rb +8 -2
- data/lib/bettercap/spoofers/arp.rb +15 -5
- data/lib/bettercap/spoofers/none.rb +2 -0
- data/lib/bettercap/target.rb +29 -10
- data/lib/bettercap/update_checker.rb +2 -0
- data/lib/bettercap/version.rb +1 -1
- metadata +8 -40
- data/Rakefile +0 -7
- data/test/factories/firewall_factory_test.rb +0 -54
- data/test/factories/parser_factory_test.rb +0 -36
- data/test/factories/spoofer_factory_test.rb +0 -15
- data/test/firewalls/linux_firewall_test.rb +0 -72
- data/test/firewalls/osx_firewall_test.rb +0 -72
- data/test/helpers/mock_shell.rb +0 -17
- data/test/logger_test.rb +0 -12
- data/test/network_test.rb +0 -14
- data/test/pcap/ftp.pcap +0 -0
- data/test/pcap/http.pcap +0 -0
- data/test/pcap/packets.pcap +0 -0
- data/test/proxy/response_test.rb +0 -56
- data/test/shell_test.rb +0 -15
- data/test/sniffer/parsers/base_parser_test.rb +0 -20
- data/test/sniffer/parsers/ftp_parser_test.rb +0 -27
- data/test/sniffer/parsers/url_parser_test.rb +0 -25
- data/test/target_test.rb +0 -24
- data/test/test_helper.rb +0 -47
data/lib/bettercap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bettercap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Margaritelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.0.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: minitest
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '>='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
69
|
description: A complete, modular, portable and easily extensible MITM framework.
|
84
70
|
email: evilsocket@gmail.com
|
85
71
|
executables:
|
@@ -91,16 +77,15 @@ files:
|
|
91
77
|
- LICENSE.md
|
92
78
|
- README.md
|
93
79
|
- TODO.md
|
94
|
-
- Rakefile
|
95
80
|
- lib/bettercap/banner
|
96
81
|
- lib/bettercap/base/ifirewall.rb
|
97
82
|
- lib/bettercap/base/ispoofer.rb
|
98
83
|
- lib/bettercap/context.rb
|
99
|
-
- lib/bettercap/discovery/arp.rb
|
100
|
-
- lib/bettercap/discovery/base.rb
|
101
|
-
- lib/bettercap/discovery/icmp.rb
|
102
|
-
- lib/bettercap/discovery/udp.rb
|
103
|
-
- lib/bettercap/discovery.rb
|
84
|
+
- lib/bettercap/discovery/agents/arp.rb
|
85
|
+
- lib/bettercap/discovery/agents/base.rb
|
86
|
+
- lib/bettercap/discovery/agents/icmp.rb
|
87
|
+
- lib/bettercap/discovery/agents/udp.rb
|
88
|
+
- lib/bettercap/discovery/discovery.rb
|
104
89
|
- lib/bettercap/error.rb
|
105
90
|
- lib/bettercap/factories/firewall_factory.rb
|
106
91
|
- lib/bettercap/factories/parser_factory.rb
|
@@ -124,6 +109,7 @@ files:
|
|
124
109
|
- lib/bettercap/proxy/thread_pool.rb
|
125
110
|
- lib/bettercap/shell.rb
|
126
111
|
- lib/bettercap/sniffer/parsers/base.rb
|
112
|
+
- lib/bettercap/sniffer/parsers/custom.rb
|
127
113
|
- lib/bettercap/sniffer/parsers/ftp.rb
|
128
114
|
- lib/bettercap/sniffer/parsers/httpauth.rb
|
129
115
|
- lib/bettercap/sniffer/parsers/https.rb
|
@@ -140,24 +126,6 @@ files:
|
|
140
126
|
- lib/bettercap/version.rb
|
141
127
|
- lib/bettercap.rb
|
142
128
|
- bin/bettercap
|
143
|
-
- test/factories/firewall_factory_test.rb
|
144
|
-
- test/factories/parser_factory_test.rb
|
145
|
-
- test/factories/spoofer_factory_test.rb
|
146
|
-
- test/firewalls/linux_firewall_test.rb
|
147
|
-
- test/firewalls/osx_firewall_test.rb
|
148
|
-
- test/helpers/mock_shell.rb
|
149
|
-
- test/logger_test.rb
|
150
|
-
- test/network_test.rb
|
151
|
-
- test/pcap/ftp.pcap
|
152
|
-
- test/pcap/http.pcap
|
153
|
-
- test/pcap/packets.pcap
|
154
|
-
- test/proxy/response_test.rb
|
155
|
-
- test/shell_test.rb
|
156
|
-
- test/sniffer/parsers/base_parser_test.rb
|
157
|
-
- test/sniffer/parsers/ftp_parser_test.rb
|
158
|
-
- test/sniffer/parsers/url_parser_test.rb
|
159
|
-
- test/target_test.rb
|
160
|
-
- test/test_helper.rb
|
161
129
|
homepage: http://github.com/evilsocket/bettercap
|
162
130
|
licenses:
|
163
131
|
- GPL3
|
data/Rakefile
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'factories/firewall_factory'
|
3
|
-
|
4
|
-
class FirewallFactoryTest < MiniTest::Test
|
5
|
-
# TODO: Fix the tests for the Mac and Linux firewall initialization. Right now
|
6
|
-
# they are being created in a way which executes a shell command, causing
|
7
|
-
# tests to fail.
|
8
|
-
|
9
|
-
# def test_mac_firewall
|
10
|
-
# FirewallFactory.clear_firewall
|
11
|
-
#
|
12
|
-
# override_ruby_platform('darwin') do
|
13
|
-
# firewall = FirewallFactory.get_firewall
|
14
|
-
# assert_equal firewall.class, OSXFirewall
|
15
|
-
# end
|
16
|
-
# end
|
17
|
-
|
18
|
-
# def test_linux_firewall
|
19
|
-
# FirewallFactory.clear_firewall
|
20
|
-
#
|
21
|
-
# override_ruby_platform('linux') do
|
22
|
-
# firewall = FirewallFactory.get_firewall
|
23
|
-
# assert_equal firewall.class, LinuxFirewall
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
|
27
|
-
def test_unknown_firewall
|
28
|
-
FirewallFactory.clear_firewall
|
29
|
-
|
30
|
-
override_ruby_platform('ms') do
|
31
|
-
assert_raises BetterCap::Error do
|
32
|
-
FirewallFactory.get_firewall
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def override_ruby_platform(platform)
|
40
|
-
actual_platform = RUBY_PLATFORM
|
41
|
-
|
42
|
-
begin
|
43
|
-
redefine_const :RUBY_PLATFORM, platform
|
44
|
-
yield
|
45
|
-
ensure
|
46
|
-
redefine_const :RUBY_PLATFORM, actual_platform
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def redefine_const(const, value)
|
51
|
-
Object.send(:remove_const, const) if Object.const_defined?(const)
|
52
|
-
Object.const_set(const, value)
|
53
|
-
end
|
54
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'factories/parser_factory'
|
3
|
-
|
4
|
-
class ParserFactoryTest < MiniTest::Test
|
5
|
-
def test_getting_available_parsers
|
6
|
-
available_parsers = ParserFactory.available
|
7
|
-
assert available_parsers.include?('FTP')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_successful_cmdline_parser_name
|
11
|
-
parsers = ParserFactory.from_cmdline('ftp,https')
|
12
|
-
assert_equal parsers, ['FTP', 'HTTPS']
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_failed_cmdline_parser_name
|
16
|
-
assert_raises BetterCap::Error do
|
17
|
-
ParserFactory.from_cmdline 'unknown'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_no_cmdline_parser_provided
|
22
|
-
assert_raises BetterCap::Error do
|
23
|
-
ParserFactory.from_cmdline nil
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_successfully_loading_parsers
|
28
|
-
loaded = ParserFactory.load_by_names 'FTP'
|
29
|
-
assert_equal loaded.first.class, FtpParser
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_unsuccessfully_loading_parsers
|
33
|
-
loaded = ParserFactory.load_by_names 'unknown'
|
34
|
-
assert_empty loaded
|
35
|
-
end
|
36
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'factories/spoofer_factory'
|
3
|
-
|
4
|
-
class SpooferFactoryTest < MiniTest::Test
|
5
|
-
def test_getting_available_parsers
|
6
|
-
spoofers = SpooferFactory.available
|
7
|
-
assert spoofers.include?('ARP')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_unsuccessful_name
|
11
|
-
assert_raises BetterCap::Error do
|
12
|
-
SpooferFactory.get_by_name 'unknown'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'test_helper'
|
3
|
-
require 'firewalls/linux'
|
4
|
-
require 'helpers/mock_shell'
|
5
|
-
|
6
|
-
class OSXFirewallTest < MiniTest::Test
|
7
|
-
def test_enabling_forwarding
|
8
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
9
|
-
result = firewall.enable_forwarding true
|
10
|
-
|
11
|
-
assert_equal result, 'echo 1 > /proc/sys/net/ipv4/ip_forward'
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_disabling_forwarding
|
15
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
16
|
-
result = firewall.enable_forwarding false
|
17
|
-
|
18
|
-
assert_equal result, 'echo 0 > /proc/sys/net/ipv4/ip_forward'
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_enabling_icmp_broadcast
|
22
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
23
|
-
result = firewall.enable_icmp_bcast true
|
24
|
-
|
25
|
-
assert_equal result, 'echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts'
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_disabling_icmp_broadcast
|
29
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
30
|
-
result = firewall.enable_icmp_bcast false
|
31
|
-
|
32
|
-
assert_equal result, 'echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts'
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_whether_forwarding_is_enabled
|
36
|
-
expected_output = '1'
|
37
|
-
MockShell.stub :execute, expected_output do
|
38
|
-
|
39
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
40
|
-
result = firewall.forwarding_enabled?
|
41
|
-
|
42
|
-
assert result
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_whether_forwarding_is_disabled
|
48
|
-
expected_output = '0'
|
49
|
-
MockShell.stub :execute, expected_output do
|
50
|
-
|
51
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
52
|
-
result = firewall.forwarding_enabled?
|
53
|
-
|
54
|
-
refute result
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_enabling_the_firewall
|
60
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
61
|
-
result = firewall.enable true
|
62
|
-
|
63
|
-
assert_equal result, 'pfctl -e >/dev/null 2>&1'
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_disabling_the_firewall
|
67
|
-
firewall = stubbed_firewall(LinuxFirewall).new
|
68
|
-
result = firewall.enable false
|
69
|
-
|
70
|
-
assert_equal result, 'pfctl -d >/dev/null 2>&1'
|
71
|
-
end
|
72
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'test_helper'
|
3
|
-
require 'firewalls/osx'
|
4
|
-
require 'helpers/mock_shell'
|
5
|
-
|
6
|
-
class OSXFirewallTest < MiniTest::Test
|
7
|
-
def test_enabling_forwarding
|
8
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
9
|
-
result = firewall.enable_forwarding true
|
10
|
-
|
11
|
-
assert_equal result, 'sysctl -w net.inet.ip.forwarding=1'
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_disabling_forwarding
|
15
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
16
|
-
result = firewall.enable_forwarding false
|
17
|
-
|
18
|
-
assert_equal result, 'sysctl -w net.inet.ip.forwarding=0'
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_enabling_icmp_broadcast
|
22
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
23
|
-
result = firewall.enable_icmp_bcast true
|
24
|
-
|
25
|
-
assert_equal result, 'sysctl -w net.inet.icmp.bmcastecho=1'
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_disabling_icmp_broadcast
|
29
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
30
|
-
result = firewall.enable_icmp_bcast false
|
31
|
-
|
32
|
-
assert_equal result, 'sysctl -w net.inet.icmp.bmcastecho=0'
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_whether_forwarding_is_enabled
|
36
|
-
expected_output = 'net.inet.ip.forwarding: 1'
|
37
|
-
MockShell.stub :execute, expected_output do
|
38
|
-
|
39
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
40
|
-
result = firewall.forwarding_enabled?
|
41
|
-
|
42
|
-
assert result
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_whether_forwarding_is_disabled
|
48
|
-
expected_output = 'net.inet.ip.forwarding: 0'
|
49
|
-
MockShell.stub :execute, expected_output do
|
50
|
-
|
51
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
52
|
-
result = firewall.forwarding_enabled?
|
53
|
-
|
54
|
-
refute result
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_enabling_the_firewall
|
60
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
61
|
-
result = firewall.enable true
|
62
|
-
|
63
|
-
assert_equal result, 'pfctl -e >/dev/null 2>&1'
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_disabling_the_firewall
|
67
|
-
firewall = stubbed_firewall(OSXFirewall).new
|
68
|
-
result = firewall.enable false
|
69
|
-
|
70
|
-
assert_equal result, 'pfctl -d >/dev/null 2>&1'
|
71
|
-
end
|
72
|
-
end
|
data/test/helpers/mock_shell.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module MockShell
|
2
|
-
class << self
|
3
|
-
# For easy testing, this method just returns back the command it is given.
|
4
|
-
# The real Shell class will return the output string.
|
5
|
-
def execute(command)
|
6
|
-
return command
|
7
|
-
end
|
8
|
-
|
9
|
-
def ifconfig(iface = '')
|
10
|
-
self.execute("LANG=en && ifconfig #{iface}")
|
11
|
-
end
|
12
|
-
|
13
|
-
def arp
|
14
|
-
self.execute('LANG=en && arp -a')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/test/logger_test.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'test_helper'
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
class LoggerTest < MiniTest::Test
|
6
|
-
def test_writing_with_a_logfile
|
7
|
-
silence do |output|
|
8
|
-
Logger.raw 'Test log message'
|
9
|
-
assert_equal output.read, "Test log message\n"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
data/test/network_test.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'network'
|
3
|
-
|
4
|
-
class NetworkTest < MiniTest::Test
|
5
|
-
def test_valid_ip_address
|
6
|
-
valid = Network.is_ip? '127.0.0.1'
|
7
|
-
assert valid
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_invalid_ip_address
|
11
|
-
addresses = ['bad-ip', '255.255.255.255.255', '255.255', '999.999.999.999', 123]
|
12
|
-
addresses.each { |address| refute Network.is_ip?(address) }
|
13
|
-
end
|
14
|
-
end
|
data/test/pcap/ftp.pcap
DELETED
Binary file
|
data/test/pcap/http.pcap
DELETED
Binary file
|
data/test/pcap/packets.pcap
DELETED
Binary file
|
data/test/proxy/response_test.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'proxy/response'
|
3
|
-
|
4
|
-
class TestProxyResponse < MiniTest::Test
|
5
|
-
def test_response_status_parsing
|
6
|
-
response = response_with_line 'HTTP/1.1 200 OK'
|
7
|
-
assert_equal response.headers, ['HTTP/1.1 200 OK']
|
8
|
-
assert_equal response.code, '200 OK'
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_content_type_parsing
|
12
|
-
response = response_with_line 'Content-Type: text/xml'
|
13
|
-
assert_equal response.headers, ['Content-Type: text/xml']
|
14
|
-
assert_equal response.content_type, 'text/xml'
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_content_length_parsing
|
18
|
-
response = response_with_line 'Content-Length: 1024'
|
19
|
-
assert_equal response.headers, ['Content-Length: 1024']
|
20
|
-
assert_equal response.content_length, 1024
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_reaching_end_of_headers
|
24
|
-
response = response_with_line 'HTTP/1.1 200 OK'
|
25
|
-
refute response.headers_done
|
26
|
-
|
27
|
-
response << ''
|
28
|
-
assert response.headers_done
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_parsing_response_body
|
32
|
-
body = 'This line goes into the body'
|
33
|
-
|
34
|
-
response = response_with_line 'HTTP/1.1 200 OK'
|
35
|
-
response << ''
|
36
|
-
response << body
|
37
|
-
|
38
|
-
assert_equal response.body, body
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_textual
|
42
|
-
text_response = response_with_line 'Content-Type: text/xml'
|
43
|
-
image_response = response_with_line 'Content-Type: image/png'
|
44
|
-
|
45
|
-
assert text_response.textual?
|
46
|
-
refute image_response.textual?
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def response_with_line(line)
|
52
|
-
response = Proxy::Response.new
|
53
|
-
response << line
|
54
|
-
response
|
55
|
-
end
|
56
|
-
end
|