metasploit_data_models 0.24.1.pre.rspec.pre.3.pre.1 → 0.24.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -3
  3. data/Gemfile +3 -1
  4. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
  5. data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
  6. data/app/validators/password_is_strong_validator.rb +1 -1
  7. data/lib/mdm/host/operating_system_normalization.rb +10 -0
  8. data/lib/metasploit_data_models/version.rb +1 -2
  9. data/metasploit_data_models.gemspec +1 -1
  10. data/spec/app/models/mdm/api_key_spec.rb +3 -1
  11. data/spec/app/models/mdm/client_spec.rb +11 -9
  12. data/spec/app/models/mdm/cred_spec.rb +54 -42
  13. data/spec/app/models/mdm/event_spec.rb +23 -21
  14. data/spec/app/models/mdm/exploit_attempt_spec.rb +21 -19
  15. data/spec/app/models/mdm/exploited_host_spec.rb +13 -11
  16. data/spec/app/models/mdm/host_detail_spec.rb +17 -15
  17. data/spec/app/models/mdm/host_spec.rb +260 -261
  18. data/spec/app/models/mdm/host_tag_spec.rb +8 -6
  19. data/spec/app/models/mdm/listener_spec.rb +32 -30
  20. data/spec/app/models/mdm/loot_spec.rb +23 -21
  21. data/spec/app/models/mdm/macro_spec.rb +3 -1
  22. data/spec/app/models/mdm/mod_ref_spec.rb +3 -1
  23. data/spec/app/models/mdm/module/action_spec.rb +12 -10
  24. data/spec/app/models/mdm/module/arch_spec.rb +12 -10
  25. data/spec/app/models/mdm/module/author_spec.rb +17 -22
  26. data/spec/app/models/mdm/module/detail_spec.rb +75 -184
  27. data/spec/app/models/mdm/module/mixin_spec.rb +12 -10
  28. data/spec/app/models/mdm/module/platform_spec.rb +12 -10
  29. data/spec/app/models/mdm/module/ref_spec.rb +12 -10
  30. data/spec/app/models/mdm/module/target_spec.rb +15 -13
  31. data/spec/app/models/mdm/nexpose_console_spec.rb +37 -35
  32. data/spec/app/models/mdm/note_spec.rb +25 -23
  33. data/spec/app/models/mdm/profile_spec.rb +3 -1
  34. data/spec/app/models/mdm/ref_spec.rb +12 -10
  35. data/spec/app/models/mdm/route_spec.rb +8 -6
  36. data/spec/app/models/mdm/service_spec.rb +40 -38
  37. data/spec/app/models/mdm/session_event_spec.rb +12 -10
  38. data/spec/app/models/mdm/session_spec.rb +15 -13
  39. data/spec/app/models/mdm/tag_spec.rb +29 -29
  40. data/spec/app/models/mdm/task_cred_spec.rb +11 -9
  41. data/spec/app/models/mdm/task_host_spec.rb +11 -9
  42. data/spec/app/models/mdm/task_service_spec.rb +11 -9
  43. data/spec/app/models/mdm/task_session_spec.rb +9 -7
  44. data/spec/app/models/mdm/task_spec.rb +29 -27
  45. data/spec/app/models/mdm/user_spec.rb +19 -17
  46. data/spec/app/models/mdm/vuln_attempt_spec.rb +16 -14
  47. data/spec/app/models/mdm/vuln_detail_spec.rb +28 -26
  48. data/spec/app/models/mdm/vuln_ref_spec.rb +10 -8
  49. data/spec/app/models/mdm/vuln_spec.rb +26 -24
  50. data/spec/app/models/mdm/web_form_spec.rb +13 -11
  51. data/spec/app/models/mdm/web_page_spec.rb +21 -19
  52. data/spec/app/models/mdm/web_site_spec.rb +23 -21
  53. data/spec/app/models/mdm/web_vuln_spec.rb +65 -63
  54. data/spec/app/models/mdm/wmap_request_spec.rb +3 -1
  55. data/spec/app/models/mdm/wmap_target_spec.rb +3 -1
  56. data/spec/app/models/mdm/workspace_spec.rb +100 -97
  57. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +5 -3
  58. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +15 -13
  59. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +3 -1
  60. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +3 -1
  61. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +12 -10
  62. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +6 -4
  63. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +23 -21
  64. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +11 -9
  65. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +23 -21
  66. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +6 -4
  67. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +15 -22
  68. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +6 -4
  69. data/spec/app/models/metasploit_data_models/module_run_spec.rb +3 -1
  70. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +20 -18
  71. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +8 -6
  72. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +10 -8
  73. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +10 -8
  74. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +4 -2
  75. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +10 -8
  76. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +8 -6
  77. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +11 -9
  78. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +7 -5
  79. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +19 -17
  80. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +7 -5
  81. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +23 -61
  82. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +10 -8
  83. data/spec/app/validators/parameters_validator_spec.rb +29 -29
  84. data/spec/app/validators/password_is_strong_validator_spec.rb +46 -54
  85. data/spec/factories/mdm/module/details.rb +1 -1
  86. data/spec/lib/base64_serializer_spec.rb +19 -19
  87. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +12 -18
  88. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +6 -4
  89. data/spec/lib/metasploit_data_models/match/child_spec.rb +4 -2
  90. data/spec/lib/metasploit_data_models/match/parent_spec.rb +6 -4
  91. data/spec/lib/metasploit_data_models/version_spec.rb +5 -3
  92. data/spec/spec_helper.rb +6 -72
  93. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
  94. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
  95. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
  96. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
  97. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
  98. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
  99. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +6 -7
  100. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9575cbf901167b12a5b4241d3e30bef7388a66c4
