ronin-support 0.5.1 → 0.5.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.
Files changed (194) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.github/workflows/ruby.yml +28 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +1 -1
  6. data/ChangeLog.md +28 -0
  7. data/Gemfile +6 -7
  8. data/README.md +53 -32
  9. data/Rakefile +1 -2
  10. data/gemspec.yml +16 -7
  11. data/lib/ronin/binary.rb +5 -5
  12. data/lib/ronin/binary/hexdump.rb +5 -5
  13. data/lib/ronin/binary/hexdump/parser.rb +5 -5
  14. data/lib/ronin/binary/struct.rb +5 -5
  15. data/lib/ronin/binary/template.rb +7 -7
  16. data/lib/ronin/extensions.rb +5 -5
  17. data/lib/ronin/extensions/enumerable.rb +5 -5
  18. data/lib/ronin/extensions/file.rb +37 -31
  19. data/lib/ronin/extensions/ip_addr.rb +6 -7
  20. data/lib/ronin/extensions/kernel.rb +5 -5
  21. data/lib/ronin/extensions/meta.rb +5 -5
  22. data/lib/ronin/extensions/regexp.rb +5 -5
  23. data/lib/ronin/extensions/resolv.rb +5 -5
  24. data/lib/ronin/extensions/string.rb +5 -5
  25. data/lib/ronin/formatting.rb +5 -5
  26. data/lib/ronin/formatting/binary.rb +5 -5
  27. data/lib/ronin/formatting/digest.rb +5 -5
  28. data/lib/ronin/formatting/extensions.rb +5 -5
  29. data/lib/ronin/formatting/extensions/binary.rb +5 -5
  30. data/lib/ronin/formatting/extensions/binary/array.rb +6 -6
  31. data/lib/ronin/formatting/extensions/binary/base64.rb +5 -5
  32. data/lib/ronin/formatting/extensions/binary/file.rb +5 -5
  33. data/lib/ronin/formatting/extensions/binary/float.rb +6 -6
  34. data/lib/ronin/formatting/extensions/binary/integer.rb +6 -6
  35. data/lib/ronin/formatting/extensions/binary/string.rb +6 -6
  36. data/lib/ronin/formatting/extensions/digest.rb +5 -5
  37. data/lib/ronin/formatting/extensions/digest/file.rb +5 -5
  38. data/lib/ronin/formatting/extensions/digest/string.rb +5 -5
  39. data/lib/ronin/formatting/extensions/html.rb +5 -5
  40. data/lib/ronin/formatting/extensions/html/integer.rb +5 -5
  41. data/lib/ronin/formatting/extensions/html/string.rb +7 -7
  42. data/lib/ronin/formatting/extensions/http.rb +5 -5
  43. data/lib/ronin/formatting/extensions/http/integer.rb +6 -6
  44. data/lib/ronin/formatting/extensions/http/string.rb +7 -7
  45. data/lib/ronin/formatting/extensions/sql.rb +5 -5
  46. data/lib/ronin/formatting/extensions/sql/string.rb +15 -13
  47. data/lib/ronin/formatting/extensions/text.rb +5 -5
  48. data/lib/ronin/formatting/extensions/text/array.rb +5 -5
  49. data/lib/ronin/formatting/extensions/text/string.rb +5 -5
  50. data/lib/ronin/formatting/html.rb +5 -5
  51. data/lib/ronin/formatting/http.rb +5 -5
  52. data/lib/ronin/formatting/sql.rb +5 -5
  53. data/lib/ronin/formatting/text.rb +5 -5
  54. data/lib/ronin/fuzzing.rb +5 -5
  55. data/lib/ronin/fuzzing/extensions.rb +5 -5
  56. data/lib/ronin/fuzzing/extensions/string.rb +5 -5
  57. data/lib/ronin/fuzzing/fuzzer.rb +5 -5
  58. data/lib/ronin/fuzzing/fuzzing.rb +7 -7
  59. data/lib/ronin/fuzzing/mutator.rb +5 -5
  60. data/lib/ronin/fuzzing/repeater.rb +5 -5
  61. data/lib/ronin/fuzzing/template.rb +5 -5
  62. data/lib/ronin/mixin.rb +2 -2
  63. data/lib/ronin/network.rb +5 -5
  64. data/lib/ronin/network/dns.rb +5 -5
  65. data/lib/ronin/network/esmtp.rb +5 -5
  66. data/lib/ronin/network/extensions.rb +5 -5
  67. data/lib/ronin/network/extensions/dns.rb +5 -5
  68. data/lib/ronin/network/extensions/dns/net.rb +5 -5
  69. data/lib/ronin/network/extensions/esmtp.rb +5 -5
  70. data/lib/ronin/network/extensions/esmtp/net.rb +5 -5
  71. data/lib/ronin/network/extensions/http.rb +5 -5
  72. data/lib/ronin/network/extensions/http/net.rb +5 -5
  73. data/lib/ronin/network/extensions/http/uri/http.rb +5 -5
  74. data/lib/ronin/network/extensions/imap.rb +5 -5
  75. data/lib/ronin/network/extensions/imap/net.rb +5 -5
  76. data/lib/ronin/network/extensions/pop3.rb +5 -5
  77. data/lib/ronin/network/extensions/pop3/net.rb +5 -5
  78. data/lib/ronin/network/extensions/smtp.rb +5 -5
  79. data/lib/ronin/network/extensions/smtp/net.rb +5 -5
  80. data/lib/ronin/network/extensions/ssl.rb +5 -5
  81. data/lib/ronin/network/extensions/ssl/net.rb +5 -5
  82. data/lib/ronin/network/extensions/tcp.rb +5 -5
  83. data/lib/ronin/network/extensions/tcp/net.rb +5 -5
  84. data/lib/ronin/network/extensions/telnet.rb +5 -5
  85. data/lib/ronin/network/extensions/telnet/net.rb +5 -5
  86. data/lib/ronin/network/extensions/udp.rb +5 -5
  87. data/lib/ronin/network/extensions/udp/net.rb +5 -5
  88. data/lib/ronin/network/ftp.rb +5 -5
  89. data/lib/ronin/network/http.rb +5 -5
  90. data/lib/ronin/network/http/exceptions.rb +5 -5
  91. data/lib/ronin/network/http/exceptions/unknown_request.rb +5 -5
  92. data/lib/ronin/network/http/http.rb +52 -57
  93. data/lib/ronin/network/http/proxy.rb +5 -5
  94. data/lib/ronin/network/imap.rb +5 -5
  95. data/lib/ronin/network/mixins.rb +5 -5
  96. data/lib/ronin/network/mixins/dns.rb +5 -5
  97. data/lib/ronin/network/mixins/esmtp.rb +5 -5
  98. data/lib/ronin/network/mixins/ftp.rb +5 -5
  99. data/lib/ronin/network/mixins/http.rb +7 -7
  100. data/lib/ronin/network/mixins/imap.rb +5 -5
  101. data/lib/ronin/network/mixins/mixin.rb +5 -5
  102. data/lib/ronin/network/mixins/pop3.rb +5 -5
  103. data/lib/ronin/network/mixins/smtp.rb +5 -5
  104. data/lib/ronin/network/mixins/ssl.rb +5 -5
  105. data/lib/ronin/network/mixins/tcp.rb +5 -5
  106. data/lib/ronin/network/mixins/telnet.rb +5 -5
  107. data/lib/ronin/network/mixins/udp.rb +5 -5
  108. data/lib/ronin/network/mixins/unix.rb +5 -5
  109. data/lib/ronin/network/network.rb +5 -5
  110. data/lib/ronin/network/pop3.rb +5 -5
  111. data/lib/ronin/network/proxy.rb +5 -5
  112. data/lib/ronin/network/smtp.rb +5 -5
  113. data/lib/ronin/network/smtp/email.rb +6 -6
  114. data/lib/ronin/network/smtp/smtp.rb +5 -5
  115. data/lib/ronin/network/ssl.rb +7 -7
  116. data/lib/ronin/network/tcp.rb +5 -5
  117. data/lib/ronin/network/tcp/proxy.rb +5 -5
  118. data/lib/ronin/network/tcp/tcp.rb +32 -23
  119. data/lib/ronin/network/telnet.rb +7 -5
  120. data/lib/ronin/network/udp.rb +5 -5
  121. data/lib/ronin/network/udp/proxy.rb +5 -5
  122. data/lib/ronin/network/udp/udp.rb +28 -26
  123. data/lib/ronin/network/unix.rb +7 -7
  124. data/lib/ronin/path.rb +32 -36
  125. data/lib/ronin/spec/ui/output.rb +5 -5
  126. data/lib/ronin/support.rb +5 -5
  127. data/lib/ronin/support/inflector.rb +5 -5
  128. data/lib/ronin/support/support.rb +5 -5
  129. data/lib/ronin/support/version.rb +6 -6
  130. data/lib/ronin/templates.rb +5 -5
  131. data/lib/ronin/templates/erb.rb +5 -5
  132. data/lib/ronin/templates/template.rb +5 -5
  133. data/lib/ronin/ui/output.rb +5 -5
  134. data/lib/ronin/ui/output/helpers.rb +5 -5
  135. data/lib/ronin/ui/output/output.rb +17 -21
  136. data/lib/ronin/ui/output/terminal.rb +5 -5
  137. data/lib/ronin/ui/output/terminal/color.rb +5 -5
  138. data/lib/ronin/ui/output/terminal/raw.rb +5 -5
  139. data/lib/ronin/ui/shell.rb +5 -5
  140. data/lib/ronin/wordlist.rb +7 -7
  141. data/ronin-support.gemspec +1 -0
  142. data/spec/binary/hexdump/parser_spec.rb +22 -22
  143. data/spec/binary/struct_spec.rb +56 -56
  144. data/spec/binary/template_spec.rb +106 -104
  145. data/spec/extensions/enumerable_spec.rb +4 -4
  146. data/spec/extensions/file_spec.rb +12 -14
  147. data/spec/extensions/ip_addr_spec.rb +30 -30
  148. data/spec/extensions/kernel_spec.rb +7 -7
  149. data/spec/extensions/regexp_spec.rb +69 -69
  150. data/spec/extensions/resolv_spec.rb +2 -2
  151. data/spec/extensions/string_spec.rb +30 -29
  152. data/spec/formatting/binary/array_spec.rb +2 -2
  153. data/spec/formatting/binary/base64_spec.rb +8 -8
  154. data/spec/formatting/binary/float_spec.rb +6 -4
  155. data/spec/formatting/binary/integer_spec.rb +25 -25
  156. data/spec/formatting/binary/string_spec.rb +32 -30
  157. data/spec/formatting/digest/string_spec.rb +5 -5
  158. data/spec/formatting/html/integer_spec.rb +6 -6
  159. data/spec/formatting/html/string_spec.rb +10 -10
  160. data/spec/formatting/http/integer_spec.rb +3 -3
  161. data/spec/formatting/http/string_spec.rb +5 -5
  162. data/spec/formatting/sql/string_spec.rb +21 -19
  163. data/spec/formatting/text/array_spec.rb +15 -15
  164. data/spec/formatting/text/string_spec.rb +33 -33
  165. data/spec/fuzzing/extensions/string_spec.rb +11 -11
  166. data/spec/fuzzing/fuzzer_spec.rb +15 -15
  167. data/spec/fuzzing/fuzzing_spec.rb +5 -5
  168. data/spec/fuzzing/mutator_spec.rb +15 -15
  169. data/spec/fuzzing/repeater_spec.rb +7 -7
  170. data/spec/fuzzing/template_spec.rb +11 -11
  171. data/spec/mixin_spec.rb +10 -12
  172. data/spec/network/dns_spec.rb +34 -32
  173. data/spec/network/ftp_spec.rb +9 -9
  174. data/spec/network/http/http_spec.rb +237 -144
  175. data/spec/network/http/proxy_spec.rb +37 -37
  176. data/spec/network/network_spec.rb +1 -1
  177. data/spec/network/proxy_spec.rb +19 -19
  178. data/spec/network/smtp/email_spec.rb +14 -14
  179. data/spec/network/ssl_spec.rb +9 -9
  180. data/spec/network/tcp/proxy_spec.rb +9 -7
  181. data/spec/network/tcp/tcp_spec.rb +161 -118
  182. data/spec/network/telnet_spec.rb +5 -5
  183. data/spec/network/udp/udp_spec.rb +123 -96
  184. data/spec/network/unix_spec.rb +24 -25
  185. data/spec/path_spec.rb +43 -18
  186. data/spec/spec_helper.rb +0 -1
  187. data/spec/support/inflector_spec.rb +4 -4
  188. data/spec/support_spec.rb +1 -1
  189. data/spec/templates/erb_spec.rb +3 -3
  190. data/spec/templates/template_spec.rb +10 -10
  191. data/spec/ui/shell_spec.rb +15 -15
  192. data/spec/wordlist_spec.rb +19 -19
  193. metadata +408 -366
  194. data/.gemtest +0 -0
data/spec/path_spec.rb CHANGED
@@ -7,45 +7,52 @@ describe Path do
7
7
  let(:n) { 7 }
8
8
 
9
9
  it "should inherit from Pathname" do
10
- subject.superclass.should == Pathname
10
+ expect(subject.superclass).to eq(Pathname)
11
11
  end
12
12
 
13
- it "should provide the root path" do
14
- path = subject.root
13
+ describe "#initialize" do
14
+ it "should accept a separator argument" do
15
+ path = described_class.new('foo',"\\")
15
16
 
16
- path.should.class == Path
17
- path.to_s.should == '/'
17
+ expect(path.separator).to eq("\\")
18
+ end
19
+
20
+ it "should default the separator to File::SEPARATOR" do
21
+ path = described_class.new('foo')
22
+
23
+ expect(path.separator).to eq(File::SEPARATOR)
24
+ end
18
25
  end
19
26
 
20
27
  describe "up" do
21
28
  it "should be able to traverse up 0 directories" do
22
- subject.up(0).should == File::SEPARATOR
29
+ expect(subject.up(0)).to eq(File::SEPARATOR)
23
30
  end
24
31
 
25
32
  it "should raise an ArgumentError when not passed an Integer or Enumerable" do
26
- lambda {
33
+ expect {
27
34
  subject.up(1.5)
28
- }.should raise_error(ArgumentError)
35
+ }.to raise_error(ArgumentError)
29
36
  end
