metasploit_data_models 0.17.2 → 0.17.3.pre.metasploit.pre.concern
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/models/mdm/api_key.rb +1 -1
- data/app/models/mdm/client.rb +1 -1
- data/app/models/mdm/cred.rb +4 -2
- data/app/models/mdm/event.rb +1 -1
- data/app/models/mdm/exploit_attempt.rb +1 -1
- data/app/models/mdm/exploited_host.rb +1 -1
- data/app/models/mdm/host.rb +1 -1
- data/app/models/mdm/host_detail.rb +1 -1
- data/app/models/mdm/host_tag.rb +1 -1
- data/app/models/mdm/listener.rb +1 -2
- data/app/models/mdm/loot.rb +3 -1
- data/app/models/mdm/macro.rb +1 -1
- data/app/models/mdm/mod_ref.rb +1 -1
- data/app/models/mdm/module/action.rb +1 -1
- data/app/models/mdm/module/arch.rb +1 -1
- data/app/models/mdm/module/author.rb +1 -1
- data/app/models/mdm/module/detail.rb +1 -1
- data/app/models/mdm/module/mixin.rb +1 -1
- data/app/models/mdm/module/platform.rb +1 -1
- data/app/models/mdm/module/ref.rb +1 -1
- data/app/models/mdm/module/target.rb +1 -1
- data/app/models/mdm/nexpose_console.rb +1 -1
- data/app/models/mdm/note.rb +3 -1
- data/app/models/mdm/profile.rb +1 -1
- data/app/models/mdm/ref.rb +1 -1
- data/app/models/mdm/route.rb +1 -1
- data/app/models/mdm/service.rb +1 -1
- data/app/models/mdm/session.rb +3 -1
- data/app/models/mdm/session_event.rb +1 -1
- data/app/models/mdm/tag.rb +1 -1
- data/app/models/mdm/task.rb +3 -1
- data/app/models/mdm/task_cred.rb +2 -0
- data/app/models/mdm/task_host.rb +2 -0
- data/app/models/mdm/task_service.rb +2 -0
- data/app/models/mdm/task_session.rb +2 -0
- data/app/models/mdm/user.rb +1 -1
- data/app/models/mdm/vuln.rb +3 -1
- data/app/models/mdm/vuln_attempt.rb +1 -1
- data/app/models/mdm/vuln_detail.rb +1 -1
- data/app/models/mdm/vuln_ref.rb +1 -1
- data/app/models/mdm/web_form.rb +1 -1
- data/app/models/mdm/web_page.rb +1 -1
- data/app/models/mdm/web_site.rb +1 -1
- data/app/models/mdm/web_vuln.rb +1 -1
- data/app/models/mdm/wmap_request.rb +1 -1
- data/app/models/mdm/wmap_target.rb +1 -1
- data/app/models/mdm/workspace.rb +3 -1
- data/app/models/metasploit_data_models/search/visitor/attribute.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/includes.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/joins.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/method.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/relation.rb +4 -0
- data/app/models/metasploit_data_models/search/visitor/where.rb +2 -0
- data/lib/metasploit_data_models.rb +1 -0
- data/lib/metasploit_data_models/version.rb +1 -1
- data/metasploit_data_models.gemspec +1 -0
- data/spec/app/models/mdm/api_key_spec.rb +5 -0
- data/spec/app/models/mdm/client_spec.rb +2 -0
- data/spec/app/models/mdm/cred_spec.rb +1 -0
- data/spec/app/models/mdm/{events_spec.rb → event_spec.rb} +1 -0
- data/spec/app/models/mdm/exploit_attempt_spec.rb +1 -0
- data/spec/app/models/mdm/exploited_host_spec.rb +34 -32
- data/spec/app/models/mdm/host_detail_spec.rb +1 -0
- data/spec/app/models/mdm/host_spec.rb +2 -0
- data/spec/app/models/mdm/host_tag_spec.rb +1 -0
- data/spec/app/models/mdm/listener_spec.rb +1 -0
- data/spec/app/models/mdm/loot_spec.rb +66 -64
- data/spec/app/models/mdm/macro_spec.rb +5 -0
- data/spec/app/models/mdm/mod_ref_spec.rb +5 -0
- data/spec/app/models/mdm/module/action_spec.rb +3 -0
- data/spec/app/models/mdm/module/arch_spec.rb +3 -0
- data/spec/app/models/mdm/module/author_spec.rb +3 -0
- data/spec/app/models/mdm/module/detail_spec.rb +2 -0
- data/spec/app/models/mdm/module/mixin_spec.rb +3 -0
- data/spec/app/models/mdm/module/platform_spec.rb +3 -0
- data/spec/app/models/mdm/module/ref_spec.rb +3 -0
- data/spec/app/models/mdm/module/target_spec.rb +3 -0
- data/spec/app/models/mdm/nexpose_console_spec.rb +1 -0
- data/spec/app/models/mdm/note_spec.rb +1 -0
- data/spec/app/models/mdm/profile_spec.rb +5 -0
- data/spec/app/models/mdm/ref_spec.rb +2 -0
- data/spec/app/models/mdm/route_spec.rb +1 -0
- data/spec/app/models/mdm/service_spec.rb +1 -0
- data/spec/app/models/mdm/session_event_spec.rb +2 -0
- data/spec/app/models/mdm/session_spec.rb +1 -0
- data/spec/app/models/mdm/tag_spec.rb +1 -0
- data/spec/app/models/mdm/{task_creds_spec.rb → task_cred_spec.rb} +1 -0
- data/spec/app/models/mdm/task_host_spec.rb +1 -0
- data/spec/app/models/mdm/task_service_spec.rb +1 -0
- data/spec/app/models/mdm/{task_sessions_spec.rb → task_session_spec.rb} +1 -0
- data/spec/app/models/mdm/task_spec.rb +1 -0
- data/spec/app/models/mdm/user_spec.rb +1 -0
- data/spec/app/models/mdm/vuln_attempt_spec.rb +1 -0
- data/spec/app/models/mdm/{vuln_details_spec.rb → vuln_detail_spec.rb} +1 -0
- data/spec/app/models/mdm/vuln_ref_spec.rb +2 -0
- data/spec/app/models/mdm/vuln_spec.rb +2 -0
- data/spec/app/models/mdm/web_form_spec.rb +1 -0
- data/spec/app/models/mdm/web_page_spec.rb +1 -0
- data/spec/app/models/mdm/web_site_spec.rb +1 -0
- data/spec/app/models/mdm/web_vuln_spec.rb +2 -0
- data/spec/app/models/mdm/wmap_request_spec.rb +5 -0
- data/spec/app/models/mdm/wmap_target_spec.rb +5 -0
- data/spec/app/models/mdm/workspace_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +2 -0
- data/spec/spec_helper.rb +11 -3
- metadata +38 -12
@@ -4,5 +4,5 @@ module MetasploitDataModels
|
|
4
4
|
# metasploit-framework/data/sql/migrate to db/migrate in this project, not all models have specs that verify the
|
5
5
|
# migrations (with have_db_column and have_db_index) and certain models may not be shared between metasploit-framework
|
6
6
|
# and pro, so models may be removed in the future. Because of the unstable API the version should remain below 1.0.0
|
7
|
-
VERSION = '0.17.
|
7
|
+
VERSION = '0.17.3-metasploit-concern'
|
8
8
|
end
|
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
|
|
38
38
|
# @see MSP-2971
|
39
39
|
s.add_runtime_dependency 'activerecord', '>= 3.2.13', '< 4.0.0'
|
40
40
|
s.add_runtime_dependency 'activesupport'
|
41
|
+
s.add_runtime_dependency 'metasploit-concern', '~> 0.1.0'
|
41
42
|
s.add_runtime_dependency 'metasploit-model', '>= 0.24.1.pre.semantic.pre.versioning.pre.2.pre.0', '< 0.25'
|
42
43
|
|
43
44
|
if RUBY_PLATFORM =~ /java/
|
@@ -1,38 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mdm::ExploitedHost do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
4
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
5
|
+
|
6
|
+
context 'associations' do
|
7
|
+
it { should belong_to(:host).class_name('Mdm::Host') }
|
8
|
+
it { should belong_to(:service).class_name('Mdm::Service') }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'database' do
|
12
|
+
|
13
|
+
context 'timestamps'do
|
14
|
+
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
15
|
+
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'columns' do
|
19
|
+
it { should have_db_column(:host_id).of_type(:integer).with_options(:null => false) }
|
20
|
+
it { should have_db_column(:service_id).of_type(:integer) }
|
21
|
+
it { should have_db_column(:name).of_type(:string) }
|
22
|
+
it { should have_db_column(:session_uuid).of_type(:string) }
|
23
|
+
it { should have_db_column(:payload).of_type(:string) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#destroy' do
|
28
|
+
it 'should successfully destroy the object and all dependent objects' do
|
29
|
+
exploited_host = FactoryGirl.create(:mdm_exploited_host)
|
30
|
+
expect {
|
31
|
+
exploited_host.destroy
|
32
|
+
}.to_not raise_error
|
33
|
+
expect {
|
34
|
+
exploited_host.reload
|
35
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
36
|
+
end
|
37
|
+
end
|
36
38
|
|
37
39
|
context 'factory' do
|
38
40
|
it 'should be valid' do
|
@@ -1,77 +1,79 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mdm::Loot do
|
4
|
-
|
5
|
-
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
6
|
-
it { should belong_to(:service).class_name('Mdm::Service') }
|
7
|
-
it { should belong_to(:host).class_name('Mdm::Host') }
|
8
|
-
end
|
4
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
9
5
|
|
10
|
-
|
6
|
+
context 'associations' do
|
7
|
+
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
8
|
+
it { should belong_to(:service).class_name('Mdm::Service') }
|
9
|
+
it { should belong_to(:host).class_name('Mdm::Host') }
|
10
|
+
end
|
11
11
|
|
12
|
-
|
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
|
-
end
|
12
|
+
context 'database' do
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
it { should have_db_column(:ltype).of_type(:string) }
|
22
|
-
it { should have_db_column(:path).of_type(:string) }
|
23
|
-
it { should have_db_column(:data).of_type(:text) }
|
24
|
-
it { should have_db_column(:content_type).of_type(:string) }
|
25
|
-
it { should have_db_column(:name).of_type(:text) }
|
26
|
-
it { should have_db_column(:info).of_type(:text) }
|
27
|
-
end
|
28
|
-
end
|
14
|
+
context 'timestamps'do
|
15
|
+
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
16
|
+
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
17
|
+
end
|
29
18
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
context 'columns' do
|
20
|
+
it { should have_db_column(:workspace_id).of_type(:integer).with_options(:null => false, :default =>1) }
|
21
|
+
it { should have_db_column(:host_id).of_type(:integer) }
|
22
|
+
it { should have_db_column(:service_id).of_type(:integer) }
|
23
|
+
it { should have_db_column(:ltype).of_type(:string) }
|
24
|
+
it { should have_db_column(:path).of_type(:string) }
|
25
|
+
it { should have_db_column(:data).of_type(:text) }
|
26
|
+
it { should have_db_column(:content_type).of_type(:string) }
|
27
|
+
it { should have_db_column(:name).of_type(:text) }
|
28
|
+
it { should have_db_column(:info).of_type(:text) }
|
29
|
+
end
|
30
|
+
end
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
expect {
|
44
|
-
loot.reload
|
45
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
46
|
-
end
|
47
|
-
end
|
32
|
+
context 'factory' do
|
33
|
+
it 'should be valid' do
|
34
|
+
loot = FactoryGirl.build(:mdm_loot)
|
35
|
+
loot.should be_valid
|
36
|
+
end
|
37
|
+
end
|
48
38
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
39
|
+
context '#destroy' do
|
40
|
+
it 'should successfully destroy the object' do
|
41
|
+
loot = FactoryGirl.create(:mdm_loot)
|
42
|
+
expect {
|
43
|
+
loot.destroy
|
44
|
+
}.to_not raise_error
|
45
|
+
expect {
|
46
|
+
loot.reload
|
47
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
48
|
+
end
|
49
|
+
end
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
context 'scopes' do
|
52
|
+
context 'search' do
|
53
|
+
it 'should match on ltype' do
|
54
|
+
myloot = FactoryGirl.create(:mdm_loot, :ltype => 'find.this.ltype')
|
55
|
+
Mdm::Loot.search('find.this.ltype').should include(myloot)
|
56
|
+
end
|
60
57
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
58
|
+
it 'should match on name' do
|
59
|
+
myloot = FactoryGirl.create(:mdm_loot, :name => 'Find This')
|
60
|
+
Mdm::Loot.search('Find This').should include(myloot)
|
61
|
+
end
|
67
62
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
63
|
+
it 'should match on info' do
|
64
|
+
myloot = FactoryGirl.create(:mdm_loot, :info => 'Find This')
|
65
|
+
Mdm::Loot.search('Find This').should include(myloot)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'callbacks' do
|
71
|
+
context 'before_destroy' do
|
72
|
+
it 'should call #delete_file' do
|
73
|
+
myloot = FactoryGirl.create(:mdm_loot)
|
74
|
+
myloot.should_receive(:delete_file)
|
75
|
+
myloot.destroy
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
77
79
|
end
|
@@ -47,6 +47,8 @@ describe Mdm::Module::Detail do
|
|
47
47
|
]
|
48
48
|
end
|
49
49
|
|
50
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
51
|
+
|
50
52
|
context 'associations' do
|
51
53
|
it { should have_many(:actions).class_name('Mdm::Module::Action').dependent(:destroy) }
|
52
54
|
it { should have_many(:archs).class_name('Mdm::Module::Arch').dependent(:destroy) }
|