mirror of
https://github.com/inspec/inspec
synced 2024-12-12 06:12:37 +00:00
67081c00d4
Signed-off-by: Sonu Saha <sonu.saha@progress.com>
89 lines
2.9 KiB
Ruby
89 lines
2.9 KiB
Ruby
require "helper"
|
|
require "inspec/resource"
|
|
require "inspec/resources/xml"
|
|
require "rexml/document"
|
|
|
|
describe "Inspec::Resources::XML" do
|
|
describe "when loading valid XML" do
|
|
let(:resource) { load_resource("xml", "default.xml") }
|
|
|
|
it "gets resource_id for current resource" do
|
|
_(resource.resource_id).must_equal "default.xml"
|
|
end
|
|
|
|
it "gets params as a document" do
|
|
_(resource.params).must_be_kind_of REXML::Document
|
|
end
|
|
|
|
it "retrieves empty array if xpath cannot be found" do
|
|
_(resource.send("missing")).must_equal []
|
|
end
|
|
|
|
it "retrieves xpath by name" do
|
|
_(resource.send("breakfast_menu/food[1]/name")).must_equal ["Belgian Waffles"]
|
|
_(resource.send("/breakfast_menu/food[1]/name")).must_equal ["Belgian Waffles"]
|
|
end
|
|
|
|
it "retrieves many xpaths by name" do
|
|
_(resource.send("/breakfast_menu/food/name")).must_equal ["Belgian Waffles", "Strawberry Belgian Waffles"]
|
|
_(resource.send("//name")).must_equal ["Belgian Waffles", "Strawberry Belgian Waffles"]
|
|
end
|
|
end
|
|
|
|
describe "when loading xml with attributes" do
|
|
let(:resource) { load_resource("xml", "database.xml") }
|
|
|
|
it "gets resource_id for current resource" do
|
|
_(resource.resource_id).must_equal "database.xml"
|
|
end
|
|
|
|
it "gets params as a document" do
|
|
_(resource.params).must_be_kind_of REXML::Document
|
|
end
|
|
|
|
it "retrieves empty array if xpath cannot be found" do
|
|
_(resource.send("missing")).must_equal []
|
|
end
|
|
|
|
it "retrieves attribute value through xpath" do
|
|
_(resource.send('//property[@name="url"]/@value')).must_equal ["jdbc:oracle:thin:@databaseserver.domain.tld:1521/DBO.DOMAIN.TLD"]
|
|
_(resource.send('/beans/bean[@id="dataSource"]/property[@name="url"]/@value')).must_equal ["jdbc:oracle:thin:@databaseserver.domain.tld:1521/DBO.DOMAIN.TLD"]
|
|
end
|
|
end
|
|
|
|
describe "when loading xml and requesting a count" do
|
|
let(:resource) { load_resource("xml", "database.xml") }
|
|
|
|
it "gets resource_id for current resource" do
|
|
_(resource.resource_id).must_equal "database.xml"
|
|
end
|
|
|
|
it "gets count of nodes in the document" do
|
|
_(resource.send("count(//*)")).must_equal [9]
|
|
end
|
|
end
|
|
|
|
describe "when loading xml and evaluating a boolean result" do
|
|
let(:resource) { load_resource("xml", "database.xml") }
|
|
|
|
it "gets resource_id for current resource" do
|
|
_(resource.resource_id).must_equal "database.xml"
|
|
end
|
|
|
|
it "checks if a node is true-like" do
|
|
_(resource.send("boolean(/beans/bean/@lazy-init)")).must_equal [true]
|
|
end
|
|
end
|
|
|
|
describe "when loading xml and evaluating a string result" do
|
|
let(:resource) { load_resource("xml", "database.xml") }
|
|
|
|
it "gets resource_id for current resource" do
|
|
_(resource.resource_id).must_equal "database.xml"
|
|
end
|
|
|
|
it "checks if a node is string-like" do
|
|
_(resource.send('concat(string(/beans/bean/@lazy-init)," <--")')).must_equal ["true <--"]
|
|
end
|
|
end
|
|
end
|