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

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 (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