metasploit_data_models 0.17.1-java → 0.17.2-java

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -0
  3. data/Gemfile +2 -0
  4. data/app/models/mdm/host.rb +24 -0
  5. data/app/models/mdm/service.rb +9 -0
  6. data/app/models/metasploit_data_models/search/visitor/attribute.rb +13 -0
  7. data/app/models/metasploit_data_models/search/visitor/includes.rb +28 -0
  8. data/app/models/metasploit_data_models/search/visitor/joins.rb +47 -0
  9. data/app/models/metasploit_data_models/search/visitor/method.rb +13 -0
  10. data/app/models/metasploit_data_models/search/visitor/relation.rb +87 -0
  11. data/app/models/metasploit_data_models/search/visitor/where.rb +65 -0
  12. data/config/locales/en.yml +7 -0
  13. data/lib/metasploit_data_models.rb +1 -0
  14. data/lib/metasploit_data_models/search.rb +6 -0
  15. data/lib/metasploit_data_models/search/visitor.rb +8 -0
  16. data/lib/metasploit_data_models/version.rb +1 -1
  17. data/metasploit_data_models.gemspec +1 -0
  18. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +74 -0
  19. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +124 -0
  20. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +292 -0
  21. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +33 -0
  22. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +253 -0
  23. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +147 -0
  24. data/spec/dummy/config/initializers/active_record_migrations.rb +4 -0
  25. data/spec/factories/mdm/services.rb +5 -0
  26. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +38 -0
  27. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +26 -0
  28. data/spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record.rb +37 -0
  29. data/spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_opeator_deprecated_platform.rb +31 -0
  30. data/spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_operator_deprecated_authority.rb +78 -0
  31. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +34 -0
  32. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +50 -0
  33. metadata +59 -2
