def lookup_lists(self, key, cred): request = self.get_sendlist_link(key) with NamedTemporaryFile(prefix="siab_ccache_") as ccache: # Write the credentials into a krb5 ccache. ccache.write(make_ccache(cred)) ccache.flush() # Use Enumerator to get mailing list members enumerator = Enumerator({'test': True}) env = dict(os.environ) env['KRB5CCNAME'] = ccache.name valid = [] for mailing_list in request['lists']: result = enumerator.list_emails(mailing_list, env) if 'error' not in result and len(result['warnings']) == 0: self.ENV['db'].list_members.update( {'list': mailing_list}, {'$set': { 'members': '\n'.join(result['result']) }}, upsert=True) valid.append(mailing_list) # Check whether all lists have known members invalid = [] for mailing_list in request['lists']: if not self.ENV['db'].list_members.find_one( {'list': mailing_list}): invalid.append(mailing_list) sent = len(invalid) == 0 if sent: self.ENV['db'].email_pool.update( { '_id': request['message_id'], 'status': 'FAILED' }, {'$set': { 'status': 'VERIFIED' }}) return { 'valid': ', '.join(valid), 'invalid': ', '.join(invalid), 'sent': sent }
def run_tests(): TEST_ENV = { 'test': True, } enumerator = Enumerator(TEST_ENV) # hard-coded list of sample query, expected result tests = [('michaelx', ['*****@*****.**']), ('*****@*****.**', ['*****@*****.**']), ('next-code-admin', ['*****@*****.**', '*****@*****.**']), ('Next-Code-Admin', ['*****@*****.**', '*****@*****.**'])] num_failures = 0 for query, expected in tests: result = enumerator.list_emails(query)['result'] print 'testing ' + query + '...' if set(result) != set(expected): num_failures += 1 print 'ERROR: got', result, 'but expected', expected print 'Ran', len(tests), 'tests, got', num_failures, 'failures'