Пример #1
0
    def test_submit_form(self):
        from repoze.sendmail.interfaces import IMailDelivery
        testing.registerDummyRenderer("templates/join_community.pt")

        c = karltesting.DummyCommunity()
        c.moderator_names = set(["moderator1", "moderator2"])
        site = c.__parent__.__parent__
        profiles = site["profiles"] = testing.DummyModel()
        profiles["user"] = karltesting.DummyProfile()
        profiles["moderator1"] = karltesting.DummyProfile()
        profiles["moderator2"] = karltesting.DummyProfile()

        mailer = karltesting.DummyMailer()
        testing.registerUtility(mailer, IMailDelivery)

        testing.registerDummySecurityPolicy("user")
        request = testing.DummyRequest({
            "form.submitted": "1",
            "message": "Message text.",
        })
        testing.registerDummyRenderer(
            'karl.views:templates/email_join_community.pt')
        response = self._callFUT(c, request)

        self.assertEqual(response.location,
                         "http://example.com/communities/community/"
                         "?status_message=Your+request+has+been+sent+"
                         "to+the+moderators.")
        self.assertEqual(len(mailer), 1)
        msg = mailer.pop()
        self.assertEqual(msg.mto, ["*****@*****.**",
                                   "*****@*****.**"])
Пример #2
0
    def test_getMessageTarget_report_alias_w_subdomain(self):
        from repoze.bfg.interfaces import ISettings
        from repoze.bfg.testing import registerUtility
        from repoze.bfg.traversal import model_path
        from zope.interface import directlyProvides
        from karl.models.interfaces import IPeopleDirectory
        class DummySettings:
            system_list_subdomain = 'lists.example.com'
        registerUtility(DummySettings(), ISettings)
        context = self._makeRoot()
        cf = context['communities'] = self._makeContext()
        cf['testing'] = self._makeContext()
        pd = context['people'] = self._makeContext()
        directlyProvides(pd, IPeopleDirectory)
        section = pd['section'] = self._makeContext()
        extant = section['extant'] = self._makeContext()
        context.list_aliases['testing'] = model_path(extant)
        mailin = self._makeOne(context)
        message = DummyMessage()
        message.to = ('*****@*****.**',)

        info = mailin.getMessageTargets(message)

        self.failIf(info.get('error'), info)
        targets = info['targets']
        self.assertEqual(len(targets), 1)
        info = targets[0]
        self.assertEqual(info['report'], 'section+extant')
        self.assertEqual(info['community'], None)
        self.assertEqual(info['tool'], None)
        self.failIf(info.get('in_reply_to'), info)
Пример #3
0
 def test_known_kind_no_text_term(self):
     from webob.multidict import MultiDict
     from karl.models.interfaces import IGroupSearchFactory
     from repoze.lemonade.testing import registerContentFactory
     from zope.interface import Interface
     content = DummyCommunityContent()
     def search_factory(*arg, **kw):
         return DummySearchFactory(content)
     search_factory.icon = 'foo.jpg'
     search_factory.advanced_search = True
     testing.registerUtility(
         search_factory, IGroupSearchFactory, name='People')
     context = testing.DummyModel()
     context.catalog = {}
     context['profiles'] = profiles = testing.DummyModel()
     profiles['tweedle dee'] = testing.DummyModel(title='Tweedle Dee')
     request = testing.DummyRequest(
         params=MultiDict({'kind':'People'}))
     from karl.models.interfaces import ICatalogSearch
     from karl.views.interfaces import IAdvancedSearchResultsDisplay
     registerContentFactory(DummyContent, IDummyContent)
     testing.registerAdapter(DummySearch, (Interface),
                             ICatalogSearch)
     testing.registerAdapter(DummySearchResultsDisplay,
                             (Interface, Interface),
                             IAdvancedSearchResultsDisplay)
     result = self._callFUT(context, request)
     self.assertEqual(result['terms'], ['People'])
     self.assertEqual(len(result['results']), 1)
