Spec-Zone.ru › Chef 16

xml ресурс

[редактировать на GitHub]

Используйте 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API