dradis-projects 3.10.0 → 3.11.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
  SHA1:
3
- metadata.gz: 0256537152511bdd57bd8bda059eecd5adfaf3d4
4
- data.tar.gz: a456a38a9168d70a77266162a18844308314c479
3
+ metadata.gz: 594be647b3882ca2d8e0c56befaee84b41984ca7
4
+ data.tar.gz: 6eddd5014d88cf6ba493b0dfffc0622dd8fd96dd
5
5
  SHA512:
6
- metadata.gz: 603efc920654a2a403a74094f036f742a0b02250e4fc030f10a4d25acdcce08b138b510fca6bfc30a82071a87f308990969e7cdf3a659cd0ed66bd1a09848432
7
- data.tar.gz: 460caa7831aa233b2ada3e90333c1f2e4e9bdcaf7ee61b6ba323bf8b226722b1a4daf44062cdc5a5b6d0a477cebd9ffe156151cff381cdad0a28d79395a3324b
6
+ metadata.gz: d7df7bdbe490f458595460ea82853c1a1bc8f667672a3f684f98bd3c300b5f1a856f6cd82fea60da2e076d02e46a2fd68773417866f4bec9867c60175f88e688
7
+ data.tar.gz: 8127ca13c25cf5c42946f627103701e614031704d37cb348ff8c4f7e209276daac71b2f64c7db018c2ab1ffd93c92073ab1b12a9d39bf9a666b5ee68a89a04b5
data/CHANGELOG.md CHANGED
@@ -1,10 +1,14 @@
1
+ ## Dradis Framework 3.11 (November, 2018) ##
2
+
3
+ * Note and evidence comments in export/import
4
+
1
5
  ## Dradis Framework 3.10 (August, 2018) ##
2
6
 
3
7
  * Use project scopes
4
8
 
5
9
  * Check project existence for default user id
6
10
 
7
- * Comments export import
11
+ * Issue comments in export/import
8
12
 
9
13
  * Replace Node methods that are now Project methods
10
14
 
@@ -33,6 +33,9 @@ module Dradis::Plugins::Projects::Export::V1
33
33
  end
34
34
  end
35
35
 
36
+ # No-op here, overwritten in V2
37
+ def build_comments_for(builder, commentable); end
38
+
36
39
  def build_evidence_for_node(builder, node)
37
40
  builder.evidence do |evidences_builder|
38
41
  node.evidence.each do |evidence|
@@ -44,6 +47,7 @@ module Dradis::Plugins::Projects::Export::V1
44
47
  evidence_builder.cdata!(evidence.content)
45
48
  end
46
49
  build_activities_for(evidence_builder, evidence)
50
+ build_comments_for(evidence_builder, evidence)
47
51
  end
48
52
  end
49
53
  end
@@ -61,6 +65,7 @@ module Dradis::Plugins::Projects::Export::V1
61
65
  issue_builder.cdata!(issue.text)
62
66
  end
63
67
  build_activities_for(issue_builder, issue)
68
+ build_comments_for(issue_builder, issue)
64
69
  end
65
70
  end
66
71
  end
@@ -117,11 +122,13 @@ module Dradis::Plugins::Projects::Export::V1
117
122
  note_builder.cdata!(note.text)
118
123
  end
119
124
  build_activities_for(note_builder, note)
125
+ build_comments_for(note_builder, note)
120
126
  end
121
127
  end
122
128
  end
123
129
  end
124
130
 
131
+ # No-op here, overwritten in PRO
125
132
  def build_report_content(builder); end
126
133
 
127
134
  def build_tags(builder)
@@ -17,24 +17,5 @@ module Dradis::Plugins::Projects::Export::V2
17
17
  end
18
18
  end
19
19
  end
20
-
21
- def build_issues(builder)
22
- @issues = Issue.where(node_id: project.issue_library).includes(:activities)
23
-
24
- builder.issues do |issues_builder|
25
- @issues.each do |issue|
26
- issues_builder.issue do |issue_builder|
27
- issue_builder.id(issue.id)
28
- issue_builder.author(issue.author)
29
- issue_builder.text do
30
- issue_builder.cdata!(issue.text)
31
- end
32
- build_activities_for(issue_builder, issue)
33
- build_comments_for(issue_builder, issue)
34
- end
35
- end
36
- end
37
- end
38
-
39
20
  end
40
21
  end
@@ -8,7 +8,7 @@ module Dradis
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 3
11
- MINOR = 10
11
+ MINOR = 11
12
12
  TINY = 0
13
13
  PRE = nil
14
14
 
@@ -28,8 +28,9 @@ module Dradis::Plugins::Projects::Upload::V1
28
28
  evidence: [],
29
29
 
30
30
  # likewise we also need to hold on to the XML about evidence activities
31
- # until after the evidence has been saved
31
+ # and comments until after the evidence has been saved
32
32
  evidence_activity: [],
33
+ evidence_comments: [],
33
34
 
34
35
  # all children nodes, we will need to find the ID of their new parents.
35
36
  orphan_nodes: []
@@ -38,6 +39,11 @@ module Dradis::Plugins::Projects::Upload::V1
38
39
 
39
40
  private
40
41
 
42
+ # No-op here, overwritten in V2
43
+ def create_comments(commentable, xml_comments)
44
+ true
45
+ end
46
+
41
47
  def create_activities(trackable, xml_trackable)
42
48
  xml_trackable.xpath('activities/activity').each do |xml_activity|
43
49
  # if 'validate_and_save(activity)' returns false, it needs
@@ -71,6 +77,8 @@ module Dradis::Plugins::Projects::Upload::V1
71
77
 
72
78
  return false unless create_activities(issue, xml_issue)
73
79
 
80
+ return false unless create_comments(issue, xml_issue.xpath('comments/comment'))
81
+
74
82
  true
75
83
  end
76
84
 
@@ -117,6 +125,9 @@ module Dradis::Plugins::Projects::Upload::V1
117
125
  pending_changes[:evidence_activity][i].each do |xml_activity|
118
126
  raise "Couldn't create activity for Evidence ##{evidence.id}" unless create_activity(evidence, xml_activity)
119
127
  end
128
+
129
+ xml_comments = pending_changes[:evidence_comments][i]
130
+ raise "Couldn't create comments for Evidence ##{evidence.id}" unless create_comments(evidence, xml_comments)
120
131
  end
121
132
  end
122
133
 
@@ -299,6 +310,7 @@ module Dradis::Plugins::Projects::Upload::V1
299
310
 
300
311
  pending_changes[:evidence] << evidence
301
312
  pending_changes[:evidence_activity] << xml_evidence.xpath('activities/activity')
313
+ pending_changes[:evidence_comments] << xml_evidence.xpath('comments/comment')
302
314
 
303
315
  logger.info { "\tNew evidence added." }
304
316
  end
@@ -333,6 +345,7 @@ module Dradis::Plugins::Projects::Upload::V1
333
345
  end
334
346
 
335
347
  raise "Couldn't create activities for Note ##{note.id}" unless create_activities(note, xml_note)
348
+ raise "Couldn't create comments for Note ##{note.id}" unless create_comments(note, xml_note.xpath('comments/comment'))
336
349
 
337
350
  logger.info { "\tNew note added." }
338
351
  end
@@ -25,13 +25,6 @@ module Dradis::Plugins::Projects::Upload::V2
25
25
  return false unless validate_and_save(comment)
26
26
  end
27
27
  end
28
-
29
- def create_issue(issue, xml_issue)
30
- return false unless super
31
- return false unless create_comments(issue, xml_issue.xpath('comments/comment'))
32
-
33
- true
34
- end
35
28
  end
36
29
  end
37
30
  end
