dradis-html_export 4.1.1 → 4.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 205222446aa051525b3f1a66c3de03860b2bcda28162666b170e156d6cf2d7da
4
- data.tar.gz: e4ce08b1eb00b95a08371d710debab240efd7251f27859fc5dadf6abb2ac2e8a
3
+ metadata.gz: cc6c6bcbe59a15df89fa68f8824c257fe7bd878790686b65a6e8ed3844c8bce6
4
+ data.tar.gz: fb8a6be270cee79af15832c8819a8ef7b3c9e7904994c1c53c6200cd9ec479c0
5
5
  SHA512:
6
- metadata.gz: 327c889c0dc25383b6b7db55cd1b70bcfb9bd20131ec54560235c03c65af8394096ba62b75c4c06f4b46b7bed3e1397d201bb9d939d12984847ff5f4835c098e
7
- data.tar.gz: eb430dfd5ad4428e95a6d5babae0068d0813c3323fe8ce59d3cdfe162d2c745116688c8ef68928a89a2bb6ce3b61886f03dc3c2c2b6b44ecbf0c8756c3e187a7
6
+ metadata.gz: c9ae0c9c0435671e6dd58f52169c4d55f7fb300fa5bdab5ad550722de844ca905c0eb25a2ce772a494ca73c19590593b0794697de70a0869e4fad699d18e5908
7
+ data.tar.gz: a3e77887e9ea5e1b1f2f117148e753ca16f4882fd99ec519ba9810545e4c3a51c2eeed0b46ffdd6fc52e2037ad634d3e1726b2a962012bc2d1acb38309112f91
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ v4.4.0 (June 2022)
2
+ - No changes
3
+
4
+ v4.3.0 (April 2022)
5
+ - Add the RTP report title on export page in DradisPro
6
+
7
+ v4.2.0 (February 2022)
8
+ - No changes
9
+
1
10
  v4.1.1 (November 2021)
2
11
  - Loosen dradis-plugins version requirement
3
12
 
@@ -0,0 +1,38 @@
1
+ module Dradis
2
+ module Plugins
3
+ module HtmlExport
4
+ class TemplatePresenter < BasePresenter
5
+ presents :template
6
+
7
+ def self.each_template(&block)
8
+ templates.each(&block)
9
+ end
10
+
11
+ def self.templates
12
+ if defined?(Dradis::Pro)
13
+ ReportTemplateProperties.all.where(plugin_name: :html_export).order(:title)
14
+ else
15
+ Dir["%s/*" % templates_dir].map { |t| File.basename(t) }.sort
16
+ end
17
+ end
18
+
19
+ def self.templates_dir
20
+ File.join(::Configuration::paths_templates_reports, 'html_export')
21
+ end
22
+
23
+ def title
24
+ return template if template.is_a?(String)
25
+
26
+ content_tag(:span, "#{template.title} - ") +
27
+ content_tag(:small, template.template_file)
28
+ end
29
+
30
+ def filename
31
+ return template if template.is_a?(String)
32
+
33
+ template.template_file
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,21 +1,20 @@
1
- <%
2
- templates_dir = File.join(::Configuration::paths_templates_reports, 'html_export')
3
- templates = Dir["%s/*" % templates_dir].map { |t| File.basename(t) }.sort
4
- %>
5
-
6
1
  <%= content_tag :div, id: 'plugin-html_export', class: 'tab-pane fade' do %>
7
2
  <%= form_tag project_export_manager_path(current_project), target: '_blank' do %>
8
3
  <%= hidden_field_tag :plugin, :html_export %>
9
4
  <%= hidden_field_tag :route, :root %>
10
5
 
11
6
  <h4 class="header-underline">Choose a template</h4>
12
- <p>Please choose one of the templates available for this plugin (find them in <code>.<%= templates_dir[Rails.root.to_s.length..-1] %></code>)</p>
7
+ <p>Please choose one of the templates available for this plugin (find them in <code>.<%= Dradis::Plugins::HtmlExport::TemplatePresenter.templates_dir[Rails.root.to_s.length..-1] %></code>)</p>
13
8
 