4
- data.tar.gz: c478549cfaeb0b0172ffd8dd2fffd786a82c82cc
3
+ metadata.gz: 1ac9c58f2799f6dcb7e997a8a328d585daf4c3e4
4
+ data.tar.gz: 13c3f4938ac23baf1c6d15a89f32f6b1f78d01e2
5
5
  SHA512:
6
- metadata.gz: eded8aa0e65dad8d9a6fa8d60cb34e572f3551312f8756a500d9990a919dd0e5c7af58738a66bd42115c95777b25db9b667451b38db3958ab984ff15569ae5ac
7
- data.tar.gz: 32c790f07c256a251dd94ec34d2a614dc9f0741ae16c3d51febdfd88a4bf2d9050102380fcd0d9303e08f19ebd64f4b5dea770c3a0c61ad83f9c544f5b0a6873
6
+ metadata.gz: 20bcf96f7f4ce0794ec99f0408432d3768a966ca982f5d85c5a107806ca50c5cbad2217be893aeeb41941db21abdcd73a439335331d67625a99360c1cd1e37a2
7
+ data.tar.gz: eedd216995f5ed8e7dab6453a6372f0dac7419ef54be71edb3bca75993da99e5f836ca71190b963bb2afb66d6a9afebbcaf97d535665206f8c45c74ab0f9273b
data/.rspec CHANGED
@@ -1,3 +1,3 @@
1
- --color
2
- --format documentation
3
- --require spec_helper
1
+ --format nested
2
+ --colour
3
+ --drb
data/Gemfile CHANGED
@@ -32,9 +32,11 @@ group :test do
32
32
  gem 'shoulda-matchers'
33
33
  # code coverage of tests
34
34
  gem 'simplecov', :require => false
35
+ # @todo Update specs for rspec 3.0.0 compatibility and remove this gem in favor of just rspec-rails
36
+ gem 'rspec-core', '< 3.0.0'
35
37
  # need rspec-rails >= 2.12.0 as 2.12.0 adds support for redefining named subject in nested context that uses the
36
38
  # named subject from the outer context without causing a stack overflow.
37
- gem 'rspec-rails', '~> 3.2'
39
+ gem 'rspec-rails', '>= 2.12.0'
38
40
  # used for building markup for webpage factories
39
41
  gem 'builder'
40
42
  end
@@ -67,7 +67,7 @@ class MetasploitDataModels::IPAddress::V4::Segmented < Metasploit::Model::Base
67
67
  #
68
68
  # @return [Regexp]
69
69
  def self.regexp
70
- unless instance_variable_defined? :@regexp
70
+ unless @regexp
71
71
  separated_segment_count = SEGMENT_COUNT - 1
72
72
 
73
73
  @regexp = %r{
@@ -32,7 +32,7 @@ class MetasploitDataModels::Search::Visitor::Where
32
32
  }
33
33
  end
34
34
 
35
- visit(*EQUALITY_OPERATION_CLASS_NAMES) do |operation|
35
+ visit *EQUALITY_OPERATION_CLASS_NAMES do |operation|
36
36
  attribute = attribute_visitor.visit operation.operator
37
37
 
38
38
  attribute.eq(operation.value)
@@ -34,7 +34,7 @@ class PasswordIsStrongValidator < ActiveModel::EachValidator
34
34
  end
35
35
 
36
36
  def contains_username?(username, password)
37
- !!(password =~ /#{username}/i)
37
+ password =~ /#{username}/i
38
38
  end
39
39
 
40
40
  def is_common_password?(password)
@@ -185,6 +185,15 @@ module Mdm::Host::OperatingSystemNormalization
185
185
  # Merge and normalize the best match to the host object
186
186
  apply_match_to_host(match) if match
187
187
 
188
+ # Handle cases where the flavor contains the base name (legacy parsing, etc)
189
+ # TODO: Remove this once we are sure it is no longer needed
190
+ if host.os_name && host.os_flavor && host.os_flavor.index(host.os_name)
191
+ dlog("Host #{host.address} has os_flavor that contains os_name")
192
+ dlog("os_flavor: #{host.os_flavor}")
193
+ dlog("os_name: #{host.os_name}")
194
+ host.os_flavor = host.os_flavor.gsub(host.os_name, '').strip
195
+ end
196
+
188
197
  # Set some sane defaults if needed
189
198
  host.os_name ||= 'Unknown'
190
199
  host.purpose ||= 'device'
@@ -293,6 +302,7 @@ module Mdm::Host::OperatingSystemNormalization
293
302
  # name collision seems silly.
294
303
  return false
295
304
  else
305
+ dlog("Could not validate fingerprint data: #{fp.inspect}")
296
306
  return false
297
307
  end
298
308
  end
@@ -7,8 +7,7 @@ module MetasploitDataModels
7
7
  MINOR = 24
8
8
  # The patch number, scoped to the {MAJOR} and {MINOR} version numbers.
9
9
  PATCH = 1
10
- # The prerelease version, scoped to the {MAJOR}, {MINOR}, and {PATCH} version numbers.
11
- PRERELEASE = 'rspec-3-1'
10
+
12
11
 
13
12
  # The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the `PRERELEASE` in the
14
13
  # {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
@@ -45,7 +45,7 @@ Gem::Specification.new do |s|
45
45
  s.add_runtime_dependency 'recog', '~> 1.0'
46
46
 
47
47
  s.add_runtime_dependency 'metasploit-concern', '0.4.0'
48
- s.add_runtime_dependency 'metasploit-model', '~> 0.30.1'
48
+ s.add_runtime_dependency 'metasploit-model', '~> 0.29.0'
49
49
  s.add_runtime_dependency 'railties', '< 4.0.0'
50
50
 
51
51
  # arel-helpers: Useful tools to help construct database queries with ActiveRecord and Arel.
@@ -1,3 +1,5 @@
1
- RSpec.describe Mdm::ApiKey, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::ApiKey do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
  end
@@ -1,9 +1,11 @@
1
- RSpec.describe Mdm::Client, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Client do
2
4
 
3
5
  it_should_behave_like 'Metasploit::Concern.run'
4
6
 
5
7
  context 'associations' do
6
- it { is_expected.to belong_to(:host).class_name('Mdm::Host') }
8
+ it { should belong_to(:host).class_name('Mdm::Host') }
7
9
  end
8
10
 
9
11
  context '#destroy' do
@@ -21,21 +23,21 @@ RSpec.describe Mdm::Client, type: :model do
21
23
  context 'factory' do
22
24
  it 'should be valid' do
23
25
  client = FactoryGirl.build(:mdm_client)
24
- expect(client).to be_valid
26
+ client.should be_valid
25
27
  end
26
28
  end
27
29
 
28
30
  context 'database' do
29
31
  context 'columns' do
30
- it { is_expected.to have_db_column(:host_id).of_type(:integer)}
31
- it { is_expected.to have_db_column(:ua_string).of_type(:string).with_options(:null => false) }
32
- it { is_expected.to have_db_column(:ua_name).of_type(:string) }
33
- it { is_expected.to have_db_column(:ua_ver).of_type(:string) }
32
+ it { should have_db_column(:host_id).of_type(:integer)}
33
+ it { should have_db_column(:ua_string).of_type(:string).with_options(:null => false) }
34
+ it { should have_db_column(:ua_name).of_type(:string) }
35
+ it { should have_db_column(:ua_ver).of_type(:string) }
34
36
  end
35
37
 
36
38
  context 'timestamps' do
37
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
38
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
39
+ it { should have_db_column(:created_at).of_type(:datetime) }
40
+ it { should have_db_column(:updated_at).of_type(:datetime) }
39
41
  end
40
42
 
41
43
  end
@@ -1,27 +1,29 @@
1
- RSpec.describe Mdm::Cred, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Cred do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context "Associations" do
5
- it { is_expected.to have_many(:task_creds).class_name('Mdm::TaskCred').dependent(:destroy) }
6
- it { is_expected.to have_many(:tasks).class_name('Mdm::Task').through(:task_creds) }
7
- it { is_expected.to belong_to(:service).class_name('Mdm::Service') }
7
+ it { should have_many(:task_creds).class_name('Mdm::TaskCred').dependent(:destroy) }
8
+ it { should have_many(:tasks).class_name('Mdm::Task').through(:task_creds) }
9
+ it { should belong_to(:service).class_name('Mdm::Service') }
8
10
  end
9
11
 
10
12
  context 'database' do
11
13
  context 'timestamps' do
12
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
13
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
14
+ it { should have_db_column(:created_at).of_type(:datetime) }
15
+ it { should have_db_column(:updated_at).of_type(:datetime) }
14
16
  end
15
17
 
16
18
  context 'columns' do
17
- it { is_expected.to have_db_column(:service_id).of_type(:integer).with_options(:null => false) }
18
- it { is_expected.to have_db_column(:user).of_type(:string) }
19
- it { is_expected.to have_db_column(:pass).of_type(:string) }
20
- it { is_expected.to have_db_column(:active).of_type(:boolean).with_options(:default => true) }
21
- it { is_expected.to have_db_column(:proof).of_type(:string) }
22
- it { is_expected.to have_db_column(:ptype).of_type(:string) }
23
- it { is_expected.to have_db_column(:source_id).of_type(:integer) }
24
- it { is_expected.to have_db_column(:source_type).of_type(:string) }
19
+ it { should have_db_column(:service_id).of_type(:integer).with_options(:null => false) }
20
+ it { should have_db_column(:user).of_type(:string) }
21
+ it { should have_db_column(:pass).of_type(:string) }
22
+ it { should have_db_column(:active).of_type(:boolean).with_options(:default => true) }
23
+ it { should have_db_column(:proof).of_type(:string) }
24
+ it { should have_db_column(:ptype).of_type(:string) }
25
+ it { should have_db_column(:source_id).of_type(:integer) }
26
+ it { should have_db_column(:source_type).of_type(:string) }
25
27
  end
26
28
  end
27
29
 
@@ -66,23 +68,25 @@ RSpec.describe Mdm::Cred, type: :model do
66
68
 
67
69
  context 'constants' do
68
70
  it 'should define the key_id regex' do
69
- expect(described_class::KEY_ID_REGEX).to eq(/([0-9a-fA-F:]{47})/)
71
+ described_class::KEY_ID_REGEX.should == /([0-9a-fA-F:]{47})/
70
72
  end
71
73
 
72
74
  it 'should define ptypes to humanize' do
73
- expect(described_class::PTYPES).to eq(
74
- {
75
- 'read/write password' => 'password_rw',
76
- 'read-only password' => 'password_ro',
77
- 'SMB hash' => 'smb_hash',
78
- 'SSH private key' => 'ssh_key',
79
- 'SSH public key' => 'ssh_pubkey'
80
- }
81
- )
75
+ described_class::PTYPES.should == {
76
+ 'read/write password' => 'password_rw',
77
+ 'read-only password' => 'password_ro',
78
+ 'SMB hash' => 'smb_hash',
79
+ 'SSH private key' => 'ssh_key',
80
+ 'SSH public key' => 'ssh_pubkey'
81
+ }
82
82
  end
83
83
  end
84
84
 
85
85
  context 'methods' do
86
+ #
87
+ # lets
88
+ #
89
+
86
90
  let(:host) {
87
91
  FactoryGirl.create(
88
92
  :mdm_host,
@@ -130,47 +134,55 @@ RSpec.describe Mdm::Cred, type: :model do
130
134
  FactoryGirl.create(:mdm_workspace)
131
135
  }
132
136
 
137
+ #
138
+ # Callbacks
139
+ #
140
+
141
+ before(:all) do
142
+ Mdm::Workspace.any_instance.stub(:valid_ip_or_range? => true)
143
+ end
144
+
133
145
  context '#ptype_human' do
134
146
  it "should return 'read/write password' for 'password_rw'" do
135
147
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'password_rw')
136
- expect(cred.ptype_human).to eq('read/write password')
148
+ cred.ptype_human.should == 'read/write password'
137
149
  end
138
150
 
139
151
  it "should return 'read-only password' for 'password_ro'" do
140
152
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'password_ro')
141
- expect(cred.ptype_human).to eq('read-only password')
153
+ cred.ptype_human.should == 'read-only password'
142
154
  end