Пример #4
0
    def test_comment_ordering(self):
        context = DummyBlogEntry()
        context['comments']['2'] = DummyComment(now=1233149510, text=u'before')
        from karl.models.interfaces import ISite
        from zope.interface import directlyProvides
        from karl.testing import DummyProfile
        directlyProvides(context, ISite)
        from karl.content.interfaces import IBlog
        from zope.interface import alsoProvides

        alsoProvides(context, IBlog)
        context['profiles'] = profiles = testing.DummyModel()
        profiles['dummy'] = DummyProfile(title='Dummy Profile')
        request = testing.DummyRequest()
        def dummy_byline_info(context, request):
            return context
        from zope.interface import Interface
        from karl.content.views.interfaces import IBylineInfo
        testing.registerAdapter(dummy_byline_info, (Interface, Interface),
                                IBylineInfo)
        self._register()
        from karl.utilities.interfaces import IKarlDates
        testing.registerUtility(dummy, IKarlDates)
        renderer = testing.registerDummyRenderer('templates/show_blogentry.pt')
        self._callFUT(context, request)
        self.assertEqual(len(renderer.comments), 2)
        self.assertEqual('before', renderer.comments[0]['text'])
        self.assertEqual('sometext', renderer.comments[1]['text'])
Пример #5
0
 def test_handle_submit_already_in_community(self):
     from repoze.lemonade.testing import registerContentFactory
     from karl.models.interfaces import IInvitation
     from karl.utilities.interfaces import IRandomId
     request = testing.DummyRequest()
     context = self._makeCommunity()
     mailer = self._registerMailer()
     registerCatalogSearch()
     profile = karltesting.DummyProfile()
     profile.__name__ = 'a'
     registerCatalogSearch(results={'[email protected]': [profile,]})
     def nonrandom(size=6):
         return 'A' * size
     testing.registerUtility(nonrandom, IRandomId)
     registerContentFactory(DummyInvitation, IInvitation)
     controller = self._makeOne(context, request)
     converted = {
         'email_addresses': [u'*****@*****.**'],
         'text': u'some text',
         }
     response = controller.handle_submit(converted)
     self.assertEqual(response.location,
       'http://example.com/manage.html?status_message=One+user+already+member.'
                      )
     self.failIf('A'*6 in context)
     self.assertEqual(context.users.added_groups, [])
Пример #6
0
    def test_respect_alert_prefs(self):
        from repoze.sendmail.interfaces import IMailDelivery
        from repoze.bfg.interfaces import IRequest
        from karl.models.interfaces import IProfile
        from karl.testing import DummyMailer

        mailer = DummyMailer()
        testing.registerUtility(mailer, IMailDelivery)

        community = DummyCommunity()
        community["foo"] = context = testing.DummyModel()
        directlyProvides(context, IDummy)

        site = community.__parent__.__parent__
        site["profiles"] = profiles = testing.DummyModel()
        profiles["a"] = DummyProfile()
        profiles["b"] = DummyProfile()
        profiles["b"].set_alerts_preference(community.__name__,
                                            IProfile.ALERT_DIGEST)
        profiles["c"] = DummyProfile()
        profiles["c"].set_alerts_preference(community.__name__,
                                            IProfile.ALERT_NEVER)

        community.member_names = set(("a","c",))
        community.moderator_names = set(("b",))

        request = testing.DummyRequest()
        testing.registerAdapter(DummyEmailAlertAdapter,
                                (IDummy, IProfile, IRequest), IAlert)

        self._get_instance().emit(context, request)
        self.assertEqual(1, len(mailer))
        self.assertEqual(1, len(profiles["b"]._pending_alerts))
