-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtest.py
84 lines (75 loc) · 2.46 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import unittest
import sys
if sys.hexversion >= 0x03000000:
from io import StringIO
else:
from StringIO import StringIO
from contextlib import contextmanager
@contextmanager
def capture():
out, sys.stdout = sys.stdout, StringIO()
err, sys.stderr = sys.stderr, StringIO()
try:
yield sys.stdout, sys.stderr
finally:
sys.stdout = out
sys.stderr = err
class HelperMethodsTest(unittest.TestCase):
def test_timestamp_conversion(self):
from EsetLogParser import _winToUnixTimestamp
self.assertEqual(_winToUnixTimestamp(131349483990000000), 1490474799)
def test_error_print(self):
from EsetLogParser import eprint
hello = 'HelloError'
with capture() as (out, err):
eprint(hello)
self.assertEqual(err.getvalue().strip(), hello)
def test_info_message(self):
from EsetLogParser import _infoNotFound
field = 'FIELD'
with capture() as (out, err):
_infoNotFound(field)
msg = err.getvalue().strip()
self.assertTrue(msg.find('Info') > -1)
self.assertTrue(msg.find(field) > -1)
def test_warning_message(self):
from EsetLogParser import _warningUnexpected
field = 'FIELD'
with capture() as (out, err):
_warningUnexpected(field)
msg = err.getvalue().strip()
self.assertTrue(msg.find('Warning') > -1)
self.assertTrue(msg.find(field) > -1)
class ArgumentTest(unittest.TestCase):
def test_virlog_argument(self):
from EsetLogParser import _parse_args
virlog = 'virlog.dat'
args = _parse_args([virlog])
self.assertEqual(args.virlog, virlog)
class EsetLogParserTest(unittest.TestCase):
def setUp(self):
virlog = 'testlog.dat'
with open(virlog, 'rb') as f:
self.data = f.read()
def test_get_raw_records(self):
from EsetLogParser import getRawRecords
records = getRawRecords(self.data)
self.assertEqual(len(records), 2)
def test_parse_record(self):
from EsetLogParser import getRawRecords, parseRecord
records = getRawRecords(self.data)
with capture() as (out, err):
parsed = parseRecord(records[0][0], records[0][1])
self.assertEqual(int(parsed[0]), 0)
self.assertTrue('@Teststring.Eicar' in parsed)
self.assertTrue('3395856ce81f2b7382dee72602f798b642f14140' in parsed)
def test_main(self):
import EsetLogParser
with capture() as (out, err):
parsed = EsetLogParser.main(['testlog.dat'])
msg = out.getvalue()
self.assertEqual(msg.count('\n'),3)
self.assertTrue(msg.find('@Teststring.Eicar') > -1)
self.assertTrue(msg.find('3395856ce81f2b7382dee72602f798b642f14140') > -1)
if __name__ == '__main__':
unittest.main()