dradis-plugins 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +77 -0
  5. data/CONTRIBUTING.md +3 -0
  6. data/Gemfile +10 -0
  7. data/LICENSE +339 -0
  8. data/README.md +31 -0
  9. data/Rakefile +2 -0
  10. data/app/controllers/concerns/dradis/plugins/persistent_permissions.rb +43 -0
  11. data/app/controllers/dradis/plugins/export/base_controller.rb +18 -0
  12. data/dradis-plugins.gemspec +31 -0
  13. data/lib/dradis-plugins.rb +1 -0
  14. data/lib/dradis/plugins.rb +80 -0
  15. data/lib/dradis/plugins/base.rb +45 -0
  16. data/lib/dradis/plugins/configurable.rb +26 -0
  17. data/lib/dradis/plugins/content_service/base.rb +26 -0
  18. data/lib/dradis/plugins/content_service/boards.rb +32 -0
  19. data/lib/dradis/plugins/content_service/categories.rb +9 -0
  20. data/lib/dradis/plugins/content_service/content_blocks.rb +44 -0
  21. data/lib/dradis/plugins/content_service/core.rb +53 -0
  22. data/lib/dradis/plugins/content_service/evidence.rb +36 -0
  23. data/lib/dradis/plugins/content_service/issues.rb +94 -0
  24. data/lib/dradis/plugins/content_service/nodes.rb +88 -0
  25. data/lib/dradis/plugins/content_service/notes.rb +43 -0
  26. data/lib/dradis/plugins/content_service/properties.rb +9 -0
  27. data/lib/dradis/plugins/engine.rb +15 -0
  28. data/lib/dradis/plugins/export.rb +1 -0
  29. data/lib/dradis/plugins/export/base.rb +57 -0
  30. data/lib/dradis/plugins/gem_version.rb +17 -0
  31. data/lib/dradis/plugins/import.rb +3 -0
  32. data/lib/dradis/plugins/import/filters.rb +51 -0
  33. data/lib/dradis/plugins/import/filters/base.rb +16 -0
  34. data/lib/dradis/plugins/import/result.rb +12 -0
  35. data/lib/dradis/plugins/settings.rb +91 -0
  36. data/lib/dradis/plugins/template_service.rb +104 -0
  37. data/lib/dradis/plugins/templates.rb +57 -0
  38. data/lib/dradis/plugins/thor.rb +30 -0
  39. data/lib/dradis/plugins/thor_helper.rb +29 -0
  40. data/lib/dradis/plugins/upload.rb +10 -0
  41. data/lib/dradis/plugins/upload/base.rb +57 -0
  42. data/lib/dradis/plugins/upload/field_processor.rb +35 -0
  43. data/lib/dradis/plugins/upload/importer.rb +78 -0
  44. data/lib/dradis/plugins/version.rb +11 -0
  45. data/spec/internal/log/test.log +0 -0
  46. data/spec/lib/dradis/plugins/content_service/boards_spec.rb +45 -0
  47. data/spec/lib/dradis/plugins/content_service/issues_spec.rb +64 -0
  48. data/spec/settings_spec.rb +88 -0
  49. data/spec/spec_helper.rb +2 -0
  50. metadata +138 -0
