コード例 #1
0
    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
            }
コード例 #2
0
ファイル: EnumeratorTest.py プロジェクト: sipb/simple-mit
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'