metasploit_data_models 0.24.4 → 0.24.5

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -3
  3. data/.travis.yml +3 -6
  4. data/CONTRIBUTING.md +52 -10
  5. data/Gemfile +8 -1
  6. data/Rakefile +0 -23
  7. data/app/models/mdm/api_key.rb +1 -41
  8. data/app/models/mdm/client.rb +1 -41
  9. data/app/models/mdm/cred.rb +19 -107
  10. data/app/models/mdm/event.rb +1 -48
  11. data/app/models/mdm/exploit_attempt.rb +16 -65
  12. data/app/models/mdm/exploited_host.rb +1 -28
  13. data/app/models/mdm/host_detail.rb +1 -45
  14. data/app/models/mdm/host_tag.rb +8 -6
  15. data/app/models/mdm/listener.rb +1 -53
  16. data/app/models/mdm/macro.rb +0 -42
  17. data/app/models/mdm/mod_ref.rb +0 -21
  18. data/app/models/mdm/module/action.rb +0 -15
  19. data/app/models/mdm/module/arch.rb +0 -10
  20. data/app/models/mdm/module/author.rb +0 -16
  21. data/app/models/mdm/module/mixin.rb +0 -13
  22. data/app/models/mdm/module/platform.rb +0 -11
  23. data/app/models/mdm/module/target.rb +0 -18
  24. data/app/models/mdm/nexpose_console.rb +4 -82
  25. data/app/models/mdm/profile.rb +0 -36
  26. data/app/models/mdm/route.rb +5 -17
  27. data/app/models/mdm/session_event.rb +1 -33
  28. data/app/models/mdm/tag.rb +10 -49
  29. data/app/models/mdm/task.rb +45 -94
  30. data/app/models/mdm/task_cred.rb +0 -29
  31. data/app/models/mdm/task_host.rb +0 -25
  32. data/app/models/mdm/task_service.rb +0 -25
  33. data/app/models/mdm/task_session.rb +0 -25
  34. data/app/models/mdm/user.rb +6 -188
  35. data/app/models/mdm/vuln_attempt.rb +12 -37
  36. data/app/models/mdm/vuln_detail.rb +5 -139
  37. data/app/models/mdm/vuln_ref.rb +1 -4
  38. data/app/models/mdm/web_form.rb +1 -35
  39. data/app/models/mdm/web_page.rb +1 -70
  40. data/app/models/mdm/web_site.rb +1 -51
  41. data/app/models/mdm/wmap_request.rb +0 -85
  42. data/app/models/mdm/wmap_target.rb +0 -40
  43. data/app/models/mdm/workspace.rb +14 -152
  44. data/app/models/metasploit_data_models/automatic_exploitation.rb +16 -0
  45. data/app/models/metasploit_data_models/automatic_exploitation/match.rb +24 -19
  46. data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +5 -33
  47. data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +4 -22
  48. data/app/models/metasploit_data_models/automatic_exploitation/run.rb +3 -13
  49. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
  50. data/app/models/metasploit_data_models/module_run.rb +1 -1
  51. data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
  52. data/app/validators/ip_format_validator.rb +0 -4
  53. data/app/validators/parameters_validator.rb +0 -12
  54. data/app/validators/password_is_strong_validator.rb +1 -10
  55. data/lib/mdm/host/operating_system_normalization.rb +10 -7
  56. data/lib/metasploit_data_models.rb +0 -4
  57. data/lib/metasploit_data_models/engine.rb +0 -2
  58. data/lib/metasploit_data_models/serialized_prefs.rb +0 -6
  59. data/lib/metasploit_data_models/version.rb +10 -24
  60. data/lib/tasks/yard.rake +33 -0
  61. data/metasploit_data_models.gemspec +2 -9
  62. data/spec/app/models/mdm/api_key_spec.rb +3 -1
  63. data/spec/app/models/mdm/client_spec.rb +11 -9
  64. data/spec/app/models/mdm/cred_spec.rb +54 -42
  65. data/spec/app/models/mdm/event_spec.rb +23 -21
  66. data/spec/app/models/mdm/exploit_attempt_spec.rb +21 -19
  67. data/spec/app/models/mdm/exploited_host_spec.rb +13 -11
  68. data/spec/app/models/mdm/host_detail_spec.rb +17 -15
  69. data/spec/app/models/mdm/host_spec.rb +260 -261
  70. data/spec/app/models/mdm/host_tag_spec.rb +8 -6
  71. data/spec/app/models/mdm/listener_spec.rb +32 -30
  72. data/spec/app/models/mdm/loot_spec.rb +23 -21
  73. data/spec/app/models/mdm/macro_spec.rb +3 -1
  74. data/spec/app/models/mdm/mod_ref_spec.rb +3 -1
  75. data/spec/app/models/mdm/module/action_spec.rb +12 -10
  76. data/spec/app/models/mdm/module/arch_spec.rb +12 -10
  77. data/spec/app/models/mdm/module/author_spec.rb +17 -22
  78. data/spec/app/models/mdm/module/detail_spec.rb +75 -184
  79. data/spec/app/models/mdm/module/mixin_spec.rb +12 -10
  80. data/spec/app/models/mdm/module/platform_spec.rb +12 -10
  81. data/spec/app/models/mdm/module/ref_spec.rb +12 -10
  82. data/spec/app/models/mdm/module/target_spec.rb +15 -13
  83. data/spec/app/models/mdm/nexpose_console_spec.rb +37 -35
  84. data/spec/app/models/mdm/note_spec.rb +25 -23
  85. data/spec/app/models/mdm/profile_spec.rb +3 -1
  86. data/spec/app/models/mdm/ref_spec.rb +12 -10
  87. data/spec/app/models/mdm/route_spec.rb +8 -6
  88. data/spec/app/models/mdm/service_spec.rb +40 -38
  89. data/spec/app/models/mdm/session_event_spec.rb +12 -10
  90. data/spec/app/models/mdm/session_spec.rb +15 -13
  91. data/spec/app/models/mdm/tag_spec.rb +29 -29
  92. data/spec/app/models/mdm/task_cred_spec.rb +11 -9
  93. data/spec/app/models/mdm/task_host_spec.rb +11 -9
  94. data/spec/app/models/mdm/task_service_spec.rb +11 -9
  95. data/spec/app/models/mdm/task_session_spec.rb +9 -7
  96. data/spec/app/models/mdm/task_spec.rb +29 -27
  97. data/spec/app/models/mdm/user_spec.rb +19 -17
  98. data/spec/app/models/mdm/vuln_attempt_spec.rb +16 -14
  99. data/spec/app/models/mdm/vuln_detail_spec.rb +28 -26
  100. data/spec/app/models/mdm/vuln_ref_spec.rb +10 -8
  101. data/spec/app/models/mdm/vuln_spec.rb +26 -24
  102. data/spec/app/models/mdm/web_form_spec.rb +13 -11
  103. data/spec/app/models/mdm/web_page_spec.rb +21 -19
  104. data/spec/app/models/mdm/web_site_spec.rb +23 -21
  105. data/spec/app/models/mdm/web_vuln_spec.rb +65 -63
  106. data/spec/app/models/mdm/wmap_request_spec.rb +3 -1
  107. data/spec/app/models/mdm/wmap_target_spec.rb +3 -1
  108. data/spec/app/models/mdm/workspace_spec.rb +100 -97
  109. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +5 -3
  110. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +15 -13
  111. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +3 -1
  112. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +3 -1
  113. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +12 -10
  114. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +6 -4
  115. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +23 -21
  116. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +11 -9
  117. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +23 -21
  118. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +6 -4
  119. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +15 -22
  120. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +6 -4
  121. data/spec/app/models/metasploit_data_models/module_run_spec.rb +3 -1
  122. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +20 -18
  123. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +8 -6
  124. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +10 -8
  125. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +10 -8
  126. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +4 -2
  127. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +10 -8
  128. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +8 -6
  129. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +11 -9
  130. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +7 -5
  131. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +19 -17
  132. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +7 -5
  133. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +23 -61
  134. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +10 -8
  135. data/spec/app/validators/parameters_validator_spec.rb +29 -29
  136. data/spec/app/validators/password_is_strong_validator_spec.rb +46 -54
  137. data/spec/dummy/db/structure.sql +3403 -0
  138. data/spec/factories/mdm/module/details.rb +1 -1
  139. data/spec/lib/base64_serializer_spec.rb +19 -19
  140. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +12 -18
  141. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +6 -4
  142. data/spec/lib/metasploit_data_models/match/child_spec.rb +4 -2
  143. data/spec/lib/metasploit_data_models/match/parent_spec.rb +6 -4
  144. data/spec/lib/metasploit_data_models/version_spec.rb +141 -3
  145. data/spec/spec_helper.rb +12 -86
  146. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
  147. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
  148. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
  149. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
  150. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
  151. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
  152. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +6 -7
  153. metadata +9 -67
  154. data/CHANGELOG.md +0 -6
  155. data/RELEASING.md +0 -88
  156. data/UPGRADING.md +0 -1
  157. data/lib/metasploit_data_models/automatic_exploitation.rb +0 -25
  158. data/spec/lib/metasploit_data_models_spec.rb +0 -4