30
37
 
31
38
  it "should raise an ArgumentError on negative number of directories" do
32
- lambda {
39
+ expect {
33
40
  subject.up(-1)
34
- }.should raise_error(ArgumentError)
41
+ }.to raise_error(ArgumentError)
35
42
  end
36
43
 
37
44
  it "should create directory-escaping paths" do
38
- subject.up(n).to_s.should == (['..'] * n).join(File::SEPARATOR)
45
+ expect(subject.up(n).to_s).to eq((['..'] * n).join(File::SEPARATOR))
39
46
  end
40
47
 
41
48
  it "should create a range of directory-escaping paths" do
42
49
  range = 7..10
43
50
 
44
- subject.up(range).should == range.map { |i| Path.up(i) }
51
+ expect(subject.up(range)).to eq(range.map { |i| Path.up(i) })
45
52
  end
46
53
 
47
54
  it "should allow using custom path separators" do
48
- subject.up(n,'\\').to_s.should == (['..'] * n).join("\\")
55
+ expect(subject.up(n,'\\').to_s).to eq((['..'] * n).join("\\"))
49
56
  end
50
57
  end
51
58
 
@@ -56,31 +63,49 @@ describe Path do
56
63
  sub_path = File.join('one','two')
57
64
  expected = [subject, sub_path].join(File::SEPARATOR)