@@ -0,0 +1,11 @@
1
+ require_relative 'gem_version'
2
+
3
+ module Dradis
4
+ module Plugins
5
+ # Returns the version of the currently loaded Action Mailer as a
6
+ # <tt>Gem::Version</tt>.
7
+ def self.version
8
+ gem_version
9
+ end
10
+ end
11
+ end
File without changes
@@ -0,0 +1,45 @@
1
+ require 'rails_helper'
2
+
3
+ # To run, execute from Dradis main app folder:
4
+ # bin/rspec [dradis-plugins path]/spec/lib/dradis/plugins/content_service/boards_spec.rb
5
+ describe Dradis::Plugins::ContentService::Boards do
6
+ let(:plugin) { Dradis::Plugins::Nessus }
7
+ let(:project) { create(:project) }
8
+ let(:service) do
9
+ Dradis::Plugins::ContentService::Base.new(
10
+ plugin: plugin,
11
+ logger: Rails.logger,
12
+ project: project
13
+ )
14
+ end
15
+
16
+ describe 'Boards' do
17
+ describe '#all_boards' do
18
+ it 'returns all the project-level boards' do
19
+ board = create(:board, project: project)
20
+ node = create(:node, project: project)
21
+ node_board = create(:board, node: node, project: project)
22
+
23
+ boards = service.all_boards
24
+
25
+ expect(boards).to include(board)
26
+ expect(boards).to_not include(node_board)
27
+ end
28
+ end
29
+
30
+ describe '#create_board' do
31
+ it 'creates a board without a node' do
32
+ service.create_board(name: 'NodelessBoard')
33
+
34
+ expect(project.reload.boards.where(name: 'NodelessBoard')).to_not be_nil
35
+ end
36
+
37
+ it 'creates a board with a node' do
38
+ node = create(:node, project: project)
39
+ service.create_board(name: 'NodeBoard', node_id: node.id)
40
+
41
+ expect(project.reload.boards.where(name: 'NodeBoard')).to_not be_nil
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,64 @@
1
+ require 'rails_helper'
2
+
3
+ # These specs are coming from engines/dradispro-rules/spec/content_service_spec.rb
4
+ # To run, execute from Dradis main app folder:
5
+ # bin/rspec [dradis-plugins path]/spec/lib/dradis/plugins/content_service/issues_spec.rb
6
+
7
+ describe Dradis::Plugins::ContentService::Base do
8
+ let(:plugin) { Dradis::Plugins::Nessus }
9
+ let(:project) { create(:project) }
10
+ let(:service) do
11
+ Dradis::Plugins::ContentService::Base.new(
12
+ plugin: plugin,
13
+ logger: Rails.logger,
14
+ project: project
15
+ )
16
+ end
17
+
18
+ describe 'Issues' do
19
+ let(:create_issue) do
20
+ service.create_issue_without_callback(id: plugin_id)
21
+ end
22
+
23
+ # Remember: even though we're calling create_issue_without_callback,
24
+ # that method will still call issue_cache_with_callback internally.
25
+ # So when we store an issue in the issue_cache/finding_cache below,
26
+ # it's being stored within an instance of FindingCache, which
27
+ # automatically wraps Issues in Findings.
28
+
29
+ describe 'when the issue already exists in the cache' do
30
+ let(:existing_issue) { create(:issue, text: cached_issue_text) }
31
+ before { cache.store(existing_issue) }
32
+
33
+ it "doesn't create a new issue" do
34
+ expect{create_issue}.not_to change{Issue.count}
35
+ end
36
+
37
+ it 'returns the cached issue encapsulated in a finding' do
38
+ finding = create_issue
39
+ expect(finding).to be_a(Finding)
40
+ expect(finding).to eq Finding.from_issue(existing_issue)
41
+ end
42
+ end
43
+
44
+ describe "when the issue doesn't already exist in the cache" do
45
+ it "creates a new Issue containing 'plugin' and 'plugin_id'" do
46
+ new_issue = nil
47
+ expect{new_issue = create_issue}.to change{Issue.count}.by(1)
48
+ expect(new_issue.body).to match(/#\[plugin\]#\n*#{plugin_name}/)
49
+ expect(new_issue.body).to match(/#\[plugin_id\]#\n*#{plugin_id}/)
50
+ end
51
+
52
+ it 'returns the new Issue encapsulated in a Finding' do
53
+ finding = create_issue
54
+ expect(finding).to be_a(Finding)
55
+ expect(finding).to eq Finding.from_issue(Issue.last)
56
+ end
57
+
58
+ it 'adds the new Finding to the cache' do
59
+ finding = create_issue
60
+ expect(cache[cache_key]).to eq finding
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,88 @@
1
+ #
2
+ # This spec must be ran from Dradis root dir
3
+ #
4
+ require 'spec_helper'
5
+
6
+ class TestEngine < ::Rails::Engine
7
+ include ::Dradis::Plugins::Base
8
+ addon_settings :test_engine do
9
+ settings.default_host = 'localhost'
10
+ settings.default_port = 80
11
+ settings.default_protocol = 'http'
12
+ end
13
+ end
14
+
15
+ describe Dradis::Plugins::Settings do
16
+
17
+ before(:each) do
18
+ TestEngine::settings.reset_defaults!
19
+ end
20
+
21
+ it "sets and return default values" do
22
+ expect(TestEngine::settings.host).to eq('localhost')
23
+ expect(TestEngine::settings.port).to eq(80)
24
+ end
25
+
26
+ it "sets and returns user defined values" do
27
+ expect(TestEngine::settings.host).to eq('localhost')
28
+ TestEngine::settings.host = '127.0.0.1'
29
+ expect(TestEngine::settings.host).to eq('127.0.0.1')
30
+ expect(TestEngine::settings.port).to eq(80)
31
+ end
32
+
33
+ it "sets and returns new value even if it equals default value" do
34
+ expect(TestEngine::settings.host).to eq('localhost')
35
+ TestEngine::settings.host = '127.0.0.1'
36
+ expect(TestEngine::settings.host).to eq('127.0.0.1')
37
+ TestEngine::settings.host = 'localhost'
38
+ expect(TestEngine::settings.host).to eq('localhost')
39
+ end
40
+
41
+ it "saves to db and returns persisted values" do
42
+ expect(TestEngine::settings.host).to eq('localhost')
43
+ TestEngine::settings.host = '127.0.0.1'
44
+ expect_any_instance_of(TestEngine::settings::send(:configuration_class)).to receive(:update_attribute)
45
+ expect(TestEngine::settings.save).to eq( { host: '127.0.0.1'} )
46
+ expect(TestEngine::settings.host).to eq('127.0.0.1')
47
+ end
48
+
49
+ it "reads from db after saving" do
50
+ expect(TestEngine::settings.host).to eq('localhost')
51
+ TestEngine::settings.host = '127.0.0.1'
52
+ expect(TestEngine::settings.save).to eq( { host: '127.0.0.1'} )
53
+ end
54
+
55
+ end
56
+
57
+ describe Dradis::Plugins::Settings, '#is_default?' do
58
+ it 'knows if a string value equals its default integer value' do
59
+ TestEngine::settings.is_default?(:port, '80')
60
+ end
61
+ end
62
+
63
+ describe Dradis::Plugins::Settings, '#all' do
64
+ it 'returns values from db, dirty state or default as needed and tells which one is default' do
65
+ TestEngine::settings.host = '127.0.0.1'
66
+ TestEngine::settings.save
67
+ TestEngine::settings.protocol = 'https'
68
+ expect(TestEngine::settings.all).to eq([
69
+ {
70
+ name: :host,
71
+ value: '127.0.0.1',
72
+ default: false
73
+ },
74
+ {
75
+ name: :port,
76
+ value: 80,
77
+ default: true
78
+ },
79
+ {
80
+ name: :protocol,
81
+ value: 'https',
82
+ default: false
83
+ },
84
+ ])
85
+ end
86
+ end
87
+
88
+
@@ -0,0 +1,2 @@
1
+ RSpec.configure do |config|
2
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dradis-plugins
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.18.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Martin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Required dependency for Dradis Framework.
56
+ email:
57
+ - etd@nomejortu.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - CHANGELOG.md
65
+ - CONTRIBUTING.md
66
+ - Gemfile
67
+ - LICENSE
68
+ - README.md
69
+ - Rakefile
70
+ - app/controllers/concerns/dradis/plugins/persistent_permissions.rb
71
+ - app/controllers/dradis/plugins/export/base_controller.rb
72
+ - dradis-plugins.gemspec
73
+ - lib/dradis-plugins.rb
74
+ - lib/dradis/plugins.rb
75
+ - lib/dradis/plugins/base.rb
76
+ - lib/dradis/plugins/configurable.rb
77
+ - lib/dradis/plugins/content_service/base.rb
78
+ - lib/dradis/plugins/content_service/boards.rb
79
+ - lib/dradis/plugins/content_service/categories.rb
80
+ - lib/dradis/plugins/content_service/content_blocks.rb
81
+ - lib/dradis/plugins/content_service/core.rb
82
+ - lib/dradis/plugins/content_service/evidence.rb
83
+ - lib/dradis/plugins/content_service/issues.rb
84
+ - lib/dradis/plugins/content_service/nodes.rb
85
+ - lib/dradis/plugins/content_service/notes.rb
86
+ - lib/dradis/plugins/content_service/properties.rb
87
+ - lib/dradis/plugins/engine.rb
88
+ - lib/dradis/plugins/export.rb
89
+ - lib/dradis/plugins/export/base.rb
90
+ - lib/dradis/plugins/gem_version.rb
91
+ - lib/dradis/plugins/import.rb
92
+ - lib/dradis/plugins/import/filters.rb
93
+ - lib/dradis/plugins/import/filters/base.rb
94
+ - lib/dradis/plugins/import/result.rb
95
+ - lib/dradis/plugins/settings.rb
96
+ - lib/dradis/plugins/template_service.rb
97
+ - lib/dradis/plugins/templates.rb
98
+ - lib/dradis/plugins/thor.rb
99
+ - lib/dradis/plugins/thor_helper.rb
100
+ - lib/dradis/plugins/upload.rb
101
+ - lib/dradis/plugins/upload/base.rb
102
+ - lib/dradis/plugins/upload/field_processor.rb
103
+ - lib/dradis/plugins/upload/importer.rb
104
+ - lib/dradis/plugins/version.rb
105
+ - spec/internal/log/test.log
106
+ - spec/lib/dradis/plugins/content_service/boards_spec.rb
107
+ - spec/lib/dradis/plugins/content_service/issues_spec.rb
108
+ - spec/settings_spec.rb
109
+ - spec/spec_helper.rb
110
+ homepage: http://dradisframework.org
111
+ licenses:
112
+ - GPL-2
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubygems_version: 3.1.2
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Plugin manager for the Dradis Framework project.
133
+ test_files:
134
+ - spec/internal/log/test.log
135
+ - spec/lib/dradis/plugins/content_service/boards_spec.rb
136
+ - spec/lib/dradis/plugins/content_service/issues_spec.rb
137
+ - spec/settings_spec.rb
138
+ - spec/spec_helper.rb