spec/burp_upload_spec.rb in dradis-burp-3.12.0 vs spec/burp_upload_spec.rb in dradis-burp-3.13.0
- old
+ new
@@ -1,29 +1,29 @@
require 'spec_helper'
require 'ostruct'
describe 'Burp upload plugin' do
- describe Burp::Issue do
+ describe Burp::Xml::Issue do
it "handles invalid utf-8 bytes" do
doc = Nokogiri::XML(File.read('spec/fixtures/files/invalid-utf-issue.xml'))
xml_issue = doc.xpath('issues/issue').first
- issue = Burp::Issue.new(xml_issue)
+ issue = Burp::Xml::Issue.new(xml_issue)
expect{ issue.request.encode('utf-8') }.to_not raise_error
end
end
- describe "Importer" do
+ describe Dradis::Plugins::Burp::Xml::Importer do
before(:each) do
# Stub template service
templates_dir = File.expand_path('../../templates', __FILE__)
expect_any_instance_of(Dradis::Plugins::TemplateService)
.to receive(:default_templates_dir).and_return(templates_dir)
# Init services
- plugin = Dradis::Plugins::Burp
+ plugin = Dradis::Plugins::Burp::Xml
@content_service = Dradis::Plugins::ContentService::Base.new(
logger: Logger.new(STDOUT),
plugin: plugin
)
@@ -108,9 +108,73 @@
end.once
# Run the import
@importer.import(file: 'spec/fixtures/files/burp.xml')
+ end
+
+ end
+
+ describe Dradis::Plugins::Burp::Html::Importer do
+ before(:each) do
+ # Stub template service
+ templates_dir = File.expand_path('../../templates', __FILE__)
+ expect_any_instance_of(Dradis::Plugins::TemplateService)
+ .to receive(:default_templates_dir).and_return(templates_dir)
+
+ # Init services
+ plugin = Dradis::Plugins::Burp::Html
+
+ @content_service = Dradis::Plugins::ContentService::Base.new(
+ logger: Logger.new(STDOUT),
+ plugin: plugin
+ )
+
+ @importer = plugin::Importer.new(
+ content_service: @content_service,
+ )
+
+ # Stub dradis-plugins methods
+ #
+ # They return their argument hashes as objects mimicking
+ # Nodes, Issues, etc
+ allow(@content_service).to receive(:create_node) do |args|
+ obj = OpenStruct.new(args)
+ obj.define_singleton_method(:set_property) { |_, __| }
+ obj
+ end
+ allow(@content_service).to receive(:create_issue) do |args|
+ OpenStruct.new(args)
+ end
+ allow(@content_service).to receive(:create_evidence) do |args|
+ OpenStruct.new(args)
+ end
+ end
+
+ it "creates nodes, issues, and evidence as needed" do
+
+ # Host node
+ #
+ # create_node should be called once for each issue in the xml,
+ # but ContentService knows it's already created and NOOPs
+ expect(@content_service).to receive(:create_node)
+ .with(hash_including label: 'github.com/dradis/dradis-burp')
+ .exactly(1).times
+
+ # # create_issue should be called once for each issue in the xml
+ expect(@content_service).to receive(:create_issue) do |args|
+ expect(args[:text]).to include("#[Title]#\nStrict transport security not enforced")
+ expect(args[:id]).to eq(16777984)
+ OpenStruct.new(args)
+ end.once
+ expect(@content_service).to receive(:create_evidence) do |args|
+ expect(args[:content]).to include("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
+ expect(args[:issue].text).to include("#[Title]#\nStrict transport security not enforced")
+ expect(args[:node].label).to eq("github.com/dradis/dradis-burp")
+ end.once
+
+ # Run the import
+ @importer.import(file: 'spec/fixtures/files/burp.html')
end
end
end