dradis-projects 5.3.0 → 5.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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/lib/dradis/plugins/projects/export/package.rb +1 -1
  4. data/lib/dradis/plugins/projects/export/v4/template.rb +1 -0
  5. data/lib/dradis/plugins/projects/gem_version.rb +1 -1
  6. data/lib/dradis/plugins/projects/upload/v4/template.rb +32 -31
  7. metadata +2 -45
  8. data/.github/pull_request_template.md +0 -45
  9. data/.gitignore +0 -12
  10. data/.ruby-version +0 -1
  11. data/CHANGELOG.template +0 -12
  12. data/CONTRIBUTING.md +0 -3
  13. data/Gemfile +0 -17
  14. data/dradis-projects.gemspec +0 -29
  15. data/spec/fixtures/files/attachments_url.xml +0 -15
  16. data/spec/fixtures/files/invalid_byte_recoverable.xml +0 -19
  17. data/spec/fixtures/files/malformed_ids.xml +0 -14
  18. data/spec/fixtures/files/missing_node.xml +0 -11
  19. data/spec/fixtures/files/package_with_recoverable_error.zip +0 -0
  20. data/spec/fixtures/files/package_with_unrecoverable_error.zip +0 -0
  21. data/spec/fixtures/files/truncated_unrecoverable.xml +0 -9
  22. data/spec/fixtures/files/with_comments.xml +0 -110
  23. data/spec/fixtures/files/with_invalid_states.xml +0 -111
  24. data/spec/fixtures/files/with_states.xml +0 -111
  25. data/spec/fixtures/files/with_tags.xml +0 -64
  26. data/spec/lib/dradis/plugins/projects/export/v2/template_spec.rb +0 -72
  27. data/spec/lib/dradis/plugins/projects/export/v4/template_spec.rb +0 -84
  28. data/spec/lib/dradis/plugins/projects/upload/package_spec.rb +0 -58
  29. data/spec/lib/dradis/plugins/projects/upload/template_spec.rb +0 -80
  30. data/spec/lib/dradis/plugins/projects/upload/v1/template_spec.rb +0 -84
  31. data/spec/lib/dradis/plugins/projects/upload/v2/template_spec.rb +0 -65
  32. data/spec/lib/dradis/plugins/projects/upload/v4/template_spec.rb +0 -175
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90db5bdbaa4c04377872ec12be70cefa3a0fd9b6ccbb6209582544e3b3d8c087
4
- data.tar.gz: cad1d32b126fa14b97a7ac688550f3d289c69c93a9a0e3532d127f1c111df5ef
3
+ metadata.gz: 9233fc43a3d7192fca87e9265e313957c6ab9baf6f08c98a6d467ef9dcd0f87e
4
+ data.tar.gz: fdbb00a7b191e097a82210ca270c9534e2ccae599784712b8b3c9ef32487a4e0
5
5
  SHA512:
6
- metadata.gz: c6365cfcd57941f704095989bb1e1ae5bb39b8aa14d93d5df40346ab87db12fa688de1108887c4009f785cc101c83b5090515117710e9bc7ff9d9dc722c106e3
7
- data.tar.gz: 8ed81aee751634225e040ec1cca1d942195050ee1734eaab0fa233a66e2eaf096d69c4b238e94d1117f3a97def6c9e20f4189e6d07fe97099df235c1627ad857
6
+ metadata.gz: f15a496f28939ec492dccd6b3c8dc6d7f1aac465b732bd4e0b9c2efafdf73a0ba02fa02b81499ebbeac990a5d0e682667d225c5b2d8286eb6f22e01e3efcf1de
7
+ data.tar.gz: f1fbb7e02207d9d50791ebd40c030983e7dafae7f01ab0c629520098beb268a2f72b312f6dd14149ddbd35a0383810ba8095201ff394e2ce5f42c1029f4b200a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ v5.4.0 (September 2026)
2
+ - Preserve Evidence's review state when exporting and re-importing a project (project backup/restore and Clone project)
3
+
1
4
  v5.3.0 (August 2026)