@@ -1,4 +1,6 @@
1
- RSpec.describe Mdm::VulnRef, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::VulnRef do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'factories' do
@@ -7,27 +9,27 @@ RSpec.describe Mdm::VulnRef, type: :model do
7
9
  FactoryGirl.build(:mdm_vuln_ref)
8
10
  end
9
11
 
10
- it { is_expected.to be_valid }
12
+ it { should be_valid }
11
13
  end
12
14
  end
13
15
 
14
16
  context 'database' do
15
17
  context 'columns' do
16
- it { is_expected.to have_db_column(:id).of_type(:integer) }
17
- it { is_expected.to have_db_column(:ref_id).of_type(:integer) }
18
- it { is_expected.to have_db_column(:vuln_id).of_type(:integer) }
18
+ it { should have_db_column(:id).of_type(:integer) }
19
+ it { should have_db_column(:ref_id).of_type(:integer) }
20
+ it { should have_db_column(:vuln_id).of_type(:integer) }
19
21
  end
20
22
  end
21
23
 
22
24
  context 'associations' do
23
- it { is_expected.to belong_to(:vuln).class_name('Mdm::Vuln') }
24
- it { is_expected.to belong_to(:ref).class_name('Mdm::Ref') }
25
+ it { should belong_to(:vuln).class_name('Mdm::Vuln') }
26
+ it { should belong_to(:ref).class_name('Mdm::Ref') }
25
27
  end
