Skip to content

Commit 2d23e70

Browse files
committed
Coverage for graphite.whitelist
* Fix graphite.whitelist.load_whitelist() * Add test cases for show, add and remove
1 parent d0295a2 commit 2d23e70

File tree

2 files changed

+96
-2
lines changed

2 files changed

+96
-2
lines changed

webapp/graphite/whitelist/views.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
from django.conf import settings
1919

2020
from graphite.compat import HttpResponse
21-
from graphite.util import unpickle
2221

2322

2423
def add(request):
@@ -42,7 +41,7 @@ def show(request):
4241

4342
def load_whitelist():
4443
fh = open(settings.WHITELIST_FILE, 'rb')
45-
whitelist = unpickle.load(fh)
44+
whitelist = pickle.load(fh)
4645
fh.close()
4746
return whitelist
4847

webapp/tests/test_whitelist.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import os
2+
import pickle
3+
4+
from . import DATA_DIR
5+
6+
from django.conf import settings
7+
from django.core.urlresolvers import reverse
8+
from django.test import TestCase
9+
10+
class WhitelistTester(TestCase):
11+
settings.WHITELIST_FILE = os.path.join(DATA_DIR, 'lists/whitelist')
12+
13+
def wipe_whitelist(self):
14+
try:
15+
os.remove(settings.WHITELIST_FILE)
16+
except OSError:
17+
pass
18+
19+
def create_whitelist(self):
20+
try:
21+
os.makedirs(settings.WHITELIST_FILE.replace('whitelist', ''))
22+
except OSError:
23+
pass
24+
fh = open(settings.WHITELIST_FILE, 'wb')
25+
pickle.dump({'a.b.c.d', 'e.f.g.h'}, fh)
26+
fh.close()
27+
28+
def test_whitelist_show_no_whitelist(self):
29+
url = reverse('whitelist_show')
30+
with self.assertRaises(IOError):
31+
response = self.client.get(url)
32+
33+
def test_whitelist_show(self):
34+
url = reverse('whitelist_show')
35+
self.create_whitelist()
36+
self.addCleanup(self.wipe_whitelist)
37+
response = self.client.get(url)
38+
self.assertEqual(response.status_code, 200)
39+
self.assertEqual(response.content, "a.b.c.d\ne.f.g.h")
40+
41+
def test_whitelist_add(self):
42+
self.create_whitelist()
43+
self.addCleanup(self.wipe_whitelist)
44+
45+
url = reverse('whitelist_add')
46+
response = self.client.post(url, {'metrics': ['i.j.k.l']})
47+
self.assertEqual(response.status_code, 200)
48+
self.assertEqual(response.content, "OK")
49+
50+
url = reverse('whitelist_show')
51+
response = self.client.get(url)
52+
self.assertEqual(response.status_code, 200)
53+
self.assertEqual(response.content, "a.b.c.d\ne.f.g.h\ni.j.k.l")
54+
55+
def test_whitelist_add_existing(self):
56+
self.create_whitelist()
57+
self.addCleanup(self.wipe_whitelist)
58+
59+
url = reverse('whitelist_add')
60+
response = self.client.post(url, {'metrics': ['a.b.c.d']})
61+
self.assertEqual(response.status_code, 200)
62+
self.assertEqual(response.content, "OK")
63+
64+
url = reverse('whitelist_show')
65+
response = self.client.get(url)
66+
self.assertEqual(response.status_code, 200)
67+
self.assertEqual(response.content, "a.b.c.d\ne.f.g.h")
68+
69+
def test_whitelist_remove(self):
70+
self.create_whitelist()
71+
self.addCleanup(self.wipe_whitelist)
72+
73+
url = reverse('whitelist_remove')
74+
response = self.client.post(url, {'metrics': ['a.b.c.d']})
75+
self.assertEqual(response.status_code, 200)
76+
self.assertEqual(response.content, "OK")
77+
78+
url = reverse('whitelist_show')
79+
response = self.client.get(url)
80+
self.assertEqual(response.status_code, 200)
81+
self.assertEqual(response.content, "e.f.g.h")
82+
83+
def test_whitelist_remove_missing(self):
84+
self.create_whitelist()
85+
self.addCleanup(self.wipe_whitelist)
86+
87+
url = reverse('whitelist_remove')
88+
response = self.client.post(url, {'metrics': ['i.j.k.l']})
89+
self.assertEqual(response.status_code, 200)
90+
self.assertEqual(response.content, "OK")
91+
92+
url = reverse('whitelist_show')
93+
response = self.client.get(url)
94+
self.assertEqual(response.status_code, 200)
95+
self.assertEqual(response.content, "a.b.c.d\ne.f.g.h")

0 commit comments

Comments
 (0)