Skip to content

Commit ef6ebd4

Browse files
committed
main: convert tests to pytest
1 parent 68e5f29 commit ef6ebd4

File tree

3 files changed

+114
-123
lines changed

3 files changed

+114
-123
lines changed

main/tests/test_donor_import.py

Lines changed: 56 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,75 +6,80 @@
66
from tempfile import mkdtemp
77
from shutil import rmtree
88

9-
from django.test import TransactionTestCase
9+
import pytest
10+
1011
from django.core.management import call_command
1112
from django.core.management.base import CommandError
1213

1314
from main.models import Donor
1415
from main.management.commands.donor_import import Command
1516

1617

17-
class DonorImportTest(TransactionTestCase):
18+
command = Command()
19+
20+
21+
def gen_parse_subject(data):
22+
return command.parse_subject(valid.format(data))
23+
24+
25+
def test_parse_subject():
26+
assert command.parse_subject('garbage') is None
27+
28+
# Valid
29+
valid = 'Receipt [$25.00] By: John Doe [[email protected]]'
30+
output = command.parse_subject(valid)
31+
assert output == 'John Doe'
32+
1833

19-
def setUp(self):
20-
self.command = Command()
34+
def test_parse_name():
35+
assert command.sanitize_name('1244') == ''
36+
assert command.sanitize_name('John Doe') == 'John Doe'
37+
assert command.sanitize_name(' John Doe ') == 'John Doe'
38+
assert command.sanitize_name('John Doe 23') == 'John Doe'
2139

22-
def gen_parse_subject(self, data):
23-
return self.command.parse_subject(valid.format(data))
2440

25-
def test_parse_subject(self):
26-
self.assertIsNone(self.command.parse_subject('garbage'))
41+
def test_decode_subject():
42+
text = u'メイル'
43+
subject = Header(text, 'utf-8')
44+
assert command.decode_subject(subject) == text
2745

28-
# Valid
29-
valid = u'Receipt [$25.00] By: John Doe [[email protected]]'
30-
output = self.command.parse_subject(valid)
31-
self.assertEqual(output, u'John Doe')
3246

33-
def test_parse_name(self):
34-
self.assertEqual(self.command.sanitize_name(u'1244'), u'')
35-
self.assertEqual(self.command.sanitize_name(u'John Doe'), u'John Doe')
36-
self.assertEqual(self.command.sanitize_name(u' John Doe '), u'John Doe')
37-
self.assertEqual(self.command.sanitize_name(u'John Doe 23'), u'John Doe')
47+
def test_invalid_args():
48+
with pytest.raises(CommandError) as e:
49+
call_command('donor_import')
50+
assert 'Error: the following arguments are required' in str(e.value)
3851

39-
def test_decode_subject(self):
40-
text = u'メイル'
41-
subject = Header(text, 'utf-8')
42-
self.assertEqual(self.command.decode_subject(subject), text)
4352

44-
def test_invalid_args(self):
45-
with self.assertRaises(CommandError) as e:
46-
call_command('donor_import')
47-
self.assertIn('Error: the following arguments are required', str(e.exception))
53+
def test_invalid_path():
54+
with pytest.raises(CommandError) as e:
55+
call_command('donor_import', '/tmp/non-existant')
56+
assert 'Failed to open maildir' in str(e.value)
4857

49-
def test_invalid_path(self):
50-
with self.assertRaises(CommandError) as e:
51-
call_command('donor_import', '/tmp/non-existant')
52-
self.assertIn('Failed to open maildir', str(e.exception))
5358

54-
def test_maildir(self):
55-
tmpdir = mkdtemp('archweb')
56-
mdir = tmpdir + '/maildir'
59+
def test_maildir(db):
60+
tmpdir = mkdtemp('archweb')
61+
mdir = tmpdir + '/maildir'
5762

58-
maildir = Maildir(mdir)
59-
msg = Message()
60-
msg['subject'] = 'John Doe'
61-
msg['to'] = 'John Doe <[email protected]>'
62-
maildir.add(msg)
63+
maildir = Maildir(mdir)
64+
msg = Message()
65+
msg['subject'] = 'John Doe'
66+
msg['to'] = 'John Doe <[email protected]>'
67+
maildir.add(msg)
6368

