FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit 98bae95b authored by msb's avatar msb
Browse files

Patched lookup's get_connection and mocked the connection's

invoke_method to return lookup results expected by the tests.
parent d8d3fc41
No related branches found
No related tags found
1 merge request!15The tests require a connection to the live lookup server
......@@ -2,9 +2,11 @@ import json
import sys
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from mock import patch, Mock
try:
from django.core.urlresolvers import reverse
except Exception:
except ImportError:
from django.urls import reverse
from django.test import TestCase, override_settings
from ucamlookup.models import LookupGroup
......@@ -13,12 +15,12 @@ from ucamlookup.utils import user_in_groups, get_users_from_query, return_visibl
validate_crsid_list, validate_groupid_list, get_connection
class UcamLookupTests(TestCase):
class UcamLookupOptionsTests(TestCase):
@override_settings(UCAMLOOKUP_HOST="mock_host", UCAMLOOKUP_PORT=80, UCAMLOOKUP_URL_BASE="/mock",
UCAMLOOKUP_CHECK_CERTS=False, UCAMLOOKUP_USERNAME="mock_username",
UCAMLOOKUP_PASSWORD="mock_password")
def test_optional_settins(self):
def test_optional_settings(self):
conn = get_connection()
self.assertEqual(conn.host, "mock_host")
self.assertEqual(conn.port, 80)
......@@ -27,6 +29,76 @@ class UcamLookupTests(TestCase):
self.assertEqual(conn.username, "mock_username")
self.assertEqual(conn.password, "mock_password")
class UcamLookupTests(TestCase):
def setUp(self):
# fixture for group 101888
mock_101888 = Mock(groupid='101888', title='CS Information Systems team')
# fixture for institution UIS
mock_uis = Mock(instid='UIS')
mock_uis.name = 'University Information Services'
# fixture for institution CL
mock_cl = Mock(instid='CL')
mock_cl.name = 'Department of Computer Science and Technology'
# patch the lookup get_connection()
self.patcher = patch('ucamlookup.utils.get_connection')
mock_get_connection = self.patcher.start()
# a mock result returned by invoke_method()
mock_result = Mock(error=None)
def side_effect(_, path, path_params, __, ___):
"""
Side effect method that mocks the lookup connection's invoke_method() and returns a
mock result.
"""
try:
path = path % path_params
except KeyError:
pass
if path == 'api/v1/person/crsid/amc203':
mock_result.person.visibleName = 'Dr Abraham Martin'
elif path == 'api/v1/person/crsid/jw35':
mock_result.person.visibleName = 'John Warbrick'
elif path == 'api/v1/person/crsid/test0001':
mock_result.person.visibleName = 'Test User 1'
elif path == 'api/v1/person/crsid/amc20311':
mock_result.person = None
elif path == 'api/v1/group/101888':
mock_result.group.title = 'CS Information Systems team'
elif path == 'api/v1/group/101923':
mock_result.group.title = 'UIS Finance team'
elif path == 'api/v1/group/203840928304982':
mock_result.group = None
elif path == 'api/v1/person/search':
mock_result.people = [
Mock(visibleName='Dr Abraham Martin', **{'identifier.value': 'amc203'})
]
elif path == 'api/v1/person/crsid/test0001/insts':
mock_result.institutions = []
elif path == 'api/v1/person/crsid/amc203/insts':
mock_result.institutions = [mock_cl]
elif path == 'api/v1/inst/all-insts':
mock_result.institutions = [mock_uis, mock_cl]
elif path == 'api/v1/inst/UIS':
mock_result.institution.name = mock_uis.name
elif path == 'api/v1/group/search':
mock_result.groups = [mock_101888]
elif path == 'api/v1/person/crsid/amc203/groups':
mock_result.groups = [mock_101888]
else:
self.fail("%s hasn't been mocked" % path)
return mock_result
# mock connection returned by get_connectgion()
mock_connection = Mock()
mock_connection.invoke_method.side_effect = side_effect
mock_get_connection.return_value = mock_connection
def test_add_name_to_user_and_add_title_to_group(self):
with self.assertRaises(User.DoesNotExist):
User.objects.get(username="amc203")
......@@ -93,8 +165,15 @@ class UcamLookupTests(TestCase):
def test_get_institutions_with_user(self):
amc203 = User.objects.create_user(username="amc203")
results = get_institutions(user=amc203)
self.assertEquals(("CL", "Department of Computer Science and Technology"), results[0])
self.assertIn(("UIS", "University Information Services"), results)
def test_get_institutions_with_non_existant_user(self):
all_institutions = get_institutions()
test0001 = User.objects.create_user(username="test0001")
results = get_institutions(user=test0001)
self.assertEqual(all_institutions, results)
def test_get_institution_name_by_id(self):
result = get_institution_name_by_id(institution_id="UIS")
self.assertEqual("University Information Services", result)
......@@ -104,11 +183,6 @@ class UcamLookupTests(TestCase):
result = get_institution_name_by_id(institution_id="UIS", all_institutions=all_institutions)
self.assertEqual("University Information Services", result)
test_user = User.objects.create_user(username="test0001")
results = get_institutions(user=test_user)
self.assertEqual(all_institutions, results)
def test_views_without_login(self):
response = self.client.get(reverse('ucamlookup_find_people'), {'query': 'amc203', 'searchId_u': '1'})
self.assertEqual(response.status_code, 302)
......@@ -190,3 +264,6 @@ class UcamLookupTests(TestCase):
with self.assertRaises(ValidationError):
validate_groupid_list(["kaskvdkam20e9mciasmdimadf"])
def tearDown(self):
self.patcher.stop()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment