#!/usr/bin/env perl use strict; use warnings; use Test::More; use CGI; use CGI::Emulate::PSGI; # cpan CGI::Emulate::PSGI use Plack::Test; # cpan Plack use HTTP::Request::Common; use lib '.'; # якщо ваш скрипт у поточній директорії # Завантажуємо ваш CGI-скрипт як модуль # (треба трохи адаптувати ваш скрипт, щоб він міг працювати як PSGI app) require 'process_form.pl'; # ваш оригінальний скрипт # Обгортаємо CGI-скрипт у PSGI-сумісну функцію my $app = CGI::Emulate::PSGI->handler(sub { # Тут викликається ваш оригінальний код CGI # (зазвичай це просто main:: код вашого скрипту) main::handler(); # або просто весь код, якщо він не в підпрограмі }); # Тестовий клієнт my $test = Plack::Test->create($app); subtest 'GET - показ форми' => sub { my $res = $test->request(GET '/'); is $res->code, 200, 'Повертає 200 OK'; like $res->content, qr{content, qr{csrf_token.*value="[^"]+"}i, 'Містить CSRF-токен'; unlike $res->content, qr{', age => '30', email => 'xss@test.com' } ); is $res->code, 200, 'Оброблено, але екрановано'; unlike $res->content, qr{