1
|
|
|
import unittest |
2
|
|
|
|
3
|
|
|
from spike import create_app |
4
|
|
|
from spike.model import db |
5
|
|
|
|
6
|
|
|
try: |
7
|
|
|
from urlparse import urlparse |
|
|
|
|
8
|
|
|
except ImportError: # python3 |
9
|
|
|
from urllib.parse import urlparse |
10
|
|
|
|
11
|
|
|
|
12
|
|
|
class FlaskrTestCase(unittest.TestCase): |
13
|
|
|
def setUp(self): |
14
|
|
|
app = create_app() |
15
|
|
|
db.init_app(app) |
16
|
|
|
app.config['TESTING'] = True |
17
|
|
|
self.app = app.test_client() |
18
|
|
|
self.created_rules = list() |
19
|
|
|
|
20
|
|
|
def tearDown(self): |
21
|
|
|
pass |
22
|
|
|
|
23
|
|
|
def test_index(self): |
24
|
|
|
rv = self.app.get('/whitelists/') |
|
|
|
|
25
|
|
|
|
26
|
|
|
def test_new(self): |
27
|
|
|
rv = self.app.get('/whitelists/new') |
28
|
|
|
self.assertEqual(rv.status_code, 200) |
29
|
|
|
|
30
|
|
|
def test_generate(self): |
31
|
|
|
rv = self.app.get('/whitelists/generate') |
32
|
|
|
self.assertEqual(rv.status_code, 200) |
33
|
|
|
|
34
|
|
|
rv = self.app.post('/whitelists/generate') |
35
|
|
|
self.assertEqual(rv.status_code, 200) |
36
|
|
|
self.assertIn('Please input nxlogs', str(rv.data)) |
37
|
|
|
|
38
|
|
|
rv = self.app.post('/whitelists/generate', data={'nxlogs': 'pouet,lol'}) |
39
|
|
|
self.assertEqual(rv.status_code, 200) |
40
|
|
|
self.assertIn('string "ip=" not found.', str(rv.data)) |
41
|
|
|
|
42
|
|
|
rv = self.app.post('/whitelists/generate', data={'nxlogs': 'ip=1234'}) |
43
|
|
|
self.assertEqual(rv.status_code, 200) |
44
|
|
|
self.assertIn('string "," not found.', str(rv.data)) |
45
|
|
|
|
46
|
|
|
logs = "2013/11/10 07:36:19 [error] 8278#0: *5932 NAXSI_FMT: ip=X.X.X.X&server=Y.Y.Y.Y&"\ |
47
|
|
|
"uri=/phpMyAdmin-2.8.2/scripts/setup.php&learning=0&vers=0.52&total_processed=472&total_blocked=204&"\ |
48
|
|
|
"block=0&cscore0=$UWA&score0=8&zone0=HEADERS&id0=42000227&var_name0=user-agent, client: X.X.X.X,"\ |
49
|
|
|
'server: blog.memze.ro, request: "GET /phpMyAdmin-2.8.2/scripts/setup.php HTTP/1.1", host: "X.X.X.X"' |
50
|
|
|
rv = self.app.post('/whitelists/generate', data={'nxlogs': logs}) |
51
|
|
|
self.assertEqual(rv.status_code, 200) |
52
|
|
|
self.assertIn('BasicRule wl:42000227 "mz:user-agent:HEADERS"', str(rv.data)) |
53
|
|
|
|