@@ -0,0 +1,26 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Includes#visit with Metasploit::Model::Search::Operation::Base' do
2
+ let(:operator) do
3
+ double('Operation Operator')
4
+ end
5
+
6
+ let(:node) do
7
+ node_class.new(
8
+ :operator => operator
9
+ )
10
+ end
11
+
12
+ it 'should visit operator' do
13
+ visitor.should_receive(:visit).with(node).and_call_original
14
+ visitor.should_receive(:visit).with(operator).and_return([])
15
+
16
+ visit
17
+ end
18
+
19
+ it 'should return operator visit' do
20
+ operator_visit = ["Visited Operator"]
21
+ visitor.should_receive(:visit).with(node).and_call_original
22
+ visitor.stub(:visit).with(operator).and_return(operator_visit)
23
+
24
+ visit.should == operator_visit
25
+ end
26
+ end
@@ -0,0 +1,37 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Relation#visit matching record' do |options={}|
2
+ options.assert_valid_keys(:attribute, :association)
3
+
4
+ attribute = options.fetch(:attribute)
5
+ association = options[:association]
6
+
7
+ if association
8
+ formatted_operator = "#{association}.#{attribute}"
9
+ else
10
+ formatted_operator = attribute.to_s
11
+ end
12
+
13
+ context "with #{formatted_operator}" do
14
+ let(:formatted) do
15
+ "#{formatted_operator}:\"#{value}\""
16
+ end
17
+
18
+ if association
19
+ let(:associated) do
20
+ # wrap in array so single and plural associations can be handled the same.
21
+ Array.wrap(matching_record.send(association)).first
22
+ end
23
+
24
+ let(:value) do
25
+ associated.send(attribute)
26
+ end
27
+ else
28
+ let(:value) do
29
+ matching_record.send(attribute)
30
+ end
31
+ end
32
+
33
+ it 'should find only matching record' do
34
+ expect(visit).to match_array([matching_record])
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,31 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Relation#visit matching record with Metasploit::Model::Search::Operator::Deprecated::Platform' do |options={}|
2
+ options.assert_valid_keys(:name)
3
+
4
+ name = options.fetch(:name)
5
+
6
+ context "with #{name}" do
7
+ let(:formatted) do
8
+ "#{name}:\"#{value}\""
9
+ end
10
+
11
+ context 'with Mdm::Platform#fully_qualified_name' do
12
+ let(:value) do
13
+ matching_record.platforms.sample.fully_qualified_name
14
+ end
15
+
16
+ it 'should find only matching record' do
17
+ expect(visit).to match_array([matching_record])
18
+ end
19
+ end
20
+
21
+ context 'with Mdm::Module::Target#name' do
22
+ let(:value) do
23
+ matching_record.targets.sample.name
24
+ end
25
+
26
+ it 'should find only matching record' do
27
+ expect(visit).to match_array([matching_record])
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,78 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Relation#visit matching record with Metasploit::Model::Search::Operator::Deprecated::Authority' do |options={}|
2
+ options.assert_valid_keys(:abbreviation)
3
+
4
+ abbreviation = options.fetch(:abbreviation)
5
+
6
+ context "with #{abbreviation}" do
7
+ #
8
+ # lets
9
+ #
10
+
11
+ let(:formatted) do
12
+ "#{abbreviation}:#{value}"
13
+ end
14
+
15
+ let(:matching_authority) do
16
+ FactoryGirl.create(
17
+ :mdm_authority,
18
+ :abbreviation => abbreviation
19
+ )
20
+ end
21
+
22
+ let(:matching_record) do
23
+ FactoryGirl.build(
24
+ :mdm_module_instance,
25
+ module_class: matching_module_class,
26
+ # disable factory making references automatically so Mdm::Module::Reference#reference can be set to
27
+ # matching_reference
28
+ module_references_length: 0
29
+ ).tap { |module_instance|
30
+ module_instance.module_references << FactoryGirl.build(
31
+ :mdm_module_reference,
32
+ module_instance: module_instance,
33
+ reference: matching_reference
34
+ )
35
+ }
36
+ end
37
+
38
+ let(:matching_reference) do
39
+ FactoryGirl.create(
40
+ :mdm_reference,
41
+ :authority => matching_authority
42
+ )
43
+ end
44
+
45
+ let(:non_matching_authority) do
46
+ FactoryGirl.create(:mdm_authority)
47
+ end
48
+
49
+ let(:non_matching_record) do
50
+ FactoryGirl.build(
51
+ :mdm_module_instance,
52
+ module_class: non_matching_module_class,
53
+ module_references_length: 0
54
+ ).tap { |module_instance|
55
+ module_instance.module_references << FactoryGirl.build(
56
+ :mdm_module_reference,
57
+ module_instance: module_instance,
58
+ reference: non_matching_reference
59
+ )
60
+ }
61
+ end
62
+
63
+ let(:non_matching_reference) do
64
+ FactoryGirl.create(
65
+ :mdm_reference,
66
+ :authority => non_matching_authority
67
+ )
68
+ end
69
+
70
+ let(:value) do
71
+ matching_reference.designation
72
+ end
73
+
74
+ it 'should find only matching record' do
75
+ expect(visit).to match_array([matching_record])
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,34 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with equality operation' do
2
+ let(:node) do
3
+ node_class.new(
4
+ :operator => operator,
5
+ :value => value
6
+ )
7
+ end
8
+
9
+ let(:operator) do
10
+ Metasploit::Model::Search::Operator::Attribute.new(
11
+ # any class that responds to arel_table
12
+ :klass => Mdm::Host
13
+ )
14
+ end
15
+
16
+ let(:value) do
17
+ "value"
18
+ end
19
+
20
+ it 'should visit operation.operator with attribute_visitor' do
21
+ visitor.attribute_visitor.should_receive(:visit).with(operator).and_call_original
22
+
23
+ visit
24
+ end
25
+
26
+ it 'should call eq on Arel::Attributes::Attribute from attribute_visitor' do
27
+ attribute = double('Visited Operator')
28
+ visitor.attribute_visitor.stub(:visit).with(operator).and_return(attribute)
29
+
30
+ attribute.should_receive(:eq).with(value)
31
+
32
+ visit
33
+ end
34
+ end
@@ -0,0 +1,50 @@
1
+ shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with Metasploit::Model::Search::Group::Base' do |options={}|
2
+ options.assert_valid_keys(:arel_class)
3
+
4
+ arel_class = options.fetch(:arel_class)
5
+
6
+ let(:children) do
7
+ 2.times.collect { |n|
8
+ double("Group Child #{n}")
9
+ }
10
+ end
11
+
12
+ let(:node) do
13
+ node_class.new(
14
+ :children => children
15
+ )
16
+ end
17
+
18
+ it 'should visit each child' do
19
+ visitor.should_receive(:visit).with(node).and_call_original
20
+
21
+ children.each do |child|
22
+ visitor.should_receive(:visit).with(child).and_return(Arel::Nodes::Equality.new(1, 1))
23
+ end
24
+
25
+ visit
26
+ end
27
+
28
+ it "should combine children AREL with #{arel_class}" do
29
+ visitor.stub(:visit).with(node).and_call_original
30
+ child_visits = []
31
+
32
+ children.each_with_index do |child, i|
33
+ child_visit = Arel::Nodes::Equality.new(i, i)
34
+ visitor.stub(:visit).with(child).and_return(child_visit)
35
+ child_visits << child_visit
36
+ end
37
+
38
+ root = visit
39
+
40
+ if root.is_a? Arel::Nodes::Grouping
41
+ arel_pair = root.expr
42
+ else
43
+ arel_pair = root
44
+ end
45
+
46
+ arel_pair.should be_a arel_class
47
+
48
+ expect([arel_pair.left, arel_pair.right]).to match_array(child_visits)
49
+ end
50
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.17.2
5
5
  platform: java