58
65
 
59
- subject.join(sub_path).to_s.should == expected
66
+ expect(subject.join(sub_path).to_s).to eq(expected)
60
67
  end
61
68
 
62
69
  it "should join with a sub-directory" do
63
70
  sub_directory = 'three'
64
71
  expected = [subject, sub_directory].join(File::SEPARATOR)
65
72
 
66
- subject.join(sub_directory).to_s.should == expected
73
+ expect(subject.join(sub_directory).to_s).to eq(expected)
67
74
  end
68
75
 
69
76
  it "should not collapse directory traversals" do
70
77
  traversal = Path.up(n)
71
78
  expected = [subject, traversal].join(File::SEPARATOR)
72
79
 
73
- subject.join(traversal).to_s.should == expected
80
+ expect(subject.join(traversal).to_s).to eq(expected)
81
+ end
82
+
83
+ it "should filter out leading directory separators" do
84
+ expected = [subject, 'sub'].join(File::SEPARATOR)
85
+
86
+ expect(subject.join('/','sub','/').to_s).to eq(expected)
74
87
  end
75
88
 
76
89
  it "should filter out extra directory separators" do
77
90
  expected = [subject, 'sub'].join(File::SEPARATOR)
78
91
 
79
- subject.join('/','sub','/').to_s.should == expected
92
+ expect(subject.join('/sub').to_s).to eq(expected)
80
93
  end
81
94
 
