Passed
Push — master ( 92a3e4...baa4d0 )
by -
03:38 queued 02:04
created

FlaskrTestCase.test_new()   A

Complexity

Conditions 2

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 2
Metric Value
cc 2
dl 0
loc 13
ccs 12
cts 12
cp 1
crap 2
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_new(self):
46 1
        rname = next(iter(seeds.rulesets_seeds))
47 1
        rv = self.app.post('/rulesets/new', data={'rname': rname})
48 1
        self.assertEqual(rv.status_code, 302)
49 1
        self.assertEqual(urlparse(rv.location).path, '/rulesets/')
50
51 1
        random_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
52 1
        rv = self.app.post('/rulesets/new', data={'rname': random_name})
53 1
        self.assertEqual(rv.status_code, 302)
54 1
        _rule = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first()
55 1
        self.assertEqual(_rule.name, random_name)
56 1
        db.session.delete(_rule)
57 1
        db.session.commit()
58
59 1
    def test_del(self):
60 1
        random_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(16))
61 1
        db.session.add(NaxsiRuleSets(random_name, "naxsi-ruleset: %s" % random_name, int(time())))
62 1
        db.session.commit()
63 1
        _rid = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first().id
64
65 1
        rv = self.app.post('/rulesets/del/%d' % _rid)
66 1
        self.assertEqual(rv.status_code, 302)
67 1
        _rule = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == random_name).first()
68
        self.assertEqual(_rule, None)
69