Пример #7
0
    def test_crackPayload_multiple_w_text(self):
        from repoze.bfg.testing import registerUtility
        from karl.utilities.interfaces import IMailinTextScrubber
        _called_with = []
        def _fooScrubber(text, text_mimetype=None):
            _called_with.append((text, text_mimetype))
            return text.upper()
        registerUtility(_fooScrubber, IMailinTextScrubber, 'foo')
        mailin = self._makeOne()
        mailin.text_scrubber = 'foo'
        message = DummyMessage()
        filepart = DummyMessage()
        filepart.filename = 'file1.bin'
        filepart.payload = '0123456789ABCDEF'
        filepart.content_type = 'application/octet-stream'
        textpart = DummyMessage()
        textpart.payload = 'payload'
        textpart.charset = 'rot13'
        textpart.content_type = 'text/plain'
        message.payload = (filepart, textpart)

        text, attachments = mailin.crackPayload(message)

        self.assertEqual(text, u'CNLYBNQ')
        self.assertEqual(len(attachments), 1)
        filename, mimetype, data = attachments[0]
        self.assertEqual(filename, 'file1.bin')
        self.assertEqual(mimetype, 'application/octet-stream')
        self.assertEqual(data, '0123456789ABCDEF')
        self.assertEqual(len(_called_with), 1)
        self.assertEqual(_called_with[0][0], 'cnlybnq')
        self.assertEqual(_called_with[0][1], 'text/plain')
Пример #8
0
    def test_no_security_policy(self):
        context = DummyBlogEntry()
        from karl.models.interfaces import ISite
        from zope.interface import directlyProvides
        from karl.testing import DummyProfile
        directlyProvides(context, ISite)
        from karl.content.interfaces import IBlog
        from zope.interface import alsoProvides

        alsoProvides(context, IBlog)
        context['profiles'] = profiles = testing.DummyModel()
        profiles['dummy'] = DummyProfile(title='Dummy Profile')
        request = testing.DummyRequest()
        def dummy_byline_info(context, request):
            return context
        from zope.interface import Interface
        from karl.content.views.interfaces import IBylineInfo
        testing.registerAdapter(dummy_byline_info, (Interface, Interface),
                                IBylineInfo)
        self._register()
        from karl.utilities.interfaces import IKarlDates
        testing.registerUtility(dummy, IKarlDates)
        renderer = testing.registerDummyRenderer('templates/show_blogentry.pt')
        self._callFUT(context, request)
        self.assertEqual(len(renderer.comments), 1)
        c0 = renderer.comments[0]
        self.assertEqual(c0['text'], 'sometext')

        self.assertEqual(d1, renderer.comments[0]['date'])
        self.assertEqual(c0['author_name'], 'Dummy Profile')
        self.assertEqual(renderer.comments[0]['edit_url'],
                         'http://example.com/blogentry/comments/1/edit.html')
Пример #9
0
    def test_handle_submit_new_to_karl(self):
        from repoze.lemonade.testing import registerContentFactory
        from karl.models.interfaces import IInvitation
        from karl.utilities.interfaces import IRandomId
        request = testing.DummyRequest()
        context = self._makeCommunity()
        mailer = self._registerMailer()
        registerCatalogSearch()
        def nonrandom(size=6):
            return 'A' * size
        testing.registerUtility(nonrandom, IRandomId)
        registerContentFactory(DummyInvitation, IInvitation)
        controller = self._makeOne(context, request)
        converted = {
            'email_addresses': [u'*****@*****.**'],
            'text': u'some text',
            }

        response = controller.handle_submit(converted)
        self.assertEqual(response.location,
          'http://example.com/manage.html?status_message=One+user+invited.++'
                         )
        invitation = context['A'*6]
        self.assertEqual(invitation.email, '*****@*****.**')
        self.assertEqual(1, len(mailer))
        self.assertEqual(mailer[0].mto, [u"*****@*****.**",])
Пример #10
0
 def test_configure_by_utility(self):
     from repoze.bfg.interfaces import ISettings
     testing.registerUtility(DummySettings(None), ISettings)
     logger = self._makeOne()
     self.assertEquals(logger._configured, False)
     logger(DummyQueryEvent())
     self.assertEquals(logger._configured, True)
     self.assertEquals(logger.log_dir, None)
Пример #11
0
 def test_with_settings_and_suppress_mail(self):
     from repoze.bfg.interfaces import ISettings
     from opencore.utilities.mailer import FakeMailDelivery
     settings = DummySettings()
     testing.registerUtility(settings, ISettings)
     os = FakeOS(SUPPRESS_MAIL='1')
     delivery = self._callFUT(os)
     self.assertEqual(delivery.__class__, FakeMailDelivery)