@@ -0,0 +1,110 @@
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>1</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>
@@ -0,0 +1,52 @@
1
+ require 'rails_helper'
2
+
3
+ describe Dradis::Plugins::Projects::Export::V2::Template do
4
+ let(:project) { create(:project) }
5
+ let(:user) { create(:user) }
6
+ let(:export) do
7
+ described_class.new(
8
+ default_user_id: user.id,
9
+ plugin: Dradis::Plugins::Projects,
10
+ project_id: project.id
11
+ ).export
12
+ end
13
+
14
+ context 'exporting a project' do
15
+ before do
16
+ node = create(:node, project: project)
17
+ issue = create(:issue, text: 'Issue 1', node: project.issue_library)
18
+ end
19
+
20
+ context 'with comments in an issue' do
21
+ before do
22
+ create(:comment, content: 'A comment on an issue', commentable: issue)
23
+ end
24
+
25
+ it 'exports comments in the issue' do
26
+ expect(export).to include('A comment on an issue')
27
+ end
28
+ end
29
+
30
+ context 'with comments in a note' do
31
+ before do
32
+ note = create(:note, text: 'Note 1', node: node)
33
+ create(:comment, content: 'A comment on a note', commentable: note)
34
+ end
35
+
36
+ it 'exports comments in the note' do
37
+ expect(export).to include('A comment on a note')
38
+ end
39
+ end
40
+
41
+ context 'with comments in an evidence' do
42
+ before do
43
+ evidence = create(:evidence, text: 'Test evidence', node: node, issue: issue)
44
+ create(:comment, content: 'A comment on an evidence', commentable: evidence)
45
+ end
46
+
47
+ it 'exports comments in the evidence' do
48
+ expect(export).to include('A comment on an evidence')
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,45 @@
1
+ require 'rails_helper'
2
+
3
+ describe Dradis::Plugins::Projects::Upload::V2::Template::Importer do
4
+ let(:project) { create(:project) }
5
+ let(:user) { create(:user) }
6
+ let(:importer_class) { Dradis::Plugins::Projects::Upload::Template }
7
+ let(:file_path) do
8
+ File.join(
9
+ File.dirname(__FILE__),
10
+ '../../../../../../',
11
+ 'fixtures',
12
+ 'files',
13
+ 'with_comments.xml'
14
+ )
15
+ end
16
+
17
+ context 'uploading a template with comments' do
18
+ before do
19
+ importer = importer_class::Importer.new(
20
+ default_user_id: user.id,
21
+ plugin: importer_class,
22
+ project_id: project.id
23
+ )
24
+
25
+ importer.import(file: file_path)
26
+ end
27
+
28
+ let(:node) { project.nodes.find_by(label: 'Node 1') }
29
+
30
+ it 'imports comments in issues' do
31
+ issue = project.issues.first
32
+ expect(issue.comments.first.content).to include('A comment on an issue')
33
+ end
34
+
35
+ it 'imports comments in notes' do
36
+ note = node.notes.first
37
+ expect(note.comments.first.content).to include('A comment on a note')
38
+ end
39
+
40
+ it 'imports comments in evidence' do
41
+ evidence = node.evidence.first
42
+ expect(evidence.comments.first.content).to include('A comment on an evidence')
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dradis-projects
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.0
4
+ version: 3.11.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: 2018-08-31 00:00:00.000000000 Z
11
+ date: 2018-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -129,7 +129,10 @@ files:
129
129
  - lib/dradis/plugins/projects/version.rb
130
130
  - lib/tasks/thorfile.rb
131
131
  - spec/fixtures/files/attachments_url.xml
132
+ - spec/fixtures/files/with_comments.xml
133
+ - spec/lib/dradis/plugins/projects/export/v2/template_spec.rb
132
134
  - spec/lib/dradis/plugins/projects/upload/v1/template_spec.rb
135
+ - spec/lib/dradis/plugins/projects/upload/v2/template_spec.rb
133
136
  homepage: http://dradisframework.org
134
137
  licenses:
135
138
  - GPL-2
@@ -156,4 +159,7 @@ specification_version: 4
156
159
  summary: Project export/upload for the Dradis Framework.
157
160
  test_files:
158
161
  - spec/fixtures/files/attachments_url.xml
162
+ - spec/fixtures/files/with_comments.xml
163
+ - spec/lib/dradis/plugins/projects/export/v2/template_spec.rb
159
164
  - spec/lib/dradis/plugins/projects/upload/v1/template_spec.rb
165
+ - spec/lib/dradis/plugins/projects/upload/v2/template_spec.rb