Spec-Zone.ru › Chef 17

json ресурс

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

Используйте json ресурс проверки Chef InSpec для проверки данных в файле JSON.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс впервые стал доступен в версии v1.0.0 InSpec.

Синтаксис

Блок ресурса json объявляет данные, которые будут проверены. Предположим, что у вас есть следующий файл JSON:

{
  "name" : "hello",
  "meta" : {
    "creator" : "John Doe"
  },
  "array": [
    "zero",
    "one"
  ]
}

Этот файл можно запросить с помощью:

describe json('/path/to/name.json') do
  its('name') { should eq 'hello' }
  its(['meta','creator']) { should eq 'John Doe' }
  its(['array', 1]) { should eq 'one' }
end

где

  • name — это параметр конфигурации в файле JSON
  • should eq 'foo' проверяет значение name из файла JSON по сравнению со значением, объявленным в тесте

Ресурс json также можно использовать с выходными данными в формате JSON из команды. Используя тот же JSON, что и в предыдущем примере, его можно запросить с помощью:

describe json({ command: 'retrieve_data.py --json'}) do
  its('name') { should eq 'hello' }
  its(['meta','creator']) { should eq 'John Doe' }
  its(['array', 1]) { should eq 'one' }
end

Наконец, содержимое можно передать напрямую в ресурс:

describe json({ content: '{\"item1\": { \"status\": \"available\" } }' }) do
  its(['item1', 'status']) { should cmp 'available' }
end

Примеры

В следующих примерах показано, как использовать этот ресурс проверки Chef InSpec.

имя

Сопоставитель name проверяет значение имени файла, считанного из файла JSON, по сравнению со значением, объявленным в тесте:

its('name') { should eq '/tmp/example.json' }

Проверка версии кулинарной книги в файле policyfile.lock.json

describe json('policyfile.lock.json') do
  its(['cookbook_locks', 'omnibus', 'version']) { should eq('2.2.0') }
end

Проверка JSON-вывода из HTTP-API

Наш пример API имеет конечную точку /health, которая выглядит так:

{
  "service": {
    "port": 3000,
    "status": "ok"
  }
}

Пример теста:

describe json(content: http('http://localhost:3000/health').body) do
  its(['service', 'port']) { should eq 3000 }
  its(['service', 'status']) { should eq 'ok' }
end

Сопоставители

Полный список доступных сопоставителей вы найдете на нашей странице сопоставителей.

© 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/json/

Spec-Zone.ru

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