Пример #12
0
 def zztest_with_settings_for_real_messenger(self):
     from repoze.bfg.interfaces import ISettings
     from opencore.utilities.messenger import Messenger
     settings = DummySettings()
     testing.registerUtility(settings, ISettings)
     os = FakeOS()
     delivery = self._callFUT(os)
     self.assertEqual(delivery.__class__, Messenger) 
Пример #13
0
 def test_custom_logo_url(self):
     context = testing.DummyModel()
     request = testing.DummyRequest()
     from repoze.bfg.interfaces import ISettings
     settings = karltesting.DummySettings()
     settings.logo_path = 'mylogo.png'
     testing.registerUtility(settings, ISettings)
     api = self._makeOne(context, request)
     self.assertEqual(api.logo_url, api.static_url + '/mylogo.png')
Пример #14
0
 def test_mimeinfo_with_mimetype(self):
     def m(mimetype):
         return 123
     from karl.utilities.interfaces import IMimeInfo
     testing.registerUtility(m, IMimeInfo)
     context = testing.DummyModel(mimetype='abc')
     request = testing.DummyRequest()
     adapter = self._makeOne(context, request)
     self.assertEqual(adapter.mimeinfo, 123)
Пример #15
0
 def _register(self):
     d1 = 'Wednesday, January 28, 2009 08:32 AM'
     def dummy(date, flavor):
         return d1
     from karl.utilities.interfaces import IKarlDates
     testing.registerUtility(dummy, IKarlDates)
     from karl.models.interfaces import ITagQuery
     testing.registerAdapter(DummyTagQuery, (Interface, Interface),
                             ITagQuery)
Пример #16
0
    def _set_whitelist(self, white_list):
        from repoze.bfg.testing import registerUtility
        from repoze.bfg.interfaces import ISettings
        settings = DummySettings(mail_white_list=self.tmp_name)
        registerUtility(settings, ISettings)

        with open(self.tmp_name, "w") as f:
            for email in white_list:
                print >>f, email
Пример #17
0
    def setUp(self):
        self._cleanUp()

        from karl.utilities.interfaces import IAlerts
        from repoze.bfg.testing import registerUtility
        self.alerts = DummyAlerts()
        registerUtility(self.alerts, IAlerts)
        from karl.testing import registerSettings
        registerSettings()
Пример #18
0
 def zztest_send_to_suppressed_messenger(self):
     from repoze.bfg.interfaces import ISettings
     settings = DummySettings()
     testing.registerUtility(settings, ISettings)
     os = FakeOS(SUPPRESS_MESSENGER='1')
     delivery = self._callFUT(os)
     joe = DummyProfile(name='joe')
     delivery.quiet = False
     delivery.send("a", joe, "frankly I don't give a damn!") 
Пример #19
0
 def _register(self):
     from zope.interface import Interface
     from karl.utilities.interfaces import IKarlDates
     from karl.models.interfaces import ITagQuery
     testing.registerUtility(dummy, IKarlDates)
     testing.registerAdapter(DummyTagQuery, (Interface, Interface),
                             ITagQuery)
     from repoze.workflow.testing import registerDummyWorkflow
     registerDummyWorkflow('security')
Пример #20
0
 def _register(self):
     from zope.interface import Interface
     from karl.models.interfaces import ITagQuery
     from repoze.bfg.formish import IFormishRenderer
     testing.registerAdapter(DummyTagQuery, (Interface, Interface),
                             ITagQuery)
     def renderer(template, args):
         return ''
     testing.registerUtility(renderer, IFormishRenderer)
Пример #21
0
 def test_with_white_list(self):
     from tempfile import NamedTemporaryFile
     from repoze.bfg.interfaces import ISettings
     from opencore.utilities.mailer import WhiteListMailDelivery
     settings = DummySettings()
     f = NamedTemporaryFile()
     settings.mail_white_list = f.name
     testing.registerUtility(settings, ISettings)
     delivery = self._callFUT()
     self.assertEqual(delivery.__class__, WhiteListMailDelivery)
