Spec-Zone.ru › Chef 16

Ресурс http

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

Используйте ресурс аудита Chef InSpec http, чтобы проверить конечную точку http.

Доступность

Установка

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

Версия

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

Синтаксис

Блок ресурса http объявляет настройки конфигурации, которые необходимо проверить:

describe http('url', auth: {user: 'user', pass: 'test'}, params: {params}, method: 'method', headers: {headers}, data: data, open_timeout: 60, read_timeout: 60, ssl_verify: true, max_redirects: 3) do
  its('status') { should eq number }
  its('body') { should eq 'body' }
  its('headers.name') { should eq 'header' }
end

где

  • ('url') — это url для проверки
  • auth: { user: 'user', pass: 'test' } может быть указан для запроса с базовой аутентификацией
  • {params} может быть указан для параметров запроса http
  • 'method' может быть указан для метода запроса http (по умолчанию «GET»)
  • {headers} может быть указан для заголовков запроса http
  • data может быть указан для тела запроса http
  • open_timeout может быть указан для таймаута открытия подключений (по умолчанию 60)
  • read_timeout может быть указан для таймаута чтения подключений (по умолчанию 60)
  • ssl_verify может быть указан для включения или отключения проверки сертификатов SSL (по умолчанию true)
  • max_redirects может быть указан для управления количеством перенаправлений HTTP (по умолчанию 0)

Пример

Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec. Блок ресурса http объявляет настройки конфигурации, которые необходимо проверить:

Простой тест http

Например, можно проверить, что служба прослушивает стандартный порт http следующим образом:

describe http('http://localhost') do
  its('status') { should cmp 200 }
end

Сложный тест http

describe http('http://localhost:8080/ping',
              auth: {user: 'user', pass: 'test'},
              params: {format: 'html'},
              method: 'POST',
              headers: {'Content-Type' => 'application/json'},
              data: '{"data":{"a":"1","b":"five"}}') do
  its('status') { should cmp 200 }
  its('body') { should cmp 'pong' }
  its('headers.Content-Type') { should cmp 'text/html' }
end

Локальный против удаленного

Начиная с Chef InSpec 1.41, вы можете включить возможность выполнения теста HTTP на удаленном целевом узле:

describe http('http://www.example.com', enable_remote_worker: true) do
  its('body') { should cmp 'awesome' }
end

В Chef InSpec 2.0 тест HTTP будет автоматически выполняться удаленно, когда Chef InSpec тестирует удаленный узел.

Параметры

  • url, auth, params, method, headers, data, open_timeout, read_timeout, ssl_verify, max_redirects

Примеры параметров

url

('url') — это url для проверки.

describe http('http://localhost:8080/ping') do
  ...
end

auth

auth: { user: 'user', pass: 'test' } может быть указан для запроса с базовой аутентификацией.

describe http('http://localhost:8080/ping',
              auth: {user: 'user', pass: 'test'}) do
  ...
end

params

{params} может быть указан для параметров запроса http.

describe http('http://localhost:8080/ping',
              params: {format: 'html'}) do
  ...
end

method

'method' может быть указан для метода запроса http (по умолчанию «GET»).

describe http('http://localhost:8080/ping',
              method: 'POST') do
  ...
end

headers

{headers} может быть указан для заголовков запроса http.

describe http('http://localhost:8080/ping',
              headers: {'Content-Type' => 'application/json'}) do
  ...
end

data

data может быть указан для тела запроса http.

    describe http('http://localhost:8080/ping',
              data: '{"data":{"a":"1","b":"five"}}') do
      ...
    end

open_timeout

open_timeout может быть указан для таймаута открытия подключений (по умолчанию 60).

describe http('http://localhost:8080/ping',
              open_timeout: '90') do
  ...
end

read_timeout

read_timeout может быть указан для таймаута чтения подключений (по умолчанию 60).

describe http('http://localhost:8080/ping',
              read_timeout: '90') do
  ...
end

ssl_verify

ssl_verify может быть указан для включения или отключения проверки сертификатов SSL (по умолчанию true).

describe http('http://localhost:8080/ping',
              ssl_verify: true) do
  ...
end

max_redirects

max_redirects может быть указан для управления количеством перенаправлений HTTP (по умолчанию 0).

describe http('http://localhost:8080/ping',
              max_redirects: 3) do
  ...
end

Свойства

  • body, headers, http_method, status,

Примеры свойств

body

Предикат body проверяет содержимое тела ответа http:

its('body') { should eq 'hello\n' }

headers

Предикат headers возвращает хеш всех заголовков http:

its('headers') { should eq {} }

Отдельные заголовки можно проверить с помощью:

its('headers.Content-Type') { should cmp 'text/html' }

status

Предикат status проверяет статус ответа http:

its('status') { should eq 200 }

Предикаты

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

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

Spec-Zone.ru

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