From 7c5309cf7229e06dd6eee23cde0197aa4ef288da Mon Sep 17 00:00:00 2001
From: Jakub Cegan <cegan@ics.muni.cz>
Date: Fri, 7 Sep 2012 13:47:05 +0200
Subject: [PATCH] (Issue #525) Pridani souboru pro unit testy

Testovaci soubory pro klienta a server.Vetsina testu serveru je nefunkcnich. Vice informaci je dostupnych v Redmine na strance Issue.
---
 src/warden-client/lib/WardenClientSend.t | 32 ++++++++++
 src/warden-server/lib/Warden.t           | 80 ++++++++++++++++++++++++
 2 files changed, 112 insertions(+)
 create mode 100644 src/warden-client/lib/WardenClientSend.t
 create mode 100644 src/warden-server/lib/Warden.t

diff --git a/src/warden-client/lib/WardenClientSend.t b/src/warden-client/lib/WardenClientSend.t
new file mode 100644
index 0000000..b32a36b
--- /dev/null
+++ b/src/warden-client/lib/WardenClientSend.t
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+use lib '..';
+use WardenClientSend;
+
+my $uri_ok           = 'https://warden-dev.cesnet.cz:443/Warden';
+my $ssl_key_file_ok  = '/opt/warden-client/etc/warden-dev.cesnet.cz.key';
+my $ssl_cert_file_ok = '/opt/warden-client/etc/warden-dev.cesnet.cz.pem';
+my $ssl_ca_file_ok   = '/opt/warden-client/etc/tcs-ca-meta-bundle.pem';
+my $method_ok        = 'saveNewEvent';
+my $data_ok          = '';
+
+my $warden_path_ok   = '/opt/warden-client';
+my $warden_path_fail = '/path/to/fail';
+my @event_ok = ("honeyscan", "1234567890", "portscan","IP", "123.123.123.123", "TCP", "22", "1234567890", "important note or comment", "null", "20");
+my @vent_ok = ('HoneyScan', '2012-09-01T23:02:48', 'webattackReply-To:', '170.96.48.164', 'UDP', '44392354', 'tohle je takova normalni jednoducha poznamka', '180187');
+
+my $ret;
+
+#my ($ret) = WardenClientSend::c2s($uri_ok, $ssl_key_file_ok, $ssl_cert_file_ok, $ssl_ca_file_ok, $method_ok, $data_ok);
+#ok ($ret == 1, 'Everything is fine!');
+
+$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.');
diff --git a/src/warden-server/lib/Warden.t b/src/warden-server/lib/Warden.t
new file mode 100644
index 0000000..956f3f6
--- /dev/null
+++ b/src/warden-server/lib/Warden.t
@@ -0,0 +1,80 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use DBI;
+use DBD::mysql;
+
+use Test::More tests => 2;
+#use Test::Exception;
+
+use lib '..';
+use Warden;
+
+# Fake $ENV values
+BEGIN {
+  $ENV{'SSL_CLIENT_S_DN_CN'} = '?';
+  $ENV{'SSL_CLIENT_CERT'}    = '?';
+  $ENV{'REMOTE_ADDR'}        = '?';
+  $ENV{'SERVER_NAME'}        = 'warden-dev.cesnet.cz';
+  $ENV{'SERVER_ADDR'}        = '195.113.161.39';
+  $ENV{'SERVER_PORT'}        = '443';
+}
+
+
+my $ret;
+
+
+our $MAX_EVENTS_LIMIT = "1000000";
+our %VALID_STRINGS = (
+"type" => ["portscan", "bruteforce", "probe", "spam", "phishing", "botnet_c_c", "dos", "malware", "copyright", "webattack", "test", "other"],
+);
+
+our $DBH = DBI->connect("DBI:mysql:database=warden;host=localhost", "root", "w4rd3n&r00t", {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBI::errstr";
+
+#print $ENV{'SSL_CLIENT_S_DN_CN'};
+#foreach (keys %ENV){
+#  print "$_ -> $ENV{$_}\n";
+#}
+
+#trim test
+$ret = Warden::trim('   a  ');
+is($ret,'a','Trim si OK.');
+
+
+# Alternate names test
+#$alt_names, $ip, $service_type, $client_type, $function_name
+#$ret = Warden::getAltNames("warden-dev.cesnet.cz","195.113.161.39","honeyscan","s","someEvent");
+#is($ret, '', 'Alternate names are OK.');
+
+# Client authorizaton test
+#$ret = Warden::authorizeClient("warden-dev.cesnet.cz","195.113.161.39","honeyscan","s","someEvent");
+#is($ret, undef, 'Client is unregistered.');
+
+#$ret = Warden::authorizeClient();
+#is($ret, undef, 'Client is from the unauthorized subnet.');
+
+#$ret = Warden::authorizeClient();
+#is($ret, undef, 'Everything is fine.');
+
+# Save event test
+#$class, $data
+#dies_ok {Warden::saveNewEvent()} 'Cannot do insert statement.';
+
+#my @event_ok = ("honeyscan", "1234567890", "portscan","IP", "123.123.123.123", "TCP", "22", "1234567890", "important note or comment", "null", "20");
+#$ret = Warden::saveNewEvent("a",@event_ok);
+#ok($ret, 'Everything is fine.');
+
+# Get new event
+#dies_ok {Warden::getNewEvents()} 'Cannot work with the database.';
+
+#$ret = Warden::getNewEvents();
+#is($ret, @EVENTS, 'Everything is fine.');
+
+# Get last ID test
+#dies_ok {Warden::getLastId()} 'Cannot prepare statment.';
+
+$ret = Warden::getLastId();
+print $ret. "\n";
+is($ret, '16302246', 'GetLastID is OK.');
-- 
GitLab