Project

General

Profile

Warden Unit Testing

Stránka obsahuje veškeré potřebné informace vztahující se k jednotkovým testům realizovaným na projektu Warden. V první části je popsán použítý modul pro testování. Dále je pak řešeno pokrytí klienta a serveru testy.

Modul pro testování Wardenu

Pro jednotkové testy Warden klienta i serveru jsou použity moduly Test::Simple, Test::More. Další užitečné informace jsou pak dostupné na stránce Test::Tutorial. Pro testování vyjímek slouží Test::Exception a pro případné úpravy funkcí v průběhu unit testů je použit Test::MockModule . Unit testy se spouští v požadovaném adresáři pomocí příkazu: perl -MTest::Harness -e '$Test::Harness::verbose=1; runtests @ARGV;' *.t

Pokrytí systému testy

Akceptované pokrytí testy

Server

Warden::getAltNames

  • 1 - everything is OK.

Warden::authorizeClient

  • 2 - badAndUglyEvent: die (doesn't exist)
  • 3 - saveNewEvent: client is not registered
  • 4 - getNewEvents: client is not registered
  • 5 - saveNewEvent: OK.
  • 6 - getNewEvents: OK.

Warden::getNewEvents

  • 7 - bad type
  • 8 - bad source type.
  • 9 - bad date format.
  • 10 - port is not a number.
  • 11 - attack scale is not a number.
  • 12 - priority is not a number.
  • 13 - timeout is not a number.
  • 14 - everything is fine.

Warden::getNewEvents

  • 15 - everything is fine.

Warden::getLastId

  • 16 - getLastID is OK.

Warden::getClients

  • 17 - everything is fine.

Warden::getStatus

  • 18 - everything is fine.

Klient

WardenClientSend::saveNewEvent

  • $ret = WardenClientSend::saveNewEvent($warden_path_fail,\@event_ok); ok ($ret 0, 'Bad Warden path!');
  • $ret = WardenClientSend::saveNewEvent($warden_path_ok,\@event_ok); ok ($ret 1, 'Everything is fine.');

Návrh pokrytí testy

Níže se nachází předběžný návrh oblastí v serveru a klientovi, na které budou vytvořeny testy.

Server

  • Warden.pm
    • sub write2log
      • nyni nelze otestovat navratovou hodnotu
    • sub authorizeClient
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (CN, AN nebo IP rozsah)
      • testovani na die, undef a %hash
    • sub registerSender
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (nelokalni ip, spatna data v SOAP)
      • testovani na die a return 1
    • sub registerReceiver
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (nelokalni ip, spatna data v SOAP)
      • testovani na die a return 1
    • sub unregisterClient
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (chybne id, nelokalni ip, spatna data v SOAP)
      • testovani na die a return 1
  • WardenConf.pm
    • sub loadConf
      • korektni konfiguracni soubor
      • chybejici konfiguracni soubor
      • poskozeny konfiguracni soubor
  • WardenReg.pm
    • sub c2s
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (chybne certifikaty, spatne uri, chybna metoda, poskozena data)
      • testovani na die a return 1
    • sub registerSender
      • vsechny spravne parametry
      • chybny $warden_path
      • testovani na return 0 a return 1
    • sub registerReceiver
      • vsechny spravne parametry
      • chybny $warden_path
      • testovani na return 0 a return 1
    • sub unregisterReceiver
      • vsechny spravne parametry
      • chybny $warden_path
      • testovani na return 0 a return 1
  • WardenStatus.pm
    • sub c2s
      • viz vyse

pozn. vstup chranen jen u "type"

Klient

  • WardenClientConf.pm
    • sub loadConf
      • korektni konfiguracni soubor
      • chybejici konfiguracni soubor
      • poskozeny konfiguracni soubor
  • WardenClientReceive.pm
    • sub c2s
      • vsechny spravne parametry
      • vzdy jeden chybny parametr (chybne certifikaty, spatne uri, chybna metoda, poskozena data)
      • testovani na die a return 1
  • WardenClientSend.pm
    • sub c2s
      • viz vyse
    • sub saveNewEvent * prinutit nejak SOAP k chybe, aby "zabral" eval?