143
155
 
144
156
  it "should return 'SMB Hash' for 'smb_hash'" do
145
157
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'smb_hash')
146
- expect(cred.ptype_human).to eq('SMB hash')
158
+ cred.ptype_human.should == 'SMB hash'
147
159
  end
148
160
 
149
161
  it "should return 'SSH private key' for 'ssh_key'" do
150
162
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'ssh_key')
151
- expect(cred.ptype_human).to eq('SSH private key')
163
+ cred.ptype_human.should == 'SSH private key'
152
164
  end
153
165
 
154
166
  it "should return 'SSH public key' for 'ssh_pubkey'" do
155
167
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'ssh_pubkey')
156
- expect(cred.ptype_human).to eq('SSH public key')
168
+ cred.ptype_human.should == 'SSH public key'
157
169
  end
158
170
  end
159
171
 
160
172
  context '#ssh_key_id' do
161
173
  it 'should return nil if not an ssh_key' do
162
174
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => 'msfadmin', :ptype => 'password_rw')
163
- expect(cred.ssh_key_id).to eq(nil)
175
+ cred.ssh_key_id.should == nil
164
176
  end
165
177
 
166
178
  it 'should return nil if proof does not contain the key id' do
167
179
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => '/path/to/keyfile', :ptype => 'ssh_key', :proof => "no key here")
168
- expect(cred.ssh_key_id).to eq(nil)
180
+ cred.ssh_key_id.should == nil
169
181
  end