2
5
  - Fix error handling of the package upload when an invalid template is found
3
6
 
@@ -14,7 +14,7 @@ module Dradis::Plugins::Projects::Export
14
14
 
15
15
  logger.debug{ "Creating a new Zip file in #{filename}..." }
16
16
 
17
- Zip::File.open(filename, Zip::File::CREATE) do |zipfile|
17
+ Zip::File.open(filename, create: true) do |zipfile|
18
18
  @project.nodes.each do |node|
19
19
  node_path = Attachment.pwd.join(node.id.to_s)
20
20
 
@@ -39,6 +39,7 @@ module Dradis::Plugins::Projects::Export::V4
39
39
  evidences_builder.evidence do |evidence_builder|
40
40
  evidence_builder.id(evidence.id)
41
41
  evidence_builder.author(evidence.author)
42
+ evidence_builder.state(evidence.state)
42
43
  evidence_builder.tag!('issue-id', evidence.issue_id)
43
44
  evidence_builder.content do
44
45
  evidence_builder.cdata!(evidence.content)
@@ -8,7 +8,7 @@ module Dradis
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 5
11
- MINOR = 3
11
+ MINOR = 4
12
12
  TINY = 0
13
13
  PRE = nil
14
14
 
@@ -88,10 +88,10 @@ module Dradis::Plugins::Projects::Upload::V4
88
88
  def create_issue(issue, xml_issue)
89
89
  # TODO: Need to find some way of checking for dups
90
90
  # May be combination of text, category_id and created_at
91
- issue.author = xml_issue.at_xpath('author').text.strip
92
- issue.state = xml_issue.at_xpath('state')&.text || :published
93
- issue.text = xml_issue.at_xpath('text').text
94
- issue.node = project.issue_library
91
+ issue.author = xml_issue.at_xpath('author').text.strip
92
+ issue.state = xml_issue.at_xpath('state')&.text || :published
93
+ issue.text = xml_issue.at_xpath('text').text
94
+ issue.node = project.issue_library
95
95
  issue.category = Category.issue
96
96
 
97
97
  return false unless validate_and_save(issue)
@@ -169,8 +169,8 @@ module Dradis::Plugins::Projects::Upload::V4
169
169
  logger.info { 'Processing Categories...' }
170
170
 
171
171
  template.xpath('dradis-template/categories/category').each do |xml_category|
172
- old_id = Integer(xml_category.at_xpath('id').text.strip)
173
- name = xml_category.at_xpath('name').text.strip
172
+ old_id = Integer(xml_category.at_xpath('id').text.strip)
173
+ name = xml_category.at_xpath('name').text.strip
174
174
  category = nil
175
175
 
176
176
  # Prevent creating duplicate categories
@@ -210,7 +210,7 @@ module Dradis::Plugins::Projects::Upload::V4
210
210
 
211
211
  def parse_methodologies(template)
212
212
  methodology_category = Category.default
213
- methodology_library = project.methodology_library
213
+ methodology_library = project.methodology_library
214
214
 
215
215
  logger.info { 'Processing Methodologies...' }
216
216
 
@@ -224,10 +224,10 @@ module Dradis::Plugins::Projects::Upload::V4
224
224
  # MethodologiesController#create action (i.e. 'methodology builder' is
225
225
  # used).
226
226
  Note.create!(
227
- author: 'methodology importer',
228
- node_id: methodology_library.id,
227
+ author: 'methodology importer',
228
+ node_id: methodology_library.id,
229
229
  category_id: methodology_category.id,
230
- text: xml_methodology.at_xpath('text').text
230
+ text: xml_methodology.at_xpath('text').text
231
231
  )
232
232
  end
233
233
 
@@ -235,18 +235,18 @@ module Dradis::Plugins::Projects::Upload::V4
235
235
  end
236
236
 
237
237
  def parse_node(xml_node)
238
- element = xml_node.at_xpath('type-id')
239
- type_id = element.text.nil? ? nil : element.text.strip
240
- label = xml_node.at_xpath('label').text.strip
241
- element = xml_node.at_xpath('parent-id')
238
+ element = xml_node.at_xpath('type-id')
239
+ type_id = element.text.nil? ? nil : element.text.strip
240
+ label = xml_node.at_xpath('label').text.strip
241
+ element = xml_node.at_xpath('parent-id')
242
242
  parent_id = element.text.blank? ? nil : element.text.strip
243
243
 
244
244
  # Node positions
245
- element = xml_node.at_xpath('position')
245
+ element = xml_node.at_xpath('position')
246
246
  position = (element && !element.text.nil?) ? element.text.strip : nil
247
247
 
248
248
  # Node properties
249
- element = xml_node.at_xpath('properties')
249
+ element = xml_node.at_xpath('properties')
250
250
  properties = (element && !element.text.blank?) ? element.text.strip : nil
251
251
 
252
252
  created_at = xml_node.at_xpath('created-at')
@@ -271,10 +271,10 @@ module Dradis::Plugins::Projects::Upload::V4
271
271
  has_nil_parent = !parent_id
272
272
  node =
273
273
  project.nodes.new(
274
- type_id: type_id,
275
- label: label,
274
+ type_id: type_id,
275
+ label: label,
276
276
  parent_id: parent_id,
277
- position: position
277
+ position: position
278
278
  )
279
279
  node.save!(validate: has_nil_parent)
280
280
  pending_changes[:orphan_nodes] << node if parent_id
@@ -325,16 +325,17 @@ module Dradis::Plugins::Projects::Upload::V4
325
325
  updated_at = xml_evidence.at_xpath('updated-at')
326
326
 
327
327
  evidence = Evidence.new(
328
- author: xml_evidence.at_xpath('author').text.strip,
329
- node_id: node.id,
330
- content: xml_evidence.at_xpath('content').text,
331
- issue_id: xml_evidence.at_xpath('issue-id').text.strip
328
+ author: xml_evidence.at_xpath('author').text.strip,
329
+ node_id: node.id,
330
+ content: xml_evidence.at_xpath('content').text,
331
+ issue_id: xml_evidence.at_xpath('issue-id').text.strip,
332
+ state: xml_evidence.at_xpath('state')&.text || :published
332
333
  )
333
334
 
334
335
  evidence.update_attribute(:created_at, created_at.text.strip) if created_at
335
336
  evidence.update_attribute(:updated_at, updated_at.text.strip) if updated_at
336
337
 
337
- pending_changes[:evidence] << evidence
338
+ pending_changes[:evidence] << evidence
338
339
  pending_changes[:evidence_activity] << xml_evidence.xpath('activities/activity')
339
340
  pending_changes[:evidence_comments] << xml_evidence.xpath('comments/comment')
340
341
 
@@ -355,10 +356,10 @@ module Dradis::Plugins::Projects::Upload::V4
355
356
 
356
357
  logger.info { "Note category rewrite, used to be #{old_id}, now is #{new_id}" }
357
358
  note = Note.create!(
358
- author: xml_note.at_xpath('author').text.strip,
359
- node_id: node.id,
359
+ author: xml_note.at_xpath('author').text.strip,
360
+ node_id: node.id,
360
361
  category_id: new_id,
361
- text: xml_note.at_xpath('text').text
362
+ text: xml_note.at_xpath('text').text
362
363
  )
363
364
 
364
365
  note.update_attribute(:created_at, created_at.text.strip) if created_at
@@ -466,14 +467,14 @@ module Dradis::Plugins::Projects::Upload::V4
466
467
  #
467
468
  # Returns nothing, but creates a new Assignee for this card.
468
469
  def create_assignee(card, xml_assignee)