Пример #22
0
 def test_mail_queue_path_unspecified(self):
     import sys
     from repoze.bfg.interfaces import ISettings 
     settings = DummySettings()
     testing.registerUtility(settings, ISettings)
     delivery = self._callFUT()
     exe = sys.executable
     sandbox = os.path.dirname(os.path.dirname(os.path.abspath(exe)))
     queue_path = os.path.join(os.path.join(sandbox, "var"), "mail_queue")
     self.assertEqual(delivery.queuePath, queue_path)
Пример #23
0
 def test_with_converter(self):
     from karl.utilities.converters.interfaces import IConverter
     converter = DummyConverter('stuff')
     testing.registerUtility(converter, IConverter, 'mimetype')
     context = testing.DummyModel()
     context.title = 'Some Title'
     context.mimetype = 'mimetype'
     context.blobfile = DummyBlobFile()
     adapter = self._makeOne(context)
     self.assertEqual(adapter(), 'Some Title ' * 10 + 'stuff')
Пример #24
0
 def test_posted_date(self):
     context = DummyContext()
     from karl.utilities.interfaces import IKarlDates
     d1 = 'Wednesday, January 28, 2009 08:32 AM'
     def dummy(date, flavor):
         return d1
     testing.registerUtility(dummy, IKarlDates)
     request = testing.DummyRequest()
     adapter = self._makeOne(context, request)
     self.assertEqual(adapter.posted_date, context.posted_date)
Пример #25
0
 def _registerMailDelivery(self):
     from repoze.sendmail.interfaces import IMailDelivery
     class DummyMailDelivery:
         def __init__(self):
             self._sent = []
         def send(self, to, message):
             self._sent.append((to, message))
     md = DummyMailDelivery()
     testing.registerUtility(md, IMailDelivery)
     return md
Пример #26
0
 def setUp(self):
     from repoze.bfg.testing import registerUtility
     from opencore.models.interfaces import ISite
     testing.setUp()
     self._set_alerts_off()
     from opencore.utilities import mbox
     self.tx = mbox.transaction = DummyTransaction()
     self.root = testing.DummyModel()
     self.root['mailbox'] = testing.DummyModel()
     registerUtility(self.root, ISite)
Пример #27
0
 def _registerSecurityPolicy(self, permissions):
     if permissions is None:
         from repoze.bfg.testing import registerDummySecurityPolicy
         registerDummySecurityPolicy("userid")
     else:
         from repoze.bfg.interfaces import IAuthenticationPolicy
         from repoze.bfg.interfaces import IAuthorizationPolicy
         from repoze.bfg.testing import registerUtility
         policy = DummySecurityPolicy("userid", permissions=permissions)
         registerUtility(policy, IAuthenticationPolicy)
         registerUtility(policy, IAuthorizationPolicy)
Пример #28
0
    def _set_whitelist(self, white_list):
        import tempfile
        from repoze.bfg.testing import registerUtility
        from repoze.bfg.interfaces import ISettings
        tmp = self.tmp_file = tempfile.NamedTemporaryFile()
        settings = DummySettings(mail_white_list=tmp.name)
        registerUtility(settings, ISettings)

        for email in white_list:
            print >>tmp, email
        tmp.flush()
Пример #29
0
 def setUp(self):
     Base.setUp(self)
     self.request = testing.DummyRequest()
     self.context = self._makeContext()
     self.request.api = get_template_api(self.context, self.request)
     self.mailer = self._registerMailer()
     def nonrandom(size=6):
         return 'A' * size
     testing.registerUtility(nonrandom, IRandomId)
     registerContentFactory(DummyInvitation, IInvitation)
     self.context['profiles'] = self.profiles = DummyProfiles()
Пример #30
0
 def test___call___app_url_trailing_slash(self):
     from repoze.bfg.interfaces import ISettings
     from repoze.bfg.testing import DummyModel
     from repoze.bfg.testing import registerUtility
     class DummySettings(dict):
         offline_app_url = "http://offline.example.com/app/"
     registerUtility(DummySettings(), ISettings)
     parent = DummyModel()
     context = parent['foo'] = DummyModel()
     url = self._makeOne(context)
     self.assertEqual(url(), 'http://offline.example.com/app/foo')