ronin-support 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
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