170
182
 
171
183
  it 'should return the key id for an ssh_key' do
172
184
  cred = FactoryGirl.build(:mdm_cred, :user => 'msfadmin', :pass => '/path/to/keyfile', :ptype => 'ssh_key', :proof => "KEY=57:c3:11:5d:77:c5:63:90:33:2d:c5:c4:99:78:62:7a")
173
- expect(cred.ssh_key_id).to eq('57:c3:11:5d:77:c5:63:90:33:2d:c5:c4:99:78:62:7a')
185
+ cred.ssh_key_id.should == '57:c3:11:5d:77:c5:63:90:33:2d:c5:c4:99:78:62:7a'
174
186
  end
175
187
 
176
188
  end
@@ -222,14 +234,14 @@ RSpec.describe Mdm::Cred, type: :model do
222
234
  it 'should behave the same for public keys as private keys' do
223
235
  pubkey2 = FactoryGirl.create(:mdm_cred, :service => service, :user => 'msfadmin', :pass => '/path/to/keyfile', :ptype => 'ssh_pubkey', :proof => "KEY=57:c3:11:5d:77:c5:63:90:33:2d:c5:c4:99:78:62:7a")
224
236
  pubkey3 = FactoryGirl.create(:mdm_cred, :service => service, :user => 'msfadmin', :pass => '/path/to/keyfile', :ptype => 'ssh_pubkey', :proof => "KEY=66:d4:22:6e:88:d6:74:A1:44:3e:d6:d5:AA:89:73:8b")
