dradis-html_export 4.1.1 → 4.4.0

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