xml ресурс
Используйте xml ресурс аудита Chef InSpec для проверки данных в файле XML.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс впервые стал доступен в версии v1.37.6 InSpec.
Синтаксис
Блок ресурса xml объявляет данные для проверки. Предположим следующий файл XML:
<root>
<name>hello</name>
<meta>
<creator>John Doe</creator>
</meta>
<array>
<element>one</element>
<element>two</element>
</array>
<array>
<element value="one"></element>
<element value="two"></element>
</array>
</root>
Этот файл можно запросить для элементов с помощью:
describe xml('/path/to/name.xml') do
its('root/name') { should eq ['hello'] }
its('root/meta/creator') { should eq ['John Doe'] }
its('root/array[2]/element') { should eq ['two'] }
end
Этот файл можно запросить для атрибутов с помощью:
describe xml('/path/to/name.xml') do
its('root/array[2]/element/@value') { should eq ['one', 'two'] }
its('root/array[2]/element/attribute::value') { should eq ['one', 'two'] }
its('root/array[2]/element[2]/attribute::value') { should eq ['two'] }
its('count(//*)') { should eq [42] }
its('boolean(root/array[2]/element[2]/@valid)') { should eq [false] }
end
где
-
root/nameиroot/array[2]/element/@value— это выражение XPath -
should eq ['foo']проверяет значениеroot/name, как оно читается из файла XML, по сравнению со значением, объявленным в тесте
В приведенном выше примере вы видите использование @ и attribute::, которые являются методами извлечения атрибутов.
В случае, если путь содержит элемент, содержащий точки, можно использовать альтернативный синтаксис:
its(['root/name.with.a.period']) { should cmp 'so_many_dots' }
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec.
Проверка наличия AppPool в файле applicationHost.config или сайта по умолчанию в applicationHost.sites
describe xml('applicationHost.config') do
# using the alternate syntax as described above because of the . in the key name
its(['configuration/system.applicationHost/applicationPools/add@name']) { should contain('my_pool') }
end
describe xml('applicationHost.sites') do
its('site[@name="Default Web Site"]/application/virtualDirectory/@path') { should eq ['/'] }
end
Обработчики
Полный список доступных обработчиков можно найти на нашей странице обработчиков.
name
Обработчик name проверяет значение name, как оно читается из файла JSON, по сравнению со значением, объявленным в тесте:
its('name') { should eq 'foo' }
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/xml/