Spec-Zone.ru › Chef 18

Ресурс http

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

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

Примечание

Удаленные целевые узлы Windows не принимают значения имени пользователя и пароля в строке; используйте формат хэша вместо этого.

Примечание

Специальные символы в 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/

Spec-Zone.ru

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