26
28
 
27
29
  context 'factory' do
28
30
  it 'should be valid' do
29
31
  vuln_ref = FactoryGirl.build(:mdm_vuln_ref)
30
- expect(vuln_ref).to be_valid
32
+ vuln_ref.should be_valid
31
33
  end
32
34
  end
33
35
 
@@ -1,4 +1,6 @@
1
- RSpec.describe Mdm::Vuln, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Vuln do
2
4
  subject(:vuln) do
3
5
  FactoryGirl.build(:mdm_vuln)
4
6
  end
@@ -42,7 +44,7 @@ RSpec.describe Mdm::Vuln, type: :model do
42
44
  it { is_expected.to have_many(:notes).class_name('Mdm::Note').dependent(:delete_all).order('notes.created_at') }
43
45
 
44
46
  context 'module_details' do
45
- it { is_expected.to have_many(:module_details).class_name('Mdm::Module::Detail').through(:module_refs) }
47
+ it { should have_many(:module_details).class_name('Mdm::Module::Detail').through(:module_refs) }
46
48
 
47
49
  context 'with Mdm::Refs' do
48
50
  let(:names) do
@@ -112,8 +114,8 @@ RSpec.describe Mdm::Vuln, type: :model do
112
114
  module_details << module_ref.detail
113
115
  end
114
116
 
115
- expect(vuln.module_details.count).to be < module_details.length
116
- expect(module_details.uniq.count).to eq(vuln.module_details.count)
117
+ vuln.module_details.count.should < module_details.length
118
+ module_details.uniq.count.should == vuln.module_details.count
117
119
  end
118
120
  end
119
121
  end
@@ -124,20 +126,20 @@ RSpec.describe Mdm::Vuln, type: :model do
124
126
 
125
127
  context 'database' do
126
128
  context 'columns' do
127
- it { is_expected.to have_db_column(:exploited_at).of_type(:datetime) }
128
- it { is_expected.to have_db_column(:host_id).of_type(:integer) }
129
- it { is_expected.to have_db_column(:info).of_type(:string) }
130
- it { is_expected.to have_db_column(:name).of_type(:string) }
131
- it { is_expected.to have_db_column(:service_id).of_type(:integer) }
129
+ it { should have_db_column(:exploited_at).of_type(:datetime) }
130
+ it { should have_db_column(:host_id).of_type(:integer) }
131
+ it { should have_db_column(:info).of_type(:string) }
132
+ it { should have_db_column(:name).of_type(:string) }
133
+ it { should have_db_column(:service_id).of_type(:integer) }
132
134
 
133
135
  context 'counter caches' do
134
- it { is_expected.to have_db_column(:vuln_attempt_count).of_type(:integer).with_options(:default => 0) }
135
- it { is_expected.to have_db_column(:vuln_detail_count).of_type(:integer).with_options(:default => 0) }
136
+ it { should have_db_column(:vuln_attempt_count).of_type(:integer).with_options(:default => 0) }
137
+ it { should have_db_column(:vuln_detail_count).of_type(:integer).with_options(:default => 0) }
136
138
  end
137
139
 
138
140
  context 'timestamps' do
139
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
140
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
141
+ it { should have_db_column(:created_at).of_type(:datetime) }
142
+ it { should have_db_column(:updated_at).of_type(:datetime) }
141
143
  end
142
144
  end
143
145
  end
@@ -148,7 +150,7 @@ RSpec.describe Mdm::Vuln, type: :model do
148
150
  FactoryGirl.build(:mdm_host_vuln)
149
151
  end
150
152
 
151
- it { is_expected.to be_valid }
153
+ it { should be_valid }
152
154
  end
153
155
 
154
156
  context 'mdm_service_vuln' do
@@ -156,7 +158,7 @@ RSpec.describe Mdm::Vuln, type: :model do
156
158
  FactoryGirl.build(:mdm_service_vuln)
157
159
  end
158
160
 
159
- it { is_expected.to be_valid }
161
+ it { should be_valid }
160
162
  end
161
163
 
162
164
  context 'mdm_vuln' do
@@ -164,7 +166,7 @@ RSpec.describe Mdm::Vuln, type: :model do
164
166
  FactoryGirl.build(:mdm_vuln)
165
167
  end
166
168
 
167
- it { is_expected.to be_valid }
169
+ it { should be_valid }
168
170
  end
169
171
  end
170
172
 