469
- email = xml_assignee.text()
470
+ email = xml_assignee.text()
470
471
  user_id = user_id_for_email(email)
471
472
 
472
473
  if user_id == -1
473
474
  old_assignee_field = card.fields['FormerAssignees'] || ''
474
475
  card.set_field 'FormerAssignees', old_assignee_field << "* #{email}\n"
475
476
  else
476
- old_assignee_ids = card.assignee_ids
477
+ old_assignee_ids = card.assignee_ids
477
478
  card.assignee_ids = old_assignee_ids + [user_id]
478
479
  end
479
480
  end
@@ -572,8 +573,8 @@ module Dradis::Plugins::Projects::Upload::V4
572
573
  def process_methodologies(template)
573
574
  logger.info { 'Processing Methodologies...' }
574
575
 
575
- lookup_table[:cards] = {}
576
- lookup_table[:lists] = {}
576
+ lookup_table[:cards] = {}
577
+ lookup_table[:lists] = {}
577
578
  pending_changes[:cards] = []
578
579
  pending_changes[:lists] = []
579
580
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dradis-projects
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.0
4
+ version: 5.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Martin
@@ -99,13 +99,7 @@ executables: []
99
99
  extensions: []
100
100
  extra_rdoc_files: []
101
101
  files:
102
- - ".github/pull_request_template.md"
103
- - ".gitignore"
104
- - ".ruby-version"
105
102
  - CHANGELOG.md
106
- - CHANGELOG.template
107
- - CONTRIBUTING.md
108
- - Gemfile
109
103
  - LICENSE
110
104
  - README.md
111
105
  - Rakefile
@@ -114,7 +108,6 @@ files:
114
108
  - app/views/dradis/plugins/projects/export/_index-content.html.erb
115
109
  - app/views/dradis/plugins/projects/export/_index-tabs.html.erb
116
110
  - config/routes.rb
117
- - dradis-projects.gemspec
118
111
  - lib/dradis-projects.rb
119
112
  - lib/dradis/plugins/projects.rb
120
113
  - lib/dradis/plugins/projects/engine.rb
@@ -133,24 +126,6 @@ files:
133
126
  - lib/dradis/plugins/projects/upload/v4/template.rb
134
127
  - lib/dradis/plugins/projects/version.rb
135
128
  - lib/tasks/thorfile.rb
136
- - spec/fixtures/files/attachments_url.xml
137
- - spec/fixtures/files/invalid_byte_recoverable.xml
138
- - spec/fixtures/files/malformed_ids.xml
139
- - spec/fixtures/files/missing_node.xml
140
- - spec/fixtures/files/package_with_recoverable_error.zip
141
- - spec/fixtures/files/package_with_unrecoverable_error.zip
142
- - spec/fixtures/files/truncated_unrecoverable.xml
143
- - spec/fixtures/files/with_comments.xml
144
- - spec/fixtures/files/with_invalid_states.xml
145
- - spec/fixtures/files/with_states.xml
146
- - spec/fixtures/files/with_tags.xml
147
- - spec/lib/dradis/plugins/projects/export/v2/template_spec.rb
148
- - spec/lib/dradis/plugins/projects/export/v4/template_spec.rb
149
- - spec/lib/dradis/plugins/projects/upload/package_spec.rb
150
- - spec/lib/dradis/plugins/projects/upload/template_spec.rb
151
- - spec/lib/dradis/plugins/projects/upload/v1/template_spec.rb
152
- - spec/lib/dradis/plugins/projects/upload/v2/template_spec.rb
153
- - spec/lib/dradis/plugins/projects/upload/v4/template_spec.rb
154
129
  homepage: https://dradis.com/ce/
155
130
  licenses:
156
131
  - GPL-2
@@ -172,22 +147,4 @@ requirements: []
172
147
  rubygems_version: 3.6.9
173
148
  specification_version: 4
174
149
  summary: Project export/upload for the Dradis Framework.
