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