From d1abef2064cb293b2418726ea82b2c0c7c107b7f Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 22 Jul 2018 23:57:20 +0200 Subject: mirrors: add test for mirrorresolv code --- mirrors/models.py | 3 +-- mirrors/tests/test_mirrorresolv.py | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 mirrors/tests/test_mirrorresolv.py (limited to 'mirrors') diff --git a/mirrors/models.py b/mirrors/models.py index 795d0294..35347e7d 100644 --- a/mirrors/models.py +++ b/mirrors/models.py @@ -150,8 +150,7 @@ class CheckLocation(models.Model): @property def family(self): - info = socket.getaddrinfo(self.source_ip, None, 0, 0, 0, - socket.AI_NUMERICHOST) + info = socket.getaddrinfo(self.source_ip, None, 0, 0, 0, socket.AI_NUMERICHOST) families = [x[0] for x in info] return families[0] diff --git a/mirrors/tests/test_mirrorresolv.py b/mirrors/tests/test_mirrorresolv.py new file mode 100644 index 00000000..8b37e764 --- /dev/null +++ b/mirrors/tests/test_mirrorresolv.py @@ -0,0 +1,44 @@ +import mock + +from django.test import TestCase +from django.core.management import call_command + +from mirrors.tests import create_mirror_url + + +class MirrorCheckTest(TestCase): + def setUp(self): + self.mirror_url = create_mirror_url() + + def tearDown(self): + self.mirror_url.delete() + + @mock.patch('socket.getaddrinfo') + def test_ip4_ip6(self, getaddrinfo): + getaddrinfo.return_value = [(2, 1, 6, '', ('1.1.1.1', 0)), (10, 1, 6, '', ('1a01:3f8:132:1d96::1', 0, 0, 0))] + call_command('mirrorresolv') + self.mirror_url.refresh_from_db() + self.assertEqual(self.mirror_url.has_ipv4, True) + self.assertEqual(self.mirror_url.has_ipv6, True) + + @mock.patch('socket.getaddrinfo') + def test_ip4_only(self, getaddrinfo): + getaddrinfo.return_value = [(2, 1, 6, '', ('1.1.1.1', 0))] + call_command('mirrorresolv') + self.mirror_url.refresh_from_db() + self.assertEqual(self.mirror_url.has_ipv4, True) + self.assertEqual(self.mirror_url.has_ipv6, False) + + @mock.patch('socket.getaddrinfo') + def test_running_twice(self, getaddrinfo): + getaddrinfo.return_value = [(2, 1, 6, '', ('1.1.1.1', 0)), (10, 1, 6, '', ('1a01:3f8:132:1d96::1', 0, 0, 0))] + + # Check if values changed + with mock.patch('mirrors.management.commands.mirrorresolv.logger') as logger: + call_command('mirrorresolv', '-v3') + self.assertEqual(logger.debug.call_count, 4) + + # running again does not change any values. + with mock.patch('mirrors.management.commands.mirrorresolv.logger') as logger: + call_command('mirrorresolv', '-v3') + self.assertEqual(logger.debug.call_count, 3) -- cgit v1.2.3-55-g3dc8