82
95
  it "should join with the root path" do
83
- Path.root.join('etc','passwd').to_s.should == '/etc/passwd'
96
+ expect(Path.root.join('etc','passwd').to_s).to eq('/etc/passwd')
97
+ end
98
+
99
+ context "with a custom path seperator" do
100
+ let(:separator) { "\\" }
101
+
102
+ subject { described_class.new('foo',separator) }
103
+
104
+ it "should pass the path separator to the new path" do
105
+ new_path = subject.join('bar','baz')
106
+
107
+ expect(new_path.separator).to eq(separator)
108
+ end
84
109
  end
85
110
  end
86
111
  end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,5 @@ require 'ronin/support/version'
4
4
  include Ronin
5
5
 
6
6
  RSpec.configure do |specs|
7
- specs.treat_symbols_as_metadata_keys_with_true_values = true
8
7
  specs.filter_run_excluding :network
9
8
  end
@@ -5,18 +5,18 @@ describe "Ronin::Support::Inflector" do
5
5
  subject { Ronin::Support::Inflector }
6
6
 
7
7
  it "should not be nil" do
8
- subject.should_not be_nil
8
+ expect(subject).not_to be_nil
9
9
  end
10
10
 
11
11
  it "should support pluralizing words" do
12
- subject.pluralize('word').should == 'words'
12
+ expect(subject.pluralize('word')).to eq('words')
13
13
  end
14
14
 
15
15
  it "should support singularizing words" do
16
- subject.singularize('words').should == 'word'
16
+ expect(subject.singularize('words')).to eq('word')
17
17
  end
18
18
 
19
19
  it "should support humanizing words" do
20
- subject.humanize('word_id').should == 'Word'
20
+ expect(subject.humanize('word_id')).to eq('Word')
21
21
  end
22
22
  end
data/spec/support_spec.rb CHANGED
@@ -3,6 +3,6 @@ require 'ronin/support/version'
3
3
 
4
4
  describe Support do
5
5
  it "should have a version" do
6
- subject.const_defined?('VERSION').should == true
6
+ expect(subject.const_defined?('VERSION')).to be(true)
7
7
  end
8
8
  end
@@ -6,16 +6,16 @@ require 'templates/classes/example_erb'
6
6
  describe Templates::Erb do
7
7
  subject { ExampleErb.new }
8
8
 
9
- before(:all) do
9
+ before do
10
10
  subject.x = 2
11
11
  subject.y = 3
12
12
  end
13
13
 
14
14
  it "should render inline ERB templates" do
15
- subject.erb(%{<%= 'hello' %>}).should == 'hello'
15
+ expect(subject.erb(%{<%= 'hello' %>})).to eq('hello')
16
16
  end
17
17
 
18
18
  it "should render ERB templates using the binding of the object" do
19
- subject.erb(%{<%= @x %> <%= @y %>}).should == '2 3'
19
+ expect(subject.erb(%{<%= @x %> <%= @y %>})).to eq('2 3')
20
20
  end
21
21
  end
@@ -11,44 +11,44 @@ describe Templates::Template do
11
11
  subject { ExampleTemplate.new }
12
12
 
13
13
  it "should return the result of the block when entering a template" do
14
- subject.enter_example_template { |path|
14
+ expect(subject.enter_example_template { |path|
15
15
  'result'
16
- }.should == 'result'
16
+ }).to eq('result')
17
17
  end
18
18
 
19
19
  it "should be able to find templates relative to the current one" do
20
20
  subject.enter_example_template do |path|
21
- path.should == example_template
21
+ expect(path).to eq(example_template)
22
22
  end
23
23
  end
24
24
 
25
25
  it "should be able to find static templates" do
26
26
  subject.enter_relative_template do |path|
27
- path.should == relative_template
27
+ expect(path).to eq(relative_template)
28
28
  end
29
29
  end
30
30
 
31
31
  it "should raise a RuntimeError when entering an unknown template" do
32
- lambda {
32
+ expect {
33
33
  subject.enter_missing_template { |path| }
34
- }.should raise_error(RuntimeError)
34
+ }.to raise_error(RuntimeError)
35
35
  end
36
36
 
37
37
  it "should be able to read templates relative to the current one" do
38
38
  subject.read_example_template do |contents|
39
- contents.should == File.read(example_template)
39
+ expect(contents).to eq(File.read(example_template))
40
40
  end
