FlaskrTestCase.test_generate()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
c 3
b 0
f 0
dl 0
loc 23
rs 9.0856
1
import unittest
2
from time import time
3
4
from spike import create_app
5
from spike.model import db
6
from spike.model.naxsi_whitelist import NaxsiWhitelist
7
8
try:
9
    from urlparse import urlparse
0 ignored issues
show
Unused Code introduced by
Unused urlparse imported from urlparse
Loading history...
10
except ImportError:  # python3
11
    from urllib.parse import urlparse
12
13
14
class FlaskrTestCase(unittest.TestCase):
15
    def setUp(self):
16
        app = create_app()
17
        db.init_app(app)
18
        app.config['TESTING'] = True
19
        self.app = app.test_client()
20
        self.wid = self.__create_whitelist()
21
22
    def tearDown(self):
23
        db.session.delete(NaxsiWhitelist.query.filter(NaxsiWhitelist.id == self.wid).first())
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
24
        db.session.commit()
25
26
    @staticmethod
27
    def __create_whitelist():
28
        _wlist = NaxsiWhitelist(wl='wl:42', timestamp=int(time()), whitelistset='WORDPRESS', mz='BODY', active=1,
29
                                negative=False)
30
        db.session.add(_wlist)
31
        db.session.commit()
32
        return NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first().id
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
33
34
    def test_index(self):
35
        rv = self.app.get('/whitelists/')
36
        self.assertEqual(rv.status_code, 200)
37
38
    def test_plain(self):
39
        _id = NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first().id
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
40
41
        rv = self.app.get('/whitelists/plain/%d' % (_id + 1))
42
        self.assertEqual(rv.status_code, 302)
43
44
        rv = self.app.get('/whitelists/plain/%d' % _id)
45
        self.assertIn('BasicRule  wl:wl:42 "mz:BODY";', str(rv.data))
46
47
    def test_view(self):
48
        _id = NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first().id
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
49
50
        rv = self.app.get('/whitelists/view/%d' % (_id + 1))
51
        self.assertEqual(rv.status_code, 302)
52
53
    def test_del(self):
54
        wlist = NaxsiWhitelist(wl='wl:42', timestamp=int(time()), whitelistset='WORDPRESS', mz='BODY', active=1,
55
                               negative=False)
56
        db.session.add(wlist)
57
        db.session.commit()
58
        _id = NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first().id
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
59
60
        rv = self.app.get('/whitelists/del/%d' % (_id + 1))
61
        self.assertEqual(302, rv.status_code)
62
63
        rv = self.app.get('/whitelists/del/%d' % _id, follow_redirects=True)
64
        self.assertIn('Successfully deleted %d' % _id, str(rv.data))
65
66
    def test_new(self):
67
        rv = self.app.get('/whitelists/new')
68
        self.assertEqual(rv.status_code, 200)
69
70
        rv = self.app.post('/whitelists/new', data={'wl': '42',
71
                                                    'mz': 'BODY', 'whitelistset': 'WORDPRESS'})
72
        self.assertEqual(rv.status_code, 200)
73
        _wlist = NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first()
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
74
        self.assertEqual(_wlist.mz, 'BODY')
75
        self.assertEqual(_wlist.negative, 0)
76
        self.assertEqual(_wlist.wl, '42')
77
78
        rv = self.app.post('/whitelists/new', data={'mz': 'BODY', 'custom_mz_val': '', 'whitelistset': 'WORDPRESS'})
79
        self.assertIn('Please enter a wl', str(rv.data))
80
        rv = self.app.post('/whitelists/new', data={'mz': 'BODY', 'custom_mz_val': '', 'wl': '42'})
81
        self.assertIn('Please enter a whitelistset', str(rv.data))
82
83
        rv = self.app.post('/whitelists/new', data={'mz': 'BODY', 'custom_mz_val': '', 'wl': 'abcdef',
84
                                                    'whitelistset': 'WORDPRESS'}, follow_redirects=True)
85
        self.assertIn('Illegal character in the wl.', str(rv.data))
86
87
        db.session.delete(NaxsiWhitelist.query.order_by(NaxsiWhitelist.id.desc()).first())
0 ignored issues
show
Bug introduced by
The Class NaxsiWhitelist does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
88
        db.session.commit()
89
90
    def test_generate(self):
91
        rv = self.app.get('/whitelists/generate')
92
        self.assertEqual(rv.status_code, 200)
93
94
        rv = self.app.post('/whitelists/generate')
95
        self.assertEqual(rv.status_code, 200)
96
        self.assertIn('Please input nxlogs', str(rv.data))
97
98
        rv = self.app.post('/whitelists/generate', data={'nxlogs': 'pouet,lol'})
99
        self.assertEqual(rv.status_code, 200)
100
        self.assertIn('string "ip=" not found.', str(rv.data))
101
102
        rv = self.app.post('/whitelists/generate', data={'nxlogs': 'ip=1234'})
103
        self.assertEqual(rv.status_code, 200)
104
        self.assertIn('string "," not found.', str(rv.data))
105
106
        logs = "2013/11/10 07:36:19 [error] 8278#0: *5932 NAXSI_FMT: ip=X.X.X.X&server=Y.Y.Y.Y&" \
107
               "uri=/phpMyAdmin-2.8.2/scripts/setup.php&learning=0&vers=0.52&total_processed=472&total_blocked=204&" \
108
               "block=0&cscore0=$UWA&score0=8&zone0=HEADERS&id0=42000227&var_name0=user-agent, client: X.X.X.X," \
109
               'server: blog.memze.ro, request: "GET /phpMyAdmin-2.8.2/scripts/setup.php HTTP/1.1", host: "X.X.X.X"'
110
        rv = self.app.post('/whitelists/generate', data={'nxlogs': logs})
111
        self.assertEqual(rv.status_code, 200)
112
        self.assertIn('BasicRule wl:42000227 "mz:$HEADERS_VAR:user-agent";', str(rv.data))
113