Passed
Push — master ( a232e6...b09263 )
by -
01:46
created

FlaskrTestCase.test_select()   A

Complexity

Conditions 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 2
dl 0
loc 9
rs 9.6666
1
from spike.model.naxsi_rulesets import NaxsiRuleSets
2
3
try:
4
    from urlparse import urlparse
5
except ImportError:  # python3
6
    from urllib.parse import urlparse
7
8
from spike import create_app
9
from spike.model import db, rulesets_seeds
10
from time import time
11
import unittest
12
import random
13
import string
14
15
16
class FlaskrTestCase(unittest.TestCase):
17
    def setUp(self):
18
        app = create_app('../config.cfg')
19
        db.init_app(app)
20
        app.config['TESTING'] = True
21
        self.app = app.test_client()
22
23
    def tearDown(self):
24
        pass
25
26
    def test_index(self):
27
        rv = self.app.get('/rulesets', follow_redirects=False)
28
        self.assertEqual(rv.status_code, 301)
29
        self.assertEqual(urlparse(rv.location).path, '/rulesets/')
30
31
        rv = self.app.get('/rulesets/', follow_redirects=False)
32
        self.assertEqual(rv.status_code, 200)
33
34
    def test_plain(self):
35
        rv = self.app.get('/rulesets/plain', follow_redirects=False)
36
        self.assertEqual(rv.status_code, 301)
37
38
        rv = self.app.get('/rulesets/plain', follow_redirects=True)
39
        for seed in rulesets_seeds:
40
            self.assertIn(seed, rv.data)
41
42
        rv = self.app.get('/rulesets/plain/1', follow_redirects=True)
43
        self.assertTrue(any(i for i in rulesets_seeds if i in rv.data))
44
45
    def test_view(self):
46
        _rid = NaxsiRuleSets.query.filter().first()
47
        rv = self.app.get('/rulesets/view/%d' % _rid.id, follow_redirects=False)
48
        self.assertEqual(rv.status_code, 200)
49
50
        rv = self.app.get('/rulesets/view/%d' % (_rid.id + 1), follow_redirects=False)
51
        self.assertEqual(rv.status_code, 200)
52
53
    def test_new(self):
54
        rname = next(iter(rulesets_seeds))
55
        rv = self.app.post('/rulesets/new', data={'rname': rname})
56
        self.assertEqual(rv.status_code, 302)
57
        self.assertEqual(urlparse(rv.location).path, '/rulesets/')
58
59
        random_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
60
        rv = self.app.post('/rulesets/new', data={'rname': random_name})
61
        self.assertEqual(rv.status_code, 302)
62
        _rule = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first()
63
        self.assertEqual(_rule.name, random_name)
64
        db.session.delete(_rule)
65
        db.session.commit()
66
67
    def test_del(self):
68
        random_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
69
        db.session.add(NaxsiRuleSets(random_name, "naxsi-ruleset: %s" % random_name, int(time())))
70
        db.session.commit()
71
        _rid = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first().id
72
73
        rv = self.app.post('/rulesets/del/%d' % (_rid + 1))
74
        self.assertEqual(rv.status_code, 302)
75
76
        rv = self.app.post('/rulesets/del/%d' % _rid)
77
        self.assertEqual(rv.status_code, 302)
78
        _rule = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first()
79
        self.assertEqual(_rule, None)
80
81
    def test_select(self):
82
        _ruleset = NaxsiRuleSets.query.filter().first()
0 ignored issues
show
Unused Code introduced by
The variable _ruleset seems to be unused.
Loading history...
83
        rv = self.app.get('/rulesets/select/%s' % 'WEB_APPS')
84
        self.assertEqual(rv.status_code, 200)
85
        self.assertIn('WEB_APPS', rv.data)
86
87
        random_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
88
        rv = self.app.get('/rulesets/select/%s' % random_name)
89
        self.assertEqual(rv.status_code, 200)
0 ignored issues
show
Coding Style introduced by
Final newline missing
Loading history...