41
41
  end
42
42
 
43
43
  it "should be able to find static templates" do
44
44
  subject.read_relative_template do |contents|
45
- contents.should == File.read(relative_template)
45
+ expect(contents).to eq(File.read(relative_template))
46
46
  end
47
47
  end
48
48
 
49
49
  it "should raise a RuntimeError when entering an unknown template" do
50
- lambda {
50
+ expect {
51
51
  subject.read_missing_template { |path| }
52
- }.should raise_error(RuntimeError)
52
+ }.to raise_error(RuntimeError)
53
53
  end
54
54
  end
@@ -13,7 +13,7 @@ describe UI::Shell do
13
13
 
14
14
  shell.call(line)
15
15
 
16
- lines.should == [line]
16
+ expect(lines).to eq([line])
17
17
  end
18
18
  end
19
19
 
@@ -22,11 +22,11 @@ describe UI::Shell do
22
22
 
23
23
  describe "#commands" do
24
24
  it "should include builtin methods" do
25
- subject.commands.should include('help', 'exit')
25
+ expect(subject.commands).to include('help', 'exit')
26
26
  end
27
27
 
28
28
  it "should include protected methods" do
29
- subject.commands.should include(
29
+ expect(subject.commands).to include(
30
30
  'command1',
31
31
  'command_with_arg',
32
32
  'command_with_args'
@@ -34,49 +34,49 @@ describe UI::Shell do
34
34
  end
35
35
 
36
36
  it "should not include public methods" do
37
- subject.commands.should_not include('a_public_method')
37
+ expect(subject.commands).not_to include('a_public_method')
38
38
  end
39
39
  end
40
40
 
41
41
  describe "#call" do
42
42
  it "should ignore empty lines" do
43
- subject.call('').should == false
43
+ expect(subject.call('')).to be(false)
44
44
  end
45
45
 
46
46
  it "should ignore white-space lines" do
47
- subject.call(" \t ").should == false
47
+ expect(subject.call(" \t ")).to be(false)
48
48
  end
49
49
 
50
50
  it "should not allow calling the handler method" do
51
- subject.call('handler').should == false
51
+ expect(subject.call('handler')).to be(false)
52
52
  end
53
53
 
54
54
  it "should not allow calling unknown commands" do
55
- subject.call('an_unknown_command').should == false
55
+ expect(subject.call('an_unknown_command')).to be(false)
56
56
  end
57
57
 
58
58
  it "should not allow calling unknown commands" do
59
- subject.call('an_unknown_command').should == false
59
+ expect(subject.call('an_unknown_command')).to be(false)
60
60
  end
61
61
 
62
62
  it "should not allow calling public methods" do
63
- subject.call('a_public_method').should == false
63
+ expect(subject.call('a_public_method')).to be(false)
64
64
  end
65
65
 
66
66
  it "should allow calling protected methods" do
67
- subject.call('command1').should == :command1
67
+ expect(subject.call('command1')).to eq(:command1)
68
68
  end
69
69
 
70
70
  it "should raise an exception when passing invalid number of arguments" do
71
- lambda {
71
+ expect {
72
72
  subject.call('command_with_arg too many args')
73
- }.should raise_error(ArgumentError)
73
+ }.to raise_error(ArgumentError)
74
74
  end
75
75
 
76
76
  it "should splat the command arguments to the command method" do
77
- subject.call('command_with_args one two three').should == [
77
+ expect(subject.call('command_with_args one two three')).to eq([
78
78
  'one', 'two', 'three'
79
- ]
79
+ ])
80
80
  end
81
81
  end
82
82
  end
@@ -7,7 +7,7 @@ describe Wordlist do
7
7
  let(:words) { %w[foo bar baz] }
8
8
  let(:path) { File.join(Dir.tmpdir,'ronin-support-wordlist') }
9
9
 
10
- before(:all) do
10
+ before do
11
11
  File.open(path,'w') do |file|
12
12
  file.puts(*words)
13
13
  end
@@ -36,7 +36,7 @@ describe Wordlist do
36
36
 
37
37
  subject.parse(text) { |word| seen << word }
38
38
 
39
- seen.should =~ words
39
+ expect(seen).to match_array(words)
40
40
  end
41
41
  end
42
42
 
@@ -47,7 +47,7 @@ describe Wordlist do
47
47
  it "should return the new Wordlist object" do
48
48
  wordlist = described_class.create(created_path,text)
49
49
 
50
- wordlist.to_a.should =~ words
50
+ expect(wordlist.to_a).to match_array(words)
51
51
  end
52
52
 
53
53
  it "should create a wordlist file from text" do
@@ -55,7 +55,7 @@ describe Wordlist do
55
55
 
56
56
  saved_words = File.open(created_path).each_line.map(&:chomp)
57
57
 
58
- saved_words.should =~ words
58
+ expect(saved_words).to match_array(words)
59
59
  end
60
60
 
61
61
  it "should apply mutations to the created wordlist" do
@@ -63,29 +63,29 @@ describe Wordlist do
63
63
 
64
64
  saved_words = File.open(created_path).each_line.map(&:chomp)
65
65
 
66
- saved_words.should =~ %w[foo f0o fo0 f00 bar baz]
66
+ expect(saved_words).to match_array(%w[foo f0o fo0 f00 bar baz])
67
67
  end
68
68
 
69
- after(:all) { FileUtils.rm(created_path) }
69
+ after { FileUtils.rm(created_path) }
70
70
  end
71
71
 
72
72
  describe "#initialize" do
73
73
  it "should accept a list of words" do
74
74
  wordlist = described_class.new(path)
75
75
 
76
- wordlist.to_a.should == words
76
+ expect(wordlist.to_a).to eq(words)
77
77
  end
78
78
 
79
79
  it "should accept a path to a wordlist file" do
80
80
  wordlist = described_class.new(path)
81
81
 
82
- wordlist.to_a.should == words
82
+ expect(wordlist.to_a).to eq(words)
83
83
  end
84
84
 
85
85
  it "should raise a TypeError for non-String / non-Enumerable objects" do
86
- lambda {
86
+ expect {
87
87
  described_class.new(Object.new)
88
- }.should raise_error(TypeError)
88
+ }.to raise_error(TypeError)
89
89
  end
90
90
  end
91
91
 
@@ -94,7 +94,7 @@ describe Wordlist do
94
94
  subject { described_class.new(path) }
95
95
 
96
96
  it "should enumerate over the words" do
97
- subject.each_word.to_a.should == words
97
+ expect(subject.each_word.to_a).to eq(words)
98
98
  end
99
99
  end
100
100
 
@@ -102,7 +102,7 @@ describe Wordlist do
102
102
  subject { described_class.new(words) }
103
103
 
104
104
  it "should enumerate over the words" do
105
- subject.each_word.to_a.should == words
105
+ expect(subject.each_word.to_a).to eq(words)
106
106
  end
107
107
  end
108
108
  end
@@ -111,24 +111,24 @@ describe Wordlist do
111
111
  it "should rewind file lists" do
112
112
  subject.each { |word| }
113
113
 
114
- subject.to_a.should == words
114
+ expect(subject.to_a).to eq(words)
115
115
  end
116
116
 
117
117
  it "should apply additional mutation rules" do
118
118
  wordlist = described_class.new(words)
119
119
  wordlist.mutations['o'] = ['0']
120
120
 
121
- wordlist.to_a.should =~ %w[foo f0o fo0 f00 bar baz]
121
+ expect(wordlist.to_a).to match_array(%w[foo f0o fo0 f00 bar baz])
122
122
  end
123
123
  end
124
124
 
125
125
  describe "#each_n_words" do
126
126
  it "should enumerate over every combination of N words" do
127
- subject.each_n_words(2).to_a.should == %w[
127
+ expect(subject.each_n_words(2).to_a).to eq(%w[
128
128
  foofoo foobar foobaz
129
129
  barfoo barbar barbaz
130
130
  bazfoo bazbar bazbaz
131
- ]
131
+ ])
132
132
  end
133
133
  end
134
134
 
@@ -141,11 +141,11 @@ describe Wordlist do
141
141
  saved_words = File.open(saved_path).each_line.map(&:chomp)
142
142
  expected_words = subject.to_a
143
143
 
144
- saved_words.should == expected_words
144
+ expect(saved_words).to eq(expected_words)
145
145
  end
146
146
 
147
- after(:all) { FileUtils.rm(saved_path) }
147
+ after { FileUtils.rm(saved_path) }
148
148
  end
149
149
 
150
- after(:all) { FileUtils.rm(path) }
150
+ after { FileUtils.rm(path) }
151
151
  end