6
6
  authors:
7
7
  - Samuel Huckins
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-05-09 00:00:00.000000000 Z
14
+ date: 2014-06-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -89,6 +89,26 @@ dependencies:
89
89
  version: '0'
90
90
  prerelease: false
91
91
  type: :runtime
92
+ - !ruby/object:Gem::Dependency
93
+ name: metasploit-model
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 0.24.1.pre.semantic.pre.versioning.pre.2.pre.0
99
+ - - <
100
+ - !ruby/object:Gem::Version
101
+ version: '0.25'
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: 0.24.1.pre.semantic.pre.versioning.pre.2.pre.0
107
+ - - <
108
+ - !ruby/object:Gem::Version
109
+ version: '0.25'
110
+ prerelease: false
111
+ type: :runtime
92
112
  - !ruby/object:Gem::Dependency
93
113
  name: kramdown
94
114
  version_requirements: !ruby/object:Gem::Requirement
@@ -199,10 +219,17 @@ files:
199
219
  - app/models/mdm/wmap_request.rb
200
220
  - app/models/mdm/wmap_target.rb
201
221
  - app/models/mdm/workspace.rb
222
+ - app/models/metasploit_data_models/search/visitor/attribute.rb
223
+ - app/models/metasploit_data_models/search/visitor/includes.rb
224
+ - app/models/metasploit_data_models/search/visitor/joins.rb
225
+ - app/models/metasploit_data_models/search/visitor/method.rb
226
+ - app/models/metasploit_data_models/search/visitor/relation.rb
227
+ - app/models/metasploit_data_models/search/visitor/where.rb
202
228
  - app/validators/ip_format_validator.rb
203
229
  - app/validators/parameters_validator.rb
204
230
  - app/validators/password_is_strong_validator.rb
205
231
  - bin/mdm_console
232
+ - config/locales/en.yml
206
233
  - console_db.yml
207
234
  - db/migrate/000_create_tables.rb
