App-phoebe

 view release on metacpan or  search on metacpan

t/SpeedBump.t  view on Meta::CPAN

like($page, qr(^20), "Speed bump reset");

$page = query_gemini("$base/do/speed-bump/debug");
like($page, qr(^20), "Speed bump debug");
like($page, qr(\$VAR1 = undef), "Speed bump data is empty");

write_text("$dir/speed-bump.json", <<'EOT');
{
  "18.130.151.101": {
    "cidr":"18.130.0.0\/16",
    "probation":1613945781,
    "seconds":2419200,
    "until":1611526581,
    "visits":[1609107042,1609107035,1609107028,1609107021,1609107014,1609107006,1609106998,1609106991,1609106983,1609106976,1609106969],
    "warnings":[1,1,1,1,1,1,1,1,1,1,1]},
  "18.130.170.163": {
    "cidr":"18.130.0.0\/16",
    "probation":1613936315,
    "seconds":2419200,
    "until":1611517115,
    "visits":[1609092165,1609092153,1609092140,1609092114,1609092103,1609092076,1609092063,1609092048,1609092033,1609092008,1609091982,1609091955,1609091941,1609091928,1609091902,1609091888,1609091876],
    "warnings":[1,1,1,1,1,1,1,1,1,1,"","","",1,"","",""]},
  "18.132.209.113": {
    "cidr":"18.132.0.0\/14",
    "probation":1613945147,
    "seconds":2419200,
    "until":1611525947,
    "visits":[1609098108,1609098101,1609098092,1609098085,1609098068,1609098060,1609098042,1609098026,1609097991,1609097976,1609097960],
    "warnings":[1,1,1,1,1,1,1,1,1,1,1]},
  "18.134.12.41": {
    "cidr":"18.132.0.0\/14",
    "probation":1613929318,
    "seconds":2419200,
    "until":1611510118,
    "visits":[1609083966,1609083952,1609083932,1609083916,1609083901,1609083887,1609083870,1609083852,1609083835,1609083819,1609083803],
    "warnings":[1,1,1,1,1,1,1,1,1,1,1]},
  "18.135.104.61":{
    "cidr":"18.132.0.0\/14",
    "probation":1613951744,
    "seconds":2419200,
    "until":1611532544,
    "visits":[1609106840,1609106831,1609106824,1609106816,1609106807,1609106799,1609106791,1609106784,1609106778,1609106769,1609106762,1609106754],
    "warnings":[1,1,1,1,1,1,1,1,1,1,"",1]}}
EOT

$page = query_gemini("$base/do/speed-bump/load");
like($page, qr(^20), "Data loaded");

$page = query_gemini("$base/do/speed-bump/status");
like($page, qr(^20), "Status loaded");
like($page, qr(18\.135\.104\.61), "IP number found");
like($page, qr(CIDR\n.*18\.132\.0\.0/14), "CIDR number found");

$page = query_gemini("$base/");
like($page, qr(^20), "Request 1");

$page = query_gemini("$base/");
like($page, qr(^20), "Request 2");

$page = query_gemini("$base/");
like($page, qr(^44 60), "Request 3 is blocked for 60s");

$page = query_gemini("$base/do/speed-bump/status");
#  From    To Warns Block Until Probation IP
#   -5s   -5s  2/ 2   60s   55s      115s 127.0.0.1
like($page, qr(^ +0s +0s +2\/ 2\ +60s +60s +120s +127\.0\.0\.1)m, "Blocked for 60s!");

# also making sure all the data from the old JSON file expired
unlike($page, qr(18\.135\.104\.61), "IP number no longer found");
unlike($page, qr(CIDR\n.*18\.132\.0\.0/14), "CIDR number no longer found");

done_testing();



( run in 0.515 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )