Passed
Push — master ( baa4d0...50ec1a )
by -
01:35
created

FlaskrTestCase.test_view()   A

Complexity

Conditions 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

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