208
235
  - db/migrate/001_add_wmap_tables.rb
@@ -319,6 +346,8 @@ files:
319
346
  - lib/metasploit_data_models/change_required_columns_to_null_false.rb
320
347
  - lib/metasploit_data_models/engine.rb
321
348
  - lib/metasploit_data_models/models.rb
349
+ - lib/metasploit_data_models/search.rb
350
+ - lib/metasploit_data_models/search/visitor.rb
322
351
  - lib/metasploit_data_models/serialized_prefs.rb
323
352
  - lib/metasploit_data_models/validators.rb
324
353
  - lib/metasploit_data_models/version.rb
@@ -366,6 +395,12 @@ files:
366
395
  - spec/app/models/mdm/web_site_spec.rb
367
396
  - spec/app/models/mdm/web_vuln_spec.rb
368
397
  - spec/app/models/mdm/workspace_spec.rb
398
+ - spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb
399
+ - spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb
400
+ - spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb
401
+ - spec/app/models/metasploit_data_models/search/visitor/method_spec.rb
402
+ - spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb
403
+ - spec/app/models/metasploit_data_models/search/visitor/where_spec.rb
369
404
  - spec/app/validators/parameters_validator_spec.rb
370
405
  - spec/app/validators/password_is_strong_validator_spec.rb
371
406
  - spec/dummy/Rakefile
@@ -385,6 +420,7 @@ files:
385
420
  - spec/dummy/config/environments/development.rb
386
421
  - spec/dummy/config/environments/production.rb
387
422
  - spec/dummy/config/environments/test.rb
423
+ - spec/dummy/config/initializers/active_record_migrations.rb
388
424
  - spec/dummy/config/initializers/backtrace_silencers.rb
389
425
  - spec/dummy/config/initializers/inflections.rb
390
426
  - spec/dummy/config/initializers/mime_types.rb
@@ -451,6 +487,13 @@ files:
451
487
  - spec/spec_helper.rb
452
488
  - spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb
453
489
  - spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb
490
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb
491
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb
492
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record.rb
493
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_opeator_deprecated_platform.rb
494
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_operator_deprecated_authority.rb
495
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb
496
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb
454
497
  homepage: ''
455
498
  licenses: []
456
499
  metadata: {}
@@ -516,6 +559,12 @@ test_files:
516
559
  - spec/app/models/mdm/web_site_spec.rb
517
560
  - spec/app/models/mdm/web_vuln_spec.rb
518
561
  - spec/app/models/mdm/workspace_spec.rb
562
+ - spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb
563
+ - spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb
564
+ - spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb
565
+ - spec/app/models/metasploit_data_models/search/visitor/method_spec.rb
566
+ - spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb
567
+ - spec/app/models/metasploit_data_models/search/visitor/where_spec.rb
519
568
  - spec/app/validators/parameters_validator_spec.rb
520
569
  - spec/app/validators/password_is_strong_validator_spec.rb
521
570
  - spec/dummy/Rakefile
@@ -535,6 +584,7 @@ test_files:
535
584
  - spec/dummy/config/environments/development.rb
536
585
  - spec/dummy/config/environments/production.rb
537
586
  - spec/dummy/config/environments/test.rb
587
+ - spec/dummy/config/initializers/active_record_migrations.rb
538
588
  - spec/dummy/config/initializers/backtrace_silencers.rb
539
589
  - spec/dummy/config/initializers/inflections.rb
540
590
  - spec/dummy/config/initializers/mime_types.rb
@@ -601,4 +651,11 @@ test_files:
601
651
  - spec/spec_helper.rb
602
652
  - spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb
603
653
  - spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb
654
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb
655
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb
656
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record.rb
657
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_opeator_deprecated_platform.rb
658
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record/with_metasploit_model_search_operator_deprecated_authority.rb
659
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb
660
+ - spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb
604
661
  has_rdoc: