ronin-support 0.5.0.rc1 → 0.5.0.rc2

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.
@@ -3,7 +3,7 @@ require 'ronin/support/version'
3
3
 
4
4
  include Ronin
5
5
 
6
- RSpec.configure do |config|
7
- config.treat_symbols_as_metadata_keys_with_true_values = true
8
- config.filter_run_excluding :network
6
+ RSpec.configure do |specs|
7
+ specs.treat_symbols_as_metadata_keys_with_true_values = true
8
+ specs.filter_run_excluding :network
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ronin-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.rc1
4
+ version: 0.5.0.rc2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-31 00:00:00.000000000 Z
12
+ date: 2012-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chars
@@ -223,7 +223,11 @@ files:
223
223
  - lib/ronin/fuzzing.rb
224
224
  - lib/ronin/fuzzing/extensions.rb
225
225
  - lib/ronin/fuzzing/extensions/string.rb
226
+ - lib/ronin/fuzzing/fuzzer.rb
226
227
  - lib/ronin/fuzzing/fuzzing.rb
228
+ - lib/ronin/fuzzing/mutator.rb
229
+ - lib/ronin/fuzzing/repeater.rb
230
+ - lib/ronin/fuzzing/template.rb
227
231
  - lib/ronin/mixin.rb
228
232
  - lib/ronin/network.rb
229
233
  - lib/ronin/network/dns.rb
@@ -352,7 +356,12 @@ files:
352
356
  - spec/formatting/sql/string_spec.rb
353
357
  - spec/formatting/text/array_spec.rb
354
358
  - spec/formatting/text/string_spec.rb
355
- - spec/fuzzing/string_spec.rb
359
+ - spec/fuzzing/extensions/string_spec.rb
360
+ - spec/fuzzing/fuzzer_spec.rb
361
+ - spec/fuzzing/fuzzing_spec.rb
362
+ - spec/fuzzing/mutator_spec.rb
363
+ - spec/fuzzing/repeater_spec.rb
364
+ - spec/fuzzing/template_spec.rb
356
365
  - spec/mixin_spec.rb
357
366
  - spec/network/dns_spec.rb
358
367
  - spec/network/ftp_spec.rb
@@ -1,158 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/fuzzing/extensions/string'
3
-
4
- describe String do
5
- it "should provide String.generate" do
6
- described_class.should respond_to(:generate)
7
- end
8
-
9
- it "should provide String#repeating" do
10
- subject.should respond_to(:repeating)
11
- end
12
-
13
- it "should provide String#fuzz" do
14
- subject.should respond_to(:fuzz)
15
- end
16
-
17
- it "should provide String#mutate" do
18
- subject.should respond_to(:mutate)
19
- end
20
-
21
- describe "generate" do
22
- subject { described_class }
23
-
24
- it "should generate Strings from CharSets" do
25
- strings = subject.generate(:lowercase_hexadecimal, :numeric).to_a
26
-
27
- strings.grep(/^[0-9a-f][0-9]$/).should == strings
28
- end
29
-
30
- it "should generate Strings from lengths of CharSets" do
31
- strings = subject.generate([:numeric, 2]).to_a
32
-
33
- strings.grep(/^[0-9]{2}$/).should == strings
34
- end
35
-
36
- it "should generate Strings from varying lengths of CharSets" do
37
- strings = subject.generate([:numeric, 1..2]).to_a
38
-
39
- strings.grep(/^[0-9]{1,2}$/).should == strings
40
- end
41
-
42
- it "should generate Strings from custom CharSets" do
43
- strings = subject.generate([%w[a b c], 2]).to_a
44
-
45
- strings.grep(/^[abc]{2}$/).should == strings
46
- end
47
-
48
- it "should generate Strings containing known Strings" do
49
- strings = subject.generate('foo', [%w[a b c], 2]).to_a
50
-
51
- strings.grep(/^foo[abc]{2}$/).should == strings
52
- end
53
-
54
- it "should raise a TypeError for non String, Symbol, Enumerable CharSets" do
55
- lambda {
56
- subject.generate([Object.new, 2]).to_a
57
- }.should raise_error(TypeError)
58
- end
59
-
60
- it "should raise an ArgumentError for unknown CharSets" do
61
- lambda {
62
- subject.generate([:foo_bar, 2]).to_a
63
- }.should raise_error(ArgumentError)
64
- end
65
-
66
- it "should raise a TypeError for non Integer,Array,Range lengths" do
67
- lambda {
68
- subject.generate([:numeric, 'foo']).to_a
69
- }.should raise_error(TypeError)
70
- end
71
- end
72
-
73
- describe "#repeating" do
74
- subject { 'A' }
75
-
76
- context "when n is an Integer" do
77
- let(:n) { 100 }
78
-
79
- it "should multiply the String by n" do
80
- subject.repeating(n).should == (subject * n)
81
- end
82
- end
83
-
84
- context "when n is Enumerable" do
85
- let(:n) { [128, 512, 1024] }
86
-
87
- it "should repeat the String by each length" do
88
- strings = subject.repeating(n).to_a
89
-
90
- strings.should == n.map { |length| subject * length }
91
- end
92
- end
93
- end
94
-
95
- describe "#fuzz" do
96
- subject { 'GET /one/two/three' }
97
-
98
- context "matching" do
99
- it "should allow Regexps" do
100
- fuzzed = subject.fuzz(/GET/ => ['get']).to_a
101
-
102
- fuzzed.should == ['get /one/two/three']
103
- end
104
-
105
- it "should allow Strings" do
106
- fuzzed = subject.fuzz('GET' => ['get']).to_a
107
-
108
- fuzzed.should == ['get /one/two/three']
109
- end
110
-
111
- it "should match Symbols to Regexp constants" do
112
- fuzzed = subject.fuzz(:absolute_path => ['../../../..']).to_a
113
-
114
- fuzzed.should == ['GET ../../../..']
115
- end
116
- end
117
-
118
- context "substitution" do
119
- it "should allow Procs" do
120
- fuzzed = subject.fuzz('GET' => [lambda { |s| s.downcase }]).to_a
121
-
122
- fuzzed.should == ['get /one/two/three']
123
- end
124
-
125
- it "should allow Integers" do
126
- fuzzed = subject.fuzz(' ' => [0x09]).to_a
127
-
128
- fuzzed.should == ["GET\t/one/two/three"]
129
- end
130
-
131
- it "should map Symbols to Fuzzing methods" do
132
- fuzzed = subject.fuzz(/\/.*/ => :format_strings).to_a
133
-
134
- fuzzed.should_not == [subject]
135
- end
136
-
137
- it "should incrementally replace each occurrence" do
138
- fuzzed = subject.fuzz('/' => ["\n\r"]).to_a
139
-
140
- fuzzed.should == [
141
- "GET \n\rone/two/three",
142
- "GET /one\n\rtwo/three",
143
- "GET /one/two\n\rthree"
144
- ]
145
- end
146
-
147
- it "should replace each occurrence with each substitution" do
148
- fuzzed = subject.fuzz('GET' => ["\n\rGET", "G\n\rET", "GET\n\r"]).to_a
149
-
150
- fuzzed.should == [
151
- "\n\rGET /one/two/three",
152
- "G\n\rET /one/two/three",
153
- "GET\n\r /one/two/three"
154
- ]
155
- end
156
- end
157
- end
158
- end