@@ -195,7 +197,7 @@ RSpec.describe Mdm::Vuln, type: :model do
195
197
  end
196
198
 
197
199
  it 'should match Mdm::Vuln' do
198
- expect(results).to match_array [vuln]
200
+ results.should =~ [vuln]
199
201
  end
200
202
  end
201
203
 
@@ -205,7 +207,7 @@ RSpec.describe Mdm::Vuln, type: :model do
205
207
  end
206
208
 
207
209
  it 'should not match Mdm::Vuln' do
208
- expect(results).to be_empty
210
+ results.should be_empty
209
211
  end
210
212
  end
211
213
  end
@@ -217,7 +219,7 @@ RSpec.describe Mdm::Vuln, type: :model do
217
219
  end
218
220
 
219
221
  it 'should match Mdm::Vuln' do
220
- expect(results).to match_array [vuln]
222
+ results.should =~ [vuln]
221
223
  end
222
224
  end
223
225
 
@@ -227,7 +229,7 @@ RSpec.describe Mdm::Vuln, type: :model do
227
229
  end
228
230
 
229
231
  it 'should not match Mdm::Vuln' do
230
- expect(results).to be_empty
232
+ results.should be_empty
231
233
  end
232
234
  end
233
235
 
@@ -237,7 +239,7 @@ RSpec.describe Mdm::Vuln, type: :model do
237
239
  end
238
240
 
239
241
  it 'should match Mdm::Vuln' do
240
- expect(results).to match_array [vuln]
242
+ results.should =~ [vuln]
241
243
  end
242
244
  end
243
245
 
@@ -247,7 +249,7 @@ RSpec.describe Mdm::Vuln, type: :model do
247
249
  end
248
250
 
249
251
  it 'should not match Mdm::Vuln' do
250
- expect(results).to be_empty
252
+ results.should be_empty
251
253
  end
252
254
  end
253
255
  end
@@ -257,7 +259,7 @@ RSpec.describe Mdm::Vuln, type: :model do
257
259
  end
258
260
 
259
261
  context 'validations' do
260
- it { is_expected.to validate_presence_of :name }
262
+ it { should validate_presence_of :name }
261
263
 
262
264
  context "invalid" do
263
265
  let(:mdm_vuln) do
@@ -268,7 +270,7 @@ RSpec.describe Mdm::Vuln, type: :model do
268
270
  str = Faker::Lorem.characters(256)
269
271
  mdm_vuln.name = str
270
272
  mdm_vuln.valid?
271
- expect(mdm_vuln.errors[:name][0]).to include "is too long"
273
+ mdm_vuln.errors[:name][0].should include "is too long"
272
274
  end
273
275
  end
274
276
  end
@@ -1,34 +1,36 @@
1
- RSpec.describe Mdm::WebForm, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::WebForm do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
5
- it { is_expected.to belong_to(:web_site).class_name('Mdm::WebSite') }
7
+ it { should belong_to(:web_site).class_name('Mdm::WebSite') }
6
8
  end
7
9
 
8
10
  context 'database' do
9
11
 
10
12
  context 'timestamps'do