175
- test_files:
176
- - spec/fixtures/files/attachments_url.xml
177
- - spec/fixtures/files/invalid_byte_recoverable.xml
178
- - spec/fixtures/files/malformed_ids.xml
179
- - spec/fixtures/files/missing_node.xml
180
- - spec/fixtures/files/package_with_recoverable_error.zip
181
- - spec/fixtures/files/package_with_unrecoverable_error.zip
182
- - spec/fixtures/files/truncated_unrecoverable.xml
183
- - spec/fixtures/files/with_comments.xml
184
- - spec/fixtures/files/with_invalid_states.xml
185
- - spec/fixtures/files/with_states.xml
186
- - spec/fixtures/files/with_tags.xml
187
- - spec/lib/dradis/plugins/projects/export/v2/template_spec.rb
188
- - spec/lib/dradis/plugins/projects/export/v4/template_spec.rb
189
- - spec/lib/dradis/plugins/projects/upload/package_spec.rb
190
- - spec/lib/dradis/plugins/projects/upload/template_spec.rb
191
- - spec/lib/dradis/plugins/projects/upload/v1/template_spec.rb
192
- - spec/lib/dradis/plugins/projects/upload/v2/template_spec.rb
193
- - spec/lib/dradis/plugins/projects/upload/v4/template_spec.rb
150
+ test_files: []
@@ -1,45 +0,0 @@
1
- Please review [CONTRIBUTING.md](https://github.com/dradis/dradis-ce/blob/develop/CONTRIBUTING.md) and remove this line.
2
-
3
- ### Summary
4
-
5
- Provide a general description of the code changes in your pull
6
- request... were there any bugs you had fixed? If so, mention them. If
7
- these bugs have open GitHub issues, be sure to tag them here as well,
8
- to keep the conversation linked together.
9
-
10
-
11
- ### Testing Steps
12
-
13
- Provide steps to test functionality, described in detail for someone not familiar with this part of the application / code base
14
-
15
-
16
- ### Other Information
17
-
18
- If there's anything else that's important and relevant to your pull
19
- request, mention that information here. This could include
20
- benchmarks, or other information.
21
-
22
- Thanks for contributing to Dradis!
23
-
24
-
25
- ### Copyright assignment
26
-
27
- Collaboration is difficult with commercial closed source but we want
28
- to keep as much of the OSS ethos as possible available to users
29
- who want to fix it themselves.
30
-
31
- In order to unambiguously own and sell Dradis Framework commercial
32
- products, we must have the copyright associated with the entire
33
- codebase. Any code you create which is merged must be owned by us.
34
- That's not us trying to be a jerks, that's just the way it works.
35
-
36
- You can delete this section, but the following sentence needs to
37
- remain in the PR's description:
38
-
39
- > I assign all rights, including copyright, to any future Dradis
40
- > work by myself to Security Roots.
41
-
42
- ### Check List
43
-
44
- - [ ] Added a CHANGELOG entry
45
- - [ ] Added specs
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- # Bundler config
2
- Gemfile.lock
3
- /.bundle/
4
- /vendor/bundle/
5
-
6
- # Combustion engine
7
- /spec/internal/log/*.log
8
-
9
- # Gem artifacts
10
- /pkg/
11
-
12
- .DS_Store
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.7.2
data/CHANGELOG.template DELETED
@@ -1,12 +0,0 @@
1
- [v#.#.#] ([month] [YYYY])
2
- - [future tense verb] [feature]
3
- - Upgraded gems:
4
- - [gem]
5
- - Bugs fixes:
6
- - [future tense verb] [bug fix]
7
- - Bug tracker items:
8
- - [item]
9
- - Security Fixes:
10
- - High: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
11
- - Medium: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
12
- - Low: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
data/CONTRIBUTING.md DELETED
@@ -1,3 +0,0 @@
1
- # Plugin contribution guidelines
2
-
3
- See the Dradis Framework's [CONTRIBUTING.md](https://github.com/dradis/dradisframework/blob/master/CONTRIBUTING.md)
data/Gemfile DELETED
@@ -1,17 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Declare your gem's dependencies in dradis-burp.gemspec.
4
- # Bundler will treat runtime dependencies like base dependencies, and
5
- # development dependencies will be added by default to the :development group.
6
- gemspec
7
-
8
- # jquery-rails is used by the dummy application
9
- # gem "jquery-rails"
10
-
11
- # Declare any dependencies that are still in development here instead of in
12
- # your gemspec. These might include edge Rails or gems from your path or
13
- # Git. Remember to move these dependencies to your gemspec before releasing
14
- # your gem to rubygems.org.
15
-
16
- # To use debugger
17
- # gem 'debugger'
@@ -1,29 +0,0 @@
1
- $:.push File.expand_path('../lib', __FILE__)
2
-
3
- require 'dradis/plugins/projects/version'
4
-
5
- # Describe your gem and declare its dependencies:
6
- Gem::Specification.new do |spec|
7
- spec.platform = Gem::Platform::RUBY
8
- spec.name = 'dradis-projects'
9
- spec.version = Dradis::Plugins::Projects::VERSION::STRING
10
- spec.summary = 'Project export/upload for the Dradis Framework.'
11
- spec.description = 'This plugin allows you to dump the contents of the repo into a zip archive and restore the state from one of them.'
12
-
13
- spec.license = 'GPL-2'
14
-
15
- spec.authors = ['Daniel Martin']
16
- spec.homepage = 'https://dradis.com/ce/'
17
-
18
- spec.files = `git ls-files`.split($\)
19
- spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
20
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
-
22
- spec.add_development_dependency 'bundler', '~> 2.0'
23
- spec.add_development_dependency 'combustion'
24
- spec.add_development_dependency 'rake', '>= 12.3.3'
25
- spec.add_development_dependency 'rspec'
26
-
27
- spec.add_dependency 'dradis-plugins', '>= 4.8.0'
28
- spec.add_dependency 'rubyzip'
29
- end
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?><dradis-template version="2"><nodes><node><id>5</id><label>Uploaded files</label><parent-id/><position>0</position><properties><![CDATA[{
2
- }]]></properties><type-id>0</type-id><notes></notes><evidence></evidence><activities></activities></node></nodes><issues><issue><id>2</id><author>admin@securityroots.com</author><text><![CDATA[#[Title]#
3
- Test Issue
4
-
5
- #[Description]#
6
- !/pro/projects/222/nodes/5/attachments/hello.jpg!
7
-
8
- !/projects/222/nodes/5/attachments/hello.jpg!
9
-
10
- !/pro/nodes/5/attachments/hello.jpg!
11
-
12
- !/nodes/5/attachments/hello.jpg!
13
-
14
- ]]></text><activities></activities><comments></comments></issue></issues><methodologies></methodologies><categories>
15
- <category><id>2</id><name>Issue description</name></category></categories><tags/></dradis-template>
@@ -1,19 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <dradis-template version="4">
3
- <categories></categories>
4
- <nodes></nodes>
5
- <issues>
6
- <issue>
7
- <id>1</id>
8
- <author>tester</author>
9
- <text><![CDATA[#[Title]#
10
- Sample Issue�
11
-
12
- #[Description]#
13
- This is a valid issue used to confirm recoverable XML errors don't block import.
14
- ]]></text>
15
- </issue>
16
- </issues>
17
- <methodologies></methodologies>
18
- <tags></tags>
19
- </dradis-template>
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <dradis-template version="1">
3
- <nodes>
4
- <node>
5
- <id>../../../../../../tmp</id>
6
- <label>Node 1</label>
7
- <parent-id/>
8
- <position>0</position>
9
- <properties><![CDATA[{
10
- }]]></properties>
11
- <type-id>1</type-id>
12
- </node>
13
- </nodes>
14
- </dradis-template>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <dradis-template version="2">
3
- <nodes><node><id>5</id><label>Uploaded files</label><parent-id/><position>0</position><properties><![CDATA[{}]]></properties><type-id>0</type-id><notes></notes><evidence></evidence><activities></activities></node></nodes>
4
- <issues><issue><id>2</id><author>admin@securityroots.com</author><text><![CDATA[#[Title]#
5
- Test Issue
6
-
7
- #[Description]#
8
- !/pro/projects/222/nodes/12345/attachments/hello.jpg!
9
-
10
- ]]></text><activities></activities><comments></comments></issue></issues>
11
- </dradis-template>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <dradis-template version="4">
3
- <categories></categories>
4
- <nodes>
5
- <node>
6
- <id>1</id>
7
- <label>Node A</label>
8
- <type-id>0</type-id>
9
- <parent-id></parent-id>
@@ -1,110 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <dradis-template version="2">
3
- <nodes>
4
- <node>
5
- <id>3</id>
6
- <label>Node 1</label>
7
- <parent-id/>
8
- <position>0</position>
9
- <properties><![CDATA[{
10
- }]]></properties>
11
- <type-id>1</type-id>
12
- <notes>
13
- <note>
14
- <id>2</id>
15
- <author>xavi</author>
16
- <category-id>2</category-id>
17
- <text><![CDATA[#[Title]#
18
- Note 1
19
-
20
- #[Description]#
21
-
22
- ]]></text>
23
- <activities>
24
- <activity>
25
- <action>create</action>
26
- <user_email>xavi</user_email>
27
- <created_at>1538467955</created_at>
28
- </activity>
29
- </activities>
30
- <comments>
31
- <comment>
32
- <content><![CDATA[A comment on a note]]></content>
33
- <author>xavi</author>
34
- <created_at>1538467968</created_at>
35
- </comment>
36
- </comments>
37
- </note>
38
- </notes>
39
- <evidence>
40
- <evidence>
41
- <id>386</id>
42
- <author>xavi</author>
43
- <issue-id>586</issue-id>
44
- <content><![CDATA[#[Location]#
45
- A
46
- ]]></content>
47
- <activities>
48
- <activity>
49
- <action>create</action>
50
- <user_email>xavi</user_email>
51
- <created_at>1538549260</created_at>
52
- </activity>
53
- </activities>
54
- <comments>
55
- <comment>
56
- <content><![CDATA[A comment on an evidence]]></content>
57
- <author>xavi</author>
58
- <created_at>1538549286</created_at>
59
- </comment>
60
- </comments>
61
- </evidence>
62
- </evidence>
63
- <activities>
64
- <activity>
65
- <action>create</action>
66
- <user_email>xavi</user_email>
67
- <created_at>1538467945</created_at>
68
- </activity>
69
- </activities>
70
- </node>
71
- </nodes>
72
- <issues>
73
- <issue>
74
- <id>586</id>
75
- <author>xavi</author>
76
- <text><![CDATA[#[Title]#
77
- Issue 1
78
-
79
- #[Description]#
80
-
81
- ]]></text>
82
- <activities>
83
- <activity>
84
- <action>create</action>
85
- <user_email>xavi</user_email>
86
- <created_at>1538467938</created_at>
87
- </activity>
88
- </activities>
89
- <comments>
90
- <comment>
91
- <content><![CDATA[A comment on an issue]]></content>
92
- <author>xavi</author>
93
- <created_at>1538467997</created_at>
94
- </comment>
95
- </comments>
96
- </issue>
97
- </issues>
98
- <methodologies/>
99
- <categories>
100
- <category>
101
- <id>1</id>
102
- <name>Issue description</name>
103
- </category>
104
- <category>
105
- <id>2</id>
106
- <name>Default category</name>
107
- </category>
108
- </categories>
109
- <tags/>
110
- </dradis-template>