225
- expect(pubkey2.ssh_key_matches?(ssh_pubkey)).to eq(true)
226
- expect(pubkey2.ssh_key_matches?(pubkey3)).to eq(false)
237
+ pubkey2.ssh_key_matches?(ssh_pubkey).should == true
238
+ pubkey2.ssh_key_matches?(pubkey3).should == false
227
239
  end
228
240
 
229
241
  it 'should always return false for non ssh key creds' do
230
242
  cred2 = FactoryGirl.create(:mdm_cred, :service => other_service, :ptype => 'password', :user => 'msfadmin', :pass => 'msfadmin' )
231
243
  cred3 = FactoryGirl.create(:mdm_cred, :service => other_service, :ptype => 'password', :user => 'msfadmin', :pass => 'msfadmin' )
232
- expect(cred2.ssh_key_matches?(cred3)).to eq(false)
244
+ cred2.ssh_key_matches?(cred3).should == false
233
245
  end
234
246
  end
235
247
 
@@ -259,11 +271,11 @@ RSpec.describe Mdm::Cred, type: :model do
259
271
  end
260
272
 
261
273
  it 'should return all ssh private keys with a matching id' do
262
- expect(other_ssh_key.ssh_keys).to include(ssh_key)
274
+ other_ssh_key.ssh_keys.should include(ssh_key)
263
275
  end
264
276
 
265
277
  it 'should return all ssh public keys with a matching id' do
266
- expect(other_ssh_key.ssh_keys).to include(ssh_pubkey)
278
+ other_ssh_key.ssh_keys.should include(ssh_pubkey)
267
279
  end
268
280
  end
269
281
 
@@ -293,11 +305,11 @@ RSpec.describe Mdm::Cred, type: :model do
293
305
  end
294
306
 
295
307
  it 'should return ssh private keys with matching ids' do
296
- expect(other_ssh_key.ssh_private_keys).to include(ssh_key)
308
+ other_ssh_key.ssh_private_keys.should include(ssh_key)
297
309
  end
298
310
 
299
311
  it 'should not return ssh public keys with matching ids' do
300
- expect(other_ssh_key.ssh_private_keys).not_to include(ssh_pubkey)
312
+ other_ssh_key.ssh_private_keys.should_not include(ssh_pubkey)
301
313
  end
302
314
  end
303
315
 
@@ -327,11 +339,11 @@ RSpec.describe Mdm::Cred, type: :model do
327
339
  end
328
340
 
329
341
  it 'should not return ssh private keys with matching ids' do
330
- expect(other_ssh_key.ssh_public_keys).not_to include(ssh_key)
342
+ other_ssh_key.ssh_public_keys.should_not include(ssh_key)
331
343
  end
332
344
 
333
345
  it 'should return ssh public keys with matching ids' do
334
- expect(other_ssh_key.ssh_public_keys).to include(ssh_pubkey)
346
+ other_ssh_key.ssh_public_keys.should include(ssh_pubkey)
335
347
  end
336
348
  end
337
349
  end
@@ -339,7 +351,7 @@ RSpec.describe Mdm::Cred, type: :model do
339
351
  context 'factory' do
340
352
  it 'should be valid' do
341
353
  cred = FactoryGirl.build(:mdm_cred)
342
- expect(cred).to be_valid
354
+ cred.should be_valid
343
355
  end
344
356
  end
345
357
 
@@ -1,25 +1,27 @@
1
- RSpec.describe Mdm::Event, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Event do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
5
- it { is_expected.to belong_to(:host).class_name('Mdm::Host') }
6
- it { is_expected.to belong_to(:workspace).class_name('Mdm::Workspace') }
7
+ it { should belong_to(:host).class_name('Mdm::Host') }
8
+ it { should belong_to(:workspace).class_name('Mdm::Workspace') }
7
9
  end
