Ресурс http
Используйте ресурс проверки аудита http Chef InSpec для проверки конечной точки 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: { 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 на удаленном целевом узле:
Параметры
Примеры параметров
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. При работе с удаленными целевыми узлами Windows используйте одинарные кавычки вокруг передаваемых данных, например data: '{ "a" : "1", "b" : "five" }'
describe http('http://localhost:8080/ping',
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
proxy
Укажите proxy для проверки, передав URI прокси-сервера или хэш URI прокси-сервера, имени пользователя и пароля. Укажите disable для игнорирования прокси-сервера, установленного в переменной окружения.
Вы можете включить имя пользователя и пароль в параметре proxy:
describe http('http://localhost:8080/ping', proxy: "http://username:password@www.example.com:3128") do
...
end
Параметр proxy также принимает параметры прокси в формате хэша:
describe http('http://localhost:8080/ping', proxy: { uri: 'http://www.example.com:3128', user: 'username', password: 'proxypassword'}) do
...
end
Используйте disable для игнорирования прокси-сервера, установленного в переменной окружения:
describe http('http://localhost:8080/ping', proxy: 'disable') do
...
end
Примечание
Примечание
Специальные символы в URI должны быть преобразованы в их эквиваленты UTF-8 при передаче в параметр proxy в виде строки. Например, строка http://username:bar@123@www.example.com:3128 должна быть передана как http://username:bar%40123@www.example.com:3128 вместо этого.
Специальные символы могут быть переданы в формате хэша без преобразования в символы UTF-8.
Свойства
body
Свойство body проверяет содержимое тела ответа http:
its('body') { should eq 'hello\n' }
headers
Свойство headers возвращает хэш всех заголовков http:
its('headers') { should eq {} }
Индивидуальные заголовки можно проверить через:
its('headers.Content-Type') { should cmp 'text/html' }
http_method
Свойство http_method возвращает метод http запроса.
its('http_method') { should eq 'GET'}
status
Свойство status проверяет статус ответа http:
its('status') { should eq 200 }
Пример
В следующих примерах показано, как использовать этот ресурс аудита 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 тестирует удаленный узел.
Сопоставители
Полный список доступных сопоставителей вы найдете на нашей странице сопоставителей.
© 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/