14
- <% templates.each do |template| %>
15
- <div class="custom-control custom-radio">
16
- <%= radio_button_tag :template, template, template == templates.first, :class => 'custom-control-input' %>
17
- <label class="custom-control-label" for="template_<%= template %>"><%= template %></label>
18
- </div>
9
+ <% Dradis::Plugins::HtmlExport::TemplatePresenter.each_template do |template| %>
10
+ <% present(template, Dradis::Plugins::HtmlExport::TemplatePresenter) do |template_presenter| %>
11
+ <div class="custom-control custom-radio">
12
+ <%= radio_button_tag :template, template_presenter.filename, Dradis::Plugins::HtmlExport::TemplatePresenter.templates.first == template , class: 'custom-control-input' %>
13
+ <label class="custom-control-label" for="template_<%= template_presenter.filename %>">
14
+ <%= template_presenter.title %>
15
+ </label>
16
+ </div>
17
+ <% end %>
19
18
  <% end %>
20
19
 
21
20
  <button id="export-button" class="btn btn-lg btn-primary mt-4">Export</button>
@@ -8,8 +8,8 @@ module Dradis
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 4
11
- MINOR = 1
12
- TINY = 1
11
+ MINOR = 4
12
+ TINY = 0
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -0,0 +1,47 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Dradis::Plugins::HtmlExport::TemplatePresenter do
4
+ class FakeView
5
+ include ActionView::Helpers::TextHelper
6
+ end
7
+
8
+ let(:template_presenter) { described_class.new(template, FakeView.new) }
9
+
10
+ describe '#title' do
11
+ context 'when template is a string' do
12
+ let(:template) { 'basic.html.erb' }
13
+
14
+ it 'returns the string' do
15
+ expect(template_presenter.title).to eq template
16
+ end
17
+ end
18
+
19
+ context 'when template is a RTP' do
20
+ let(:template) do
21
+ double(
22
+ 'ReportTemplateProperties',
23
+ title: 'Basic',
24
+ template_file: 'basic.html.erb'
25
+ )
26
+ end
27
+
28
+ it 'returns a formatted title' do
29
+ expect(template_presenter.title).to eq "<span>#{template.title} - </span><small>#{template.template_file}</small>"
30
+ end
31
+
32
+ context 'when title contains javascript' do
33
+ let(:template) do
34
+ double(
35
+ 'ReportTemplateProperties',
36
+ title: '<script>alert("hello world")</script>',
37
+ template_file: 'basic.html.erb'
38
+ )
39
+ end
40
+
41
+ it 'prevents cross site scriptiing' do
42
+ expect(template_presenter.title).to eq "<span>&lt;script&gt;alert(&quot;hello world&quot;)&lt;/script&gt; - </span><small>#{template.template_file}</small>"
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dradis-html_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-18 00:00:00.000000000 Z
11
+ date: 2022-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dradis-plugins
@@ -70,6 +70,7 @@ files:
70
70
  - README.md
71
71
  - Rakefile
72
72
  - app/controllers/dradis/plugins/html_export/base_controller.rb
73
+ - app/presenters/dradis/plugins/html_export/template_presenter.rb
73
74
  - app/views/dradis/plugins/html_export/export/_index-content.html.erb
74
75
  - app/views/dradis/plugins/html_export/export/_index-tabs.html.erb
75
76
  - config/routes.rb
@@ -83,6 +84,7 @@ files:
83
84
  - lib/tasks/thorfile.rb
84
85
  - spec/fixtures/files/template.html.erb
85
86
  - spec/lib/dradis/plugins/html_export/exporter_spec.rb
87
+ - spec/presenters/dradis/plugins/html_export/template_presenter_spec.rb
86
88
  - spec/requests/html_export_spec.rb
87
89
  - spec/spec_helper.rb
88
90
  - templates/basic.html.erb
@@ -106,12 +108,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
108
  - !ruby/object:Gem::Version
107
109
  version: '0'
108
110
  requirements: []
109
- rubygems_version: 3.1.6
111
+ rubygems_version: 3.2.32
110
112
  signing_key:
111
113
  specification_version: 4
112
114
  summary: Dradis HTML export plugin
113
115
  test_files:
114
116
  - spec/fixtures/files/template.html.erb
115
117
  - spec/lib/dradis/plugins/html_export/exporter_spec.rb
118
+ - spec/presenters/dradis/plugins/html_export/template_presenter_spec.rb
116
119
  - spec/requests/html_export_spec.rb
117
120
  - spec/spec_helper.rb