Тестирование правил Nginx на Perl и модуль Test::Nginx
Тестирование правил Nginx на Perl и модуль Test::Nginx
Вы когда нибудь писали на Perl ? Я нет, Haskell был, Lisp был, Perl - нет.
На perl например до недавнего времени была написана главная страница яндеска [пруф](https://habr.com/ru/companies/yandex/articles/871868/) пока не переехала на GO.
Но где можно было бы с ним встретится в энтерпрайз разработке мне сложно представить. Пишите кстати в комментариях если знаете примеры или сами писали.
Ну так вот, оказывается есть такой модуль Test::Nginx , с помощью которого можно тестировать location'ы nginx'а
Пример такого теста:
use warnings;
use Test::Nginx::Socket -Base;
plan tests => repeat_each()*2;
no_shuffle();
run_tests();
DATA
=== TEST 1: rewrite + proxy + заголовки (обычный путь с сегментами)
--- http_config
server {
listen 1984;
location / {
return 200 "$request_uri\n$http_x_orig_request_uri\n$http_x_uri\n$http_host\n";
}
}
--- config
set $MY_SERVER http://127.0.0.1:1984;
include /test/locations-under-test.conf;
listen 127.0.0.1:8080;
server_name test.local;
--- request
GET /api/v1/old-query/42
--- more_headers
Host: example.test
--- response_body_like: ^\/api.*$
--- error_code: 200
Чтобы совсем красиво было еще нужно это завернуть в докер, с установленным perl с модулем Test::Nginx и сам nginx .
Правда круто, тесты да еще и на perl'e :)
