Spec-Zone.ru › Chef 17

xml resource

[править на GitHub]

Используйте ресурс аудита 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