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

FlaskrTestCase   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Test Coverage

Coverage 100%
Metric Value
dl 0
loc 53
ccs 43
cts 43
cp 1
rs 10
wmc 11

6 Methods

Rating   Name   Duplication   Size   Complexity  
A test_index() 0 7 1
A test_plain() 0 10 4
A setUp() 0 5 1
A test_del() 0 10 2
A tearDown() 0 2 1
A test_new() 0 13 2
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