8
10
 
9
11
  context 'database' do
10
12
  context 'timestamps' do
11
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
12
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
13
+ it { should have_db_column(:created_at).of_type(:datetime) }
14
+ it { should have_db_column(:updated_at).of_type(:datetime) }
13
15
  end
14
16
 
15
17
  context 'columns' do
16
- it { is_expected.to have_db_column(:workspace_id).of_type(:integer) }
17
- it { is_expected.to have_db_column(:host_id).of_type(:integer) }
18
- it { is_expected.to have_db_column(:name).of_type(:string) }
19
- it { is_expected.to have_db_column(:critical).of_type(:boolean) }
20
- it { is_expected.to have_db_column(:seen).of_type(:boolean) }
21
- it { is_expected.to have_db_column(:username).of_type(:string) }
22
- it { is_expected.to have_db_column(:info).of_type(:text) }
18
+ it { should have_db_column(:workspace_id).of_type(:integer) }
19
+ it { should have_db_column(:host_id).of_type(:integer) }
20
+ it { should have_db_column(:name).of_type(:string) }
21
+ it { should have_db_column(:critical).of_type(:boolean) }
22
+ it { should have_db_column(:seen).of_type(:boolean) }
23
+ it { should have_db_column(:username).of_type(:string) }
24
+ it { should have_db_column(:info).of_type(:text) }
23
25
  end
24
26
  end
25
27
 
@@ -42,16 +44,16 @@ RSpec.describe Mdm::Event, type: :model do
42
44
  flagged_event = FactoryGirl.create(:mdm_event, :name => 'flagme', :critical => true, :seen => false)
43
45
  non_critical_event = FactoryGirl.create(:mdm_event, :name => 'dontflagmebro', :critical => false, :seen => false)
44
46
  flagged_set = Mdm::Event.flagged
45
- expect(flagged_set).to include(flagged_event)
46
- expect(flagged_set).not_to include(non_critical_event)
47
+ flagged_set.should include(flagged_event)
48
+ flagged_set.should_not include(non_critical_event)
47
49
  end
48
50
 
49
51
  it 'should exclude seen events' do
50
52
  flagged_event = FactoryGirl.create(:mdm_event, :name => 'flagme', :critical => true, :seen => false)
51
53
  non_critical_event = FactoryGirl.create(:mdm_event, :name => 'dontflagmebro', :critical => false, :seen => true)
52
54
  flagged_set = Mdm::Event.flagged
53
- expect(flagged_set).to include(flagged_event)
54
- expect(flagged_set).not_to include(non_critical_event)
55
+ flagged_set.should include(flagged_event)
56
+ flagged_set.should_not include(non_critical_event)
55
57
  end
56
58
  end
57
59
 
@@ -60,8 +62,8 @@ RSpec.describe Mdm::Event, type: :model do
60
62
  flagged_event = FactoryGirl.create(:mdm_event, :name => 'module_run')
61
63
  non_critical_event = FactoryGirl.create(:mdm_event, :name => 'dontflagmebro')
62
64
  flagged_set = Mdm::Event.module_run
63
- expect(flagged_set).to include(flagged_event)
64
- expect(flagged_set).not_to include(non_critical_event)
65
+ flagged_set.should include(flagged_event)
66
+ flagged_set.should_not include(non_critical_event)
65
67
  end
66
68
  end
67
69
  end
@@ -69,15 +71,15 @@ RSpec.describe Mdm::Event, type: :model do
69
71
  context 'validations' do
70
72
  it 'should require name' do
71
73
  unnamed_event = FactoryGirl.build(:mdm_event, :name => nil)
72
- expect(unnamed_event).not_to be_valid
73
- expect(unnamed_event.errors[:name]).to include("can't be blank")
74
+ unnamed_event.should_not be_valid
75
+ unnamed_event.errors[:name].should include("can't be blank")
74
76
  end
75
77
  end
76
78
 
77
79
  context 'factory' do
78
80
  it 'should be valid' do
79
81
  event = FactoryGirl.build(:mdm_event)
80
- expect(event).to be_valid
82
+ event.should be_valid
81
83
  end
82
84
  end
83
85