metasploit_data_models 0.17.1-java → 0.17.2-java

Sign up to get free protection for your applications and to get access to all the features.
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: