def test_given_unsuccessful_fed_id_search_then_error_raised(self, mock_ldap):
        fed_id = "not_a_fed123"

        ldap_inst = MagicMock()
        mock_ldap.initialize.return_value = ldap_inst
        ldap_inst.result.return_value = \
            (115, [(None, ['ldap://res02.fed.cclrc.ac.uk/DC=res02,DC=fed,DC=cclrc,DC=ac,DC=uk'])])

        with self.assertRaises(Exception):
            dls_module_contacts.lookup_contact_name(fed_id)
    def test_search_parameters_correct(self, mock_ldap):
        fed_id = "fed123"
        basedn = "dc=fed,dc=cclrc,dc=ac,dc=uk"
        search_filter = "(&(cn={}))".format(fed_id)
        search_attribute = ["givenName", "sn"]
        mock_ldap.SCOPE_SUBTREE.return_value = "test_scope_subtree"
        search_scope = mock_ldap.SCOPE_SUBTREE

        ldap_inst = MagicMock()
        mock_ldap.initialize.return_value = ldap_inst

        dls_module_contacts.lookup_contact_name(fed_id)

        mock_ldap.initialize.assert_called_once_with("ldap://altfed.cclrc.ac.uk")
        ldap_inst.search.assert_called_once_with(basedn, search_scope, search_filter, search_attribute)
    def test_given_successful_fed_id_search_then_no_error_raised(self, mock_ldap):
        fed_id = "fed123"

        ldap_inst = MagicMock()
        mock_ldap.initialize.return_value = ldap_inst
        ldap_inst.result.return_value = \
            (100, [('CN=<FED-ID>,OU=DLS,DC=fed,DC=cclrc,DC=ac,DC=uk',
                    {'givenName': ['<FirstName>'], 'sn': ['<Surname>']})])

        contact_name = dls_module_contacts.lookup_contact_name(fed_id)

        self.assertEqual(contact_name, "<FirstName> <Surname>")