dradis-projects 3.10.0 → 3.11.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
  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