64-
# Invalid
65-
call_command('donor_import', mdir)
66-
self.assertEqual(len(Donor.objects.all()), 0)
69+
# Invalid
70+
call_command('donor_import', mdir)
71+
assert len(Donor.objects.all()) == 0
6772

68-
# Valid
69-
msg = Message()
70-
msg['subject'] = 'Receipt [$25.00] By: David Doe [[email protected]]'
71-
msg['to'] = 'John Doe <[email protected]>'
72-
maildir.add(msg)
73-
call_command('donor_import', mdir)
74-
self.assertEqual(len(Donor.objects.all()), 1)
73+
# Valid
74+
msg = Message()
75+
msg['subject'] = 'Receipt [$25.00] By: David Doe [[email protected]]'
76+
msg['to'] = 'John Doe <[email protected]>'
77+
maildir.add(msg)
78+
call_command('donor_import', mdir)
79+
assert len(Donor.objects.all()) == 1
7580

76-
# Re-running should result in no new donor
77-
call_command('donor_import', mdir)
78-
self.assertEqual(len(Donor.objects.all()), 1)
81+
# Re-running should result in no new donor
82+
call_command('donor_import', mdir)
83+
assert len(Donor.objects.all()) == 1
7984

80-
rmtree(tmpdir)
85+
rmtree(tmpdir)
Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,10 @@
1-
from django.test import TestCase
2-
3-
41
from main.templatetags.flags import country_flag
5-
from mirrors.models import CheckLocation
6-
7-
8-
class FlagsTemplateTest(TestCase):
92

10-
def setUp(self):
11-
self.checkloc = CheckLocation.objects.create(hostname='arch.org',
12-
source_ip='127.0.0.1',
13-
country='US')
3+
from mirrors.tests.conftest import checklocation
144

15-
def tearDown(self):
16-
self.checkloc.delete()
175

18-
def test_country_flag(self):
19-
flag = country_flag(self.checkloc.country)
20-
self.assertIn(self.checkloc.country.name, flag)
21-
self.assertIn(self.checkloc.country.code.lower(), flag)
22-
self.assertEqual(country_flag(None), '')
6+
def test_country_flag(checklocation):
7+
flag = country_flag(checklocation.country)
8+
assert checklocation.country.name in flag
9+
assert checklocation.country.code.lower() in flag
10+
assert country_flag(None) == ''
Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,72 @@
1-
from django.conf import settings
2-
from django.test import TestCase
3-
41
from main.templatetags.pgp import pgp_key_link, format_key, pgp_fingerprint
52

63

7-
class PGPTemplateTest(TestCase):
4+
def test_format_key():
5+
# 40 len case
6+
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
7+
pgp_key_len = len(pgp_key)
8+
9+
output = format_key(pgp_key)
10+
spaces = output.count(' ') + output.count('\xa0') # nbsp
11+
assert pgp_key_len + spaces == len(output)
812

13+
# 21 - 39 len case
14+
pgp_key = '3E2C81117BFB1108D234DAFZ'
15+
pgp_key_len = len(pgp_key) + len('0x')
16+
assert pgp_key_len == len(format_key(pgp_key))
917

10-
def test_format_key(self):
11-
# 40 len case
12-
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
13-
pgp_key_len = len(pgp_key)
18+
# 8, 20 len case
19+
pgp_key = '3E2C81117BFB1108DEFF'
20+
pgp_key_len = len(pgp_key) + len('0x')
21+
assert pgp_key_len == len(format_key(pgp_key))
1422

15-
output = format_key(pgp_key)
16-
spaces = output.count(' ') + output.count('\xa0') # nbsp
17-
self.assertEqual(pgp_key_len + spaces, len(output))
23+
# 0 - 7 len case
24+
pgp_key = 'B1108D'
25+
pgp_key_len = len(pgp_key) + len('0x')
26+
assert pgp_key_len == len(format_key(pgp_key))
1827

19-
# 21 - 39 len case
20-
pgp_key = '3E2C81117BFB1108D234DAFZ'
21-
pgp_key_len = len(pgp_key) + len('0x')
22-
self.assertEqual(pgp_key_len, len(format_key(pgp_key)))
2328

24-
# 8, 20 len case
25-
pgp_key = '3E2C81117BFB1108DEFF'
26-
pgp_key_len = len(pgp_key) + len('0x')
27-
self.assertEqual(pgp_key_len, len(format_key(pgp_key)))
29+
def assert_pgp_key_link(pgp_key):
30+
output = pgp_key_link(int(pgp_key, 16))
31+
assert pgp_key[2:] in output
32+
assert "https" in output
2833

29-
# 0 - 7 len case
30-
pgp_key = 'B1108D'
31-
pgp_key_len = len(pgp_key) + len('0x')
32-
self.assertEqual(pgp_key_len, len(format_key(pgp_key)))
3334

34-
def assert_pgp_key_link(self, pgp_key):
35-
output = pgp_key_link(int(pgp_key, 16))
36-
self.assertIn(pgp_key[2:], output)
37-
self.assertIn("https", output)
35+
def test_pgp_key_link(settings):
36+
assert pgp_key_link("") == "Unknown"
3837

39-
def test_pgp_key_link(self):
40-
self.assertEqual(pgp_key_link(""), "Unknown")
38+
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
39+
output = pgp_key_link(pgp_key)
40+
assert pgp_key in output
41+
assert "https" in output
4142

42-
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
43-
output = pgp_key_link(pgp_key)
44-
self.assertIn(pgp_key, output)
45-
self.assertIn("https", output)
43+
output = pgp_key_link(pgp_key, "test")
44+
assert "test" in output
45+
assert "https" in output
4646

47-
output = pgp_key_link(pgp_key, "test")
48-
self.assertIn("test", output)
49-
self.assertIn("https", output)
47+
# Numeric key_id <= 8
48+
assert_pgp_key_link('0x0023BDC7')
5049

51-
# Numeric key_id <= 8
52-
self.assert_pgp_key_link('0x0023BDC7')
50+
# Numeric key_id <= 16
51+
assert_pgp_key_link('0xBDC7FF5E34A12F')
5352

54-
# Numeric key_id <= 16
55-
self.assert_pgp_key_link('0xBDC7FF5E34A12F')
53+
# Numeric key_id <= 40
54+
assert_pgp_key_link('0xA10E234343EA8BDC7FF5E34A12F')
5655

57-
# Numeric key_id <= 40
58-
self.assert_pgp_key_link('0xA10E234343EA8BDC7FF5E34A12F')
56+
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
57+
server = settings.PGP_SERVER
5958

60-
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
61-
server = getattr(settings, 'PGP_SERVER')
59+
settings.PGP_SERVER = ''
60+
assert server not in pgp_key_link(pgp_key)
6261

63-
with self.settings(PGP_SERVER=''):
64-
self.assertNotIn(server, pgp_key_link(pgp_key))
6562

66-
with self.settings(PGP_SERVER_SECURE=False):
67-
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
68-
self.assertNotIn("https", pgp_key_link(pgp_key))
63+
settings.PGP_SERVER_SECURE = False
64+
settings.PGP_SERVER = server
65+
pgp_key = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
66+
assert not "https" in pgp_key_link(pgp_key)
6967

70-
def test_pgp_fingerprint(self):
71-
self.assertEqual(pgp_fingerprint(None), "")
72-
keyid = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
73-
fingerprint = pgp_fingerprint(keyid)
74-
self.assertTrue(len(fingerprint) > len(keyid))
68+
def test_pgp_fingerprint():
69+
assert pgp_fingerprint(None) == ""
70+
keyid = '423423fD9004FB063E2C81117BFB1108D234DAFZ'
71+
fingerprint = pgp_fingerprint(keyid)
72+
assert len(fingerprint) > len(keyid)

0 commit comments

Comments
 (0)