11
- it { is_expected.to have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
12
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
13
+ it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
14
+ it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
13
15
  end
14
16
 
15
17
  context 'columns' do
16
- it { is_expected.to have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
17
- it { is_expected.to have_db_column(:path).of_type(:text) }
18
- it { is_expected.to have_db_column(:method).of_type(:string) }
19
- it { is_expected.to have_db_column(:params).of_type(:text) }
20
- it { is_expected.to have_db_column(:query).of_type(:text) }
18
+ it { should have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
19
+ it { should have_db_column(:path).of_type(:text) }
20
+ it { should have_db_column(:method).of_type(:string) }
21
+ it { should have_db_column(:params).of_type(:text) }
22
+ it { should have_db_column(:query).of_type(:text) }
21
23
  end
22
24
 
23
25
  context 'indices' do
24
- it { is_expected.to have_db_index(:path) }
26
+ it { should have_db_index(:path) }
25
27
  end
26
28
  end
27
29
 
28
30
  context 'factory' do
29
31
  it 'should be valid' do
30
32
  web_form = FactoryGirl.build(:mdm_web_form)
31
- expect(web_form).to be_valid
33
+ web_form.should be_valid
32
34
  end
33
35
  end
34
36
 
@@ -1,42 +1,44 @@
1
- RSpec.describe Mdm::WebPage, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::WebPage do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
5
- it { is_expected.to belong_to(:web_site).class_name('Mdm::WebSite') }
7
+ it { should belong_to(:web_site).class_name('Mdm::WebSite') }
6
8
  end
7
9
 
8
10
  context 'database' do
9
11
 
10
12
  context 'timestamps'do
11
- it { is_expected.to have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
12
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
13
- it { is_expected.to have_db_column(:mtime).of_type(:datetime) }
13
+ it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
14
+ it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
15
+ it { should have_db_column(:mtime).of_type(:datetime) }
14
16
  end
15
17
 
16
18
  context 'columns' do
17
- it { is_expected.to have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
18
- it { is_expected.to have_db_column(:path).of_type(:text) }
19
- it { is_expected.to have_db_column(:query).of_type(:text) }
20
- it { is_expected.to have_db_column(:code).of_type(:integer).with_options(:null => false) }
21
- it { is_expected.to have_db_column(:cookie).of_type(:text) }
22
- it { is_expected.to have_db_column(:auth).of_type(:text) }
23
- it { is_expected.to have_db_column(:ctype).of_type(:text) }
24
- it { is_expected.to have_db_column(:location).of_type(:text) }
25
- it { is_expected.to have_db_column(:headers).of_type(:text) }
26
- it { is_expected.to have_db_column(:body).of_type(:binary) }
27
- it { is_expected.to have_db_column(:request).of_type(:binary) }
19
+ it { should have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
20
+ it { should have_db_column(:path).of_type(:text) }
21
+ it { should have_db_column(:query).of_type(:text) }
22
+ it { should have_db_column(:code).of_type(:integer).with_options(:null => false) }
23
+ it { should have_db_column(:cookie).of_type(:text) }
24
+ it { should have_db_column(:auth).of_type(:text) }
25
+ it { should have_db_column(:ctype).of_type(:text) }
26
+ it { should have_db_column(:location).of_type(:text) }
27
+ it { should have_db_column(:headers).of_type(:text) }
28
+ it { should have_db_column(:body).of_type(:binary) }
29
+ it { should have_db_column(:request).of_type(:binary) }
28
30
  end
29
31
 
30
32
  context 'indices' do
31
- it { is_expected.to have_db_index(:path) }
32
- it { is_expected.to have_db_index(:query) }
33
+ it { should have_db_index(:path) }
34
+ it { should have_db_index(:query) }
33
35
  end
34
36
  end
35
37
 
36
38
  context 'factory' do
37
39
  it 'should be valid' do
38
40
  web_page = FactoryGirl.build(:mdm_web_page)
39
- expect(web_page).to be_valid
41
+ web_page.should be_valid
40
42
  end
41
43
  end
42
44
 
@@ -1,31 +1,33 @@
1
- RSpec.describe Mdm::WebSite, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::WebSite do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'factory' do
5
7
  it 'should be valid' do
6
8
  web_site = FactoryGirl.build(:mdm_web_site)
7
- expect(web_site).to be_valid
9
+ web_site.should be_valid
8
10
  end
9
11
  end
10
12
 
11
13
  context 'database' do
12
14
 
13
15
  context 'timestamps'do
14
- it { is_expected.to have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
15
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
16
+ it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
17
+ it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
16
18
  end
17
19
 
18
20
  context 'columns' do
19
- it { is_expected.to have_db_column(:service_id).of_type(:integer).with_options(:null => false) }
20
- it { is_expected.to have_db_column(:vhost).of_type(:string) }
21
- it { is_expected.to have_db_column(:comments).of_type(:text) }
22
- it { is_expected.to have_db_column(:options).of_type(:text) }
21
+ it { should have_db_column(:service_id).of_type(:integer).with_options(:null => false) }
22
+ it { should have_db_column(:vhost).of_type(:string) }
23
+ it { should have_db_column(:comments).of_type(:text) }
24
+ it { should have_db_column(:options).of_type(:text) }
23
25
  end
24
26
 
25
27
  context 'indices' do
26
- it { is_expected.to have_db_index(:comments) }
27
- it { is_expected.to have_db_index(:options) }
28
- it { is_expected.to have_db_index(:vhost) }
28
+ it { should have_db_index(:comments) }
29
+ it { should have_db_index(:options) }
30
+ it { should have_db_index(:vhost) }
29
31
  end
30
32
  end
31
33
 
@@ -42,10 +44,10 @@ RSpec.describe Mdm::WebSite, type: :model do
42
44
  end
43
45
 
44
46
  context 'associations' do
45
- it { is_expected.to belong_to(:service).class_name('Mdm::Service') }
46
- it { is_expected.to have_many(:web_forms).class_name('Mdm::WebForm').dependent(:destroy) }
47
- it { is_expected.to have_many(:web_pages).class_name('Mdm::WebPage').dependent(:destroy) }
48
- it { is_expected.to have_many(:web_vulns).class_name('Mdm::WebVuln').dependent(:destroy) }
47
+ it { should belong_to(:service).class_name('Mdm::Service') }
48
+ it { should have_many(:web_forms).class_name('Mdm::WebForm').dependent(:destroy) }
49
+ it { should have_many(:web_pages).class_name('Mdm::WebPage').dependent(:destroy) }
50
+ it { should have_many(:web_vulns).class_name('Mdm::WebVuln').dependent(:destroy) }
49
51
  end
50
52
 
51
53
  context 'methods' do
@@ -54,9 +56,9 @@ RSpec.describe Mdm::WebSite, type: :model do
54
56
  mysite = FactoryGirl.create(:mdm_web_site)
55
57
  FactoryGirl.create(:mdm_web_form, :web_site => mysite)
56
58
  FactoryGirl.create(:mdm_web_form, :web_site => mysite)
57
- expect(mysite.form_count).to eq(2)
59
+ mysite.form_count.should == 2
58
60
  FactoryGirl.create(:mdm_web_form, :web_site => mysite)
59
- expect(mysite.form_count).to eq(3)
61
+ mysite.form_count.should == 3
60
62
  end
61
63
  end
62
64
 
@@ -65,9 +67,9 @@ RSpec.describe Mdm::WebSite, type: :model do
65
67
  mysite = FactoryGirl.create(:mdm_web_site)
66
68
  FactoryGirl.create(:mdm_web_page, :web_site => mysite)
67
69
  FactoryGirl.create(:mdm_web_page, :web_site => mysite)
68
- expect(mysite.page_count).to eq(2)
70
+ mysite.page_count.should == 2
69
71
  FactoryGirl.create(:mdm_web_page, :web_site => mysite)
70
- expect(mysite.page_count).to eq(3)
72
+ mysite.page_count.should == 3
71
73
  end
72
74
  end
73
75
 
@@ -76,9 +78,9 @@ RSpec.describe Mdm::WebSite, type: :model do
76
78
  mysite = FactoryGirl.create(:mdm_web_site)
77
79
  FactoryGirl.create(:mdm_web_vuln, :web_site => mysite)
78
80
  FactoryGirl.create(:mdm_web_vuln, :web_site => mysite)
79
- expect(mysite.vuln_count).to eq(2)
81
+ mysite.vuln_count.should == 2
80
82
  FactoryGirl.create(:mdm_web_vuln, :web_site => mysite)
81
- expect(mysite.vuln_count).to eq(3)
83
+ mysite.vuln_count.should == 3
82
84
  end
83
85
  end
84
86
  end
@@ -1,4 +1,6 @@
1
- RSpec.describe Mdm::WebVuln, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::WebVuln do
2
4
  let(:confidence_range) do
3
5
  0 .. 100
4
6
  end
@@ -27,20 +29,20 @@ RSpec.describe Mdm::WebVuln, type: :model do
27
29
  it_should_behave_like 'Metasploit::Concern.run'
28
30
 
29
31
  context 'associations' do
30
- it { is_expected.to belong_to(:web_site).class_name('Mdm::WebSite') }
32
+ it { should belong_to(:web_site).class_name('Mdm::WebSite') }
31
33
  end
32
34
 
33
35
  context 'CONSTANTS' do
34
36
  it 'should define CONFIDENCE_RANGE' do
35
- expect(described_class::CONFIDENCE_RANGE).to eq(confidence_range)
37
+ described_class::CONFIDENCE_RANGE.should == confidence_range
36
38
  end
37
39
 
38
40
  it 'should define METHODS in any order' do
39
- expect(described_class::METHODS).to match_array methods
41
+ described_class::METHODS.should =~ methods
40
42
  end
41
43
 
42
44
  it 'should define RISK_RANGE' do
43
- expect(described_class::RISK_RANGE).to eq(risk_range)
45
+ described_class::RISK_RANGE.should == risk_range
44
46
  end
45
47
  end
46
48
 
@@ -58,33 +60,33 @@ RSpec.describe Mdm::WebVuln, type: :model do
58
60
 
59
61
  context 'database' do
60
62
  context 'columns' do
61
- it { is_expected.to have_db_column(:blame).of_type(:text) }
62
- it { is_expected.to have_db_column(:category).of_type(:text).with_options(:null => false) }
63
- it { is_expected.to have_db_column(:confidence).of_type(:integer).with_options(:null => false) }
64
- it { is_expected.to have_db_column(:description).of_type(:text) }
65
- it { is_expected.to have_db_column(:method).of_type(:string).with_options(:limit => 1024, :null => false) }
66
- it { is_expected.to have_db_column(:name).of_type(:string).with_options(:limit => 1024, :null => false) }
67
- it { is_expected.to have_db_column(:owner).of_type(:string) }
68
- it { is_expected.to have_db_column(:params).of_type(:text).with_options(:null => false) }
69
- it { is_expected.to have_db_column(:path).of_type(:text).with_options(:null => false) }
70
- it { is_expected.to have_db_column(:payload).of_type(:text) }
71
- it { is_expected.to have_db_column(:pname).of_type(:text) }
72
- it { is_expected.to have_db_column(:proof).of_type(:binary).with_options(:null => false) }
73
- it { is_expected.to have_db_column(:query).of_type(:text) }
74
- it { is_expected.to have_db_column(:request).of_type(:binary) }
75
- it { is_expected.to have_db_column(:risk).of_type(:integer).with_options(:null => false) }
76
- it { is_expected.to have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
63
+ it { should have_db_column(:blame).of_type(:text) }
64
+ it { should have_db_column(:category).of_type(:text).with_options(:null => false) }
65
+ it { should have_db_column(:confidence).of_type(:integer).with_options(:null => false) }
66
+ it { should have_db_column(:description).of_type(:text) }
67
+ it { should have_db_column(:method).of_type(:string).with_options(:limit => 1024, :null => false) }
68
+ it { should have_db_column(:name).of_type(:string).with_options(:limit => 1024, :null => false) }
69
+ it { should have_db_column(:owner).of_type(:string) }
70
+ it { should have_db_column(:params).of_type(:text).with_options(:null => false) }
71
+ it { should have_db_column(:path).of_type(:text).with_options(:null => false) }
72
+ it { should have_db_column(:payload).of_type(:text) }
73
+ it { should have_db_column(:pname).of_type(:text) }
74
+ it { should have_db_column(:proof).of_type(:binary).with_options(:null => false) }
75
+ it { should have_db_column(:query).of_type(:text) }
76
+ it { should have_db_column(:request).of_type(:binary) }
77
+ it { should have_db_column(:risk).of_type(:integer).with_options(:null => false) }
78
+ it { should have_db_column(:web_site_id).of_type(:integer).with_options(:null => false) }
77
79
 
78
80
  context 'timestamps' do
79
- it { is_expected.to have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
80
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
81
+ it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
82
+ it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
81
83
  end
82
84
  end
83
85
 
84
86
  context 'indices' do
85
- it { is_expected.to have_db_index(:method) }
86
- it { is_expected.to have_db_index(:name) }
87
- it { is_expected.to have_db_index(:path) }
87
+ it { should have_db_index(:method) }
88
+ it { should have_db_index(:name) }
89
+ it { should have_db_index(:path) }
88
90
  end
89
91
  end
90
92
 
@@ -94,7 +96,7 @@ RSpec.describe Mdm::WebVuln, type: :model do
94
96
  FactoryGirl.build(:mdm_web_vuln)
95
97
  end
96
98
 
97
- it { is_expected.to be_valid }
99
+ it { should be_valid }
98
100
 
99
101
  context 'after reloading' do
100
102
  before(:each) do
@@ -102,21 +104,21 @@ RSpec.describe Mdm::WebVuln, type: :model do
102
104
  mdm_web_vuln.reload
103
105
  end
104
106
 
105
- it { is_expected.to be_valid }
107
+ it { should be_valid }
106
108
  end
107
109
  end
108
110
  end
109
111
 
110
112
  context 'validations' do
111
- it { is_expected.to validate_presence_of :category }
112
- it { is_expected.to ensure_inclusion_of(:confidence).in_range(confidence_range) }
113
- it { is_expected.to ensure_inclusion_of(:method).in_array(methods) }
114
- it { is_expected.to validate_presence_of :name }
115
- it { is_expected.to validate_presence_of :path }
113
+ it { should validate_presence_of :category }
114
+ it { should ensure_inclusion_of(:confidence).in_range(confidence_range) }
115
+ it { should ensure_inclusion_of(:method).in_array(methods) }
116
+ it { should validate_presence_of :name }
117
+ it { should validate_presence_of :path }
116
118
 
117
119
  context 'params' do
118
120
  it 'should not validate presence of params because it default to [] and can never be nil' do
119
- expect(web_vuln).not_to validate_presence_of(:params)
121
+ web_vuln.should_not validate_presence_of(:params)
120
122
  end
121
123
 
122
124
  context 'validates parameters' do
@@ -127,9 +129,9 @@ RSpec.describe Mdm::WebVuln, type: :model do
127
129
  it 'should validate params is an Array' do
128
130
  web_vuln.params = ''
129
131
 
130
- expect(web_vuln.params).not_to be_an Array
131
- expect(web_vuln).not_to be_valid
132
- expect(web_vuln.errors[:params]).to include(
132
+ web_vuln.params.should_not be_an Array
133
+ web_vuln.should_not be_valid
134
+ web_vuln.errors[:params].should include(
133
135
  "is not an Array. #{type_signature_sentence}"
134
136
  )
135
137
  end
@@ -138,7 +140,7 @@ RSpec.describe Mdm::WebVuln, type: :model do
138
140
  web_vuln.params = []
139
141
  web_vuln.valid?
140
142
 
141
- expect(web_vuln.errors[:params]).to be_empty
143
+ web_vuln.errors[:params].should be_empty
142
144
  end
143
145
 
144
146
  context 'with bad element' do
@@ -156,12 +158,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
156
158
  end
157
159
 
158
160
  it 'should not be an Array' do
159
- expect(web_vuln.params.first).not_to be_an Array
161
+ web_vuln.params.first.should_not be_an Array
160
162
  end
161
163
 
162
164
  it 'should validate elements of params are Arrays' do
163
- expect(web_vuln).not_to be_valid
164
- expect(web_vuln.errors[:params]).to include(
165
+ web_vuln.should_not be_valid
166
+ web_vuln.errors[:params].should include(
165
167
  "has non-Array at index #{index} (#{element.inspect}). " \
166
168
  "#{type_signature_sentence}"
167
169
  )
@@ -174,12 +176,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
174
176
  end
175
177
 
176
178
  it 'should have length < 2' do
177
- expect(web_vuln.params.first.length).to be < 2
179
+ web_vuln.params.first.length.should < 2
178
180
  end
179
181
 
180
182
  it 'should validate elements of params are not too short' do
181
- expect(web_vuln).not_to be_valid
182
- expect(web_vuln.errors[:params]).to include(
183
+ web_vuln.should_not be_valid
184
+ web_vuln.errors[:params].should include(
183
185
  "has too few elements at index #{index} (#{element.inspect}). " \
184
186
  "#{type_signature_sentence}"
185
187
  )
@@ -192,12 +194,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
192
194
  end
193
195
 
194
196
  it 'should have length > 2' do
195
- expect(web_vuln.params.first.length).to be > 2
197
+ web_vuln.params.first.length.should > 2
196
198
  end
197
199
 
198
200
  it 'should validate elements of params are not too long' do
199
- expect(web_vuln).not_to be_valid
200
- expect(web_vuln.errors[:params]).to include(
201
+ web_vuln.should_not be_valid
202
+ web_vuln.errors[:params].should include(
201
203
  "has too many elements at index #{index} (#{element.inspect}). " \
202
204
  "#{type_signature_sentence}"
203
205
  )
@@ -216,12 +218,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
216
218
  end
217
219
 
218
220
  it 'should have blank parameter name' do
219
- expect(web_vuln.params.first.first).to be_empty
221
+ web_vuln.params.first.first.should be_empty
220
222
  end
221
223
 
222
224
  it 'should validate that parameter name is not empty' do
223
- expect(web_vuln).not_to be_valid
224
- expect(web_vuln.errors[:params]).to include(
225
+ web_vuln.should_not be_valid
226
+ web_vuln.errors[:params].should include(
225
227
  "has blank parameter name at index #{index} " \
226
228
  "(#{element.inspect}). " \
227
229
  "#{type_signature_sentence}"
@@ -236,12 +238,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
236
238
  end
237
239
 
238
240
  it 'should not have String for parameter name' do
239
- expect(web_vuln.params.first.first).not_to be_a String
241
+ web_vuln.params.first.first.should_not be_a String
240
242
  end
241
243
 
242
244
  it 'should validate that parameter name is a String' do
243
- expect(web_vuln).not_to be_valid
244
- expect(web_vuln.errors[:params]).to include(
245
+ web_vuln.should_not be_valid
246
+ web_vuln.errors[:params].should include(
245
247
  "has non-String parameter name (#{parameter_name.inspect}) " \
246
248
  "at index #{index} (#{element.inspect}). " \
247
249
  "#{type_signature_sentence}"
@@ -261,12 +263,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
261
263
  end
262
264
 
263
265
  it 'should not have String for parameter name' do
264
- expect(web_vuln.params.first.second).not_to be_a String
266
+ web_vuln.params.first.second.should_not be_a String
265
267
  end
266
268
 
267
269
  it 'should validate that parameter value is a String' do
268
- expect(web_vuln).not_to be_valid
269
- expect(web_vuln.errors[:params]).to include(
270
+ web_vuln.should_not be_valid
271
+ web_vuln.errors[:params].should include(
270
272
  "has non-String parameter value (#{parameter_value}) " \
271
273
  "at index #{index} (#{element.inspect}). " \
272
274
  "#{type_signature_sentence}"
@@ -278,13 +280,13 @@ RSpec.describe Mdm::WebVuln, type: :model do
278
280
  end
279
281
  end
280
282
 
281
- it { is_expected.to validate_presence_of :proof }
282
- it { is_expected.to ensure_inclusion_of(:risk).in_range(risk_range) }
283
- it { is_expected.to validate_presence_of :web_site }
283
+ it { should validate_presence_of :proof }
284
+ it { should ensure_inclusion_of(:risk).in_range(risk_range) }
285
+ it { should validate_presence_of :web_site }
284
286
  end
285
287
 
286
288
  context 'serializations' do
287
- it { is_expected.to serialize(:params).as_instance_of(MetasploitDataModels::Base64Serializer) }
289
+ it { should serialize(:params).as_instance_of(MetasploitDataModels::Base64Serializer) }
288
290
  end
289
291
 
290
292
  context '#params' do
@@ -297,12 +299,12 @@ RSpec.describe Mdm::WebVuln, type: :model do
297
299
  end
298
300
 
299
301
  it 'should default to []' do
300
- expect(params).to eq(default)
302
+ params.should == default
301
303
  end
302
304
 
303
305
  it 'should return default if set to nil' do
304
306
  web_vuln.params = nil
305
- expect(web_vuln.params).to eq(default)
307
+ web_vuln.params.should == default
306
308
  end
307
309
 
308
310
  it 'should return default if set to nil and saved' do
@@ -310,7 +312,7 @@ RSpec.describe Mdm::WebVuln, type: :model do
310
312
  web_vuln.params = nil
311
313
  web_vuln.save!
312
314
 
313
- expect(web_vuln.params).to eq(default)
315
+ web_vuln.params.should == default
314
316
  end
315
317
  end
316
318
  end