示例#1
0
    def test_process_message_report(self):
        from zope.interface import directlyProvides
        from pyramid.testing import DummyModel
        from karl.models.interfaces import IPeopleDirectory
        INFO = {'targets': [{'report': 'section+testing',
                             'community': None,
                             'tool': None,}],
                'author': 'phreddy',
                'subject': 'Feedback'
               }
        text = 'This entry stinks!'
        attachments = [('foo.txt', 'text/plain', 'My attachment')]
        message = DummyMessage(INFO, text, attachments)
        self._set_up_queue([message,])

        mailin = self._makeOne()
        pd = mailin.root['people'] = DummyModel()
        directlyProvides(pd, IPeopleDirectory)
        section = pd['section'] = DummyModel()
        testing = section['testing'] = DummyModel()

        mailin()

        self.assertEqual(len(self.handlers), 1)
        handler = self.handlers[0]
        self.failUnless(handler.context is testing)
        self.assertEqual(handler.handle_args,
                         (message, INFO, text, attachments))
        self.assertEqual(len(self.mailer), 0)
示例#2
0
    def test_one_message_reply_no_attachments(self):
        from pyramid.testing import DummyModel
        info = {'targets': [{'report': None,
                            'community': 'testing',
                            'tool': 'random',
                            'in_reply_to': '7FFFFFFF', # token for docid 0
                            }],
                'author': 'phreddy',
                'subject': 'Feedback'
               }
        text = 'This entry stinks!'
        attachments = ()
        message = DummyMessage(info, text, attachments)
        self._set_up_queue([message,])

        mailin = self._makeOne()
        catalog = mailin.root.catalog = DummyCatalog()
        cf = mailin.root['communities'] = DummyModel()
        testing = cf['testing'] = DummyModel()
        tool = testing['random'] = DummyModel()
        entry = tool['entry'] = DummyModel()
        entry['comments'] = DummyModel()
        catalog.document_map._map[0] = '/communities/testing/random/entry'
        self.config.testing_resources(
            {'/communities/testing/random/entry': entry})

        mailin()

        self.assertEqual(len(self.handlers), 1)
        handler = self.handlers[0]
        self.assertEqual(handler.context, entry)
        self.assertEqual(handler.handle_args,
                         (message, info, text, attachments))
        self.assertEqual(len(self.mailer), 0)
示例#3
0
    def test_quarantine_message(self):
        from pyramid.testing import DummyModel
        info = {'targets': [{'community': 'testing',
                             'tool': 'random',
                             'in_reply_to': '7FFFFFFF', # token for docid 0
                             'author': 'phreddy',
                             }],
                'subject': 'Feedback',
                'exception': 'Not witty enough',
               }
        text = 'This entry stinks!'
        attachments = ()
        message = DummyMessage(info, text, attachments)
        self._set_up_queue([message,])

        mailin = self._makeOne()
        catalog = mailin.root.catalog = DummyCatalog()
        cf = mailin.root['communities'] = DummyModel()
        testing = cf['testing'] = DummyModel()
        tool = testing['random'] = DummyModel()
        entry = tool['entry'] = DummyModel()
        entry['comments'] = DummyModel()
        catalog.document_map._map[0] = '/communities/testing/random/entry'
        self.config.testing_resources(
            {'/communities/testing/random/entry': entry})

        mailin()
        q_message, error = self.queue.quarantined[0]
        self.assertEqual(q_message, message)
        self.failUnless('Not witty enough' in error)
        self.assertEqual(len(self.mailer), 1)
示例#4
0
    def test_bounce_reply_to_non_existing(self):
        from pyramid.testing import DummyModel
        info = {
            'targets': [{
                'report': None,
                'community': 'testing',
                'tool': 'random',
                'in_reply_to': '7FFFFFFF',  # token for docid 0
            }],
            'author':
            'phreddy',
            'subject':
            'Feedback'
        }
        text = 'This entry stinks!'
        attachments = ()
        message = DummyMessage(info, text, attachments)
        self._set_up_queue([
            message,
        ])

        mailin = self._makeOne()
        catalog = mailin.root.catalog = DummyCatalog()
        cf = mailin.root['communities'] = DummyModel()
        testing = cf['testing'] = DummyModel()
        tool = testing['random'] = DummyModel()
        mailin()

        self.assertEqual(self.queue.bounced,
                         [(message, None, 'Content no longer exists.', None)])
        self.assertEqual(len(self.mailer), 1)
示例#5
0
 def test___call___w_parent(self):
     from pyramid.testing import DummyModel
     from karl.testing import registerSettings
     registerSettings()
     parent = DummyModel()
     context = parent['foo'] = DummyModel()
     url = self._makeOne(context)
     self.assertEqual(url(), 'http://offline.example.com/app/foo')
示例#6
0
    def test_it(self):
        from datetime import datetime
        from datetime import timedelta
        from pyramid.testing import DummyModel
        request = testing.DummyRequest()

        site = testing.DummyModel()
        communities = site["communities"] = testing.DummyModel()
        community1 = communities["community1"] = testing.DummyModel()
        community1.title = "Test Community 1"
        community1.last_activity_date = datetime.now()

        community2 = communities["community2"] = testing.DummyModel()
        community2.title = "Test Community 2"
        community2.last_activity_date = datetime.now() - timedelta(2)

        community3 = communities["community3"] = testing.DummyModel()
        community3.title = "Test Community 3"
        community3.last_activity_date = datetime.now() - timedelta(1)

        request.context = context = site
        site["profiles"] = profiles = DummyModel()
        profiles["userid"] = DummyProfile()

        item1 = DummyModel()
        item1.__name__ = 'doc1'
        item1.title = 'Doc 1'
        item1.modified = datetime.now()

        item2 = DummyModel()
        item2.__name__ = 'doc2'
        item2.title = 'Doc 2'
        item2.modified = datetime.now() - timedelta(1)

        registerCatalogSearch(results={'modified_by=userid': [item1, item2]})

        response = self._callFUT(context, request)
        data = response['data']
        communities = data['panels'][0]['communities']
        recent = data['panels'][1]['contexts']
        self.assertEqual(data['profile_name'], 'firstname lastname')
        self.assertEqual(data['profile_url'],
                         'http://example.com/profiles/userid/')
        self.assertEqual(data['icon_url'],
                         'http://example.com/static/images/defaultUser.gif')
        self.assertEqual(data['logout_url'], 'http://example.com/logout.html')
        self.assertEqual(data['department'], '4a')
        self.assertEqual(data['position'], 'halfback')
        self.assertEqual(data['email'], '*****@*****.**')
        self.assertEqual(data['extension'], '911')
        self.assertEqual(data['phone'], '555-55555')
        self.assertEqual(len(communities), 3)
        self.assertEqual(len(recent), 2)
        self.assertEqual(communities[0]['title'], 'Test Community 1')
        self.assertEqual(communities[1]['title'], 'Test Community 3')
        self.assertEqual(communities[2]['title'], 'Test Community 2')
        self.assertEqual(recent[0]['title'], 'Doc 1')
        self.assertEqual(recent[1]['title'], 'Doc 2')
示例#7
0
 def _makeContext(self):
     from pyramid.testing import DummyModel
     from karl.testing import DummyCatalog
     parent = DummyModel(title='dummyparent',
                         catalog=DummyCatalog())
     context = DummyModel(title='dummytitle',
                          description='dummydescription')
     parent['dummytitle'] = context
     return parent, context
示例#8
0
 def test___call___w_parent_chain(self):
     from pyramid.testing import DummyModel
     from karl.testing import registerSettings
     registerSettings()
     root = self._makeRoot()
     foo = root['foo'] = DummyModel()
     context = foo['bar'] = DummyModel()
     url = self._makeOne(context)
     self.assertEqual(url(), 'http://offline.example.com/app/foo/bar')
示例#9
0
 def test___call___app_url_trailing_slash(self):
     from pyramid.interfaces import ISettings
     from pyramid.testing import DummyModel
     from karl.testing import registerUtility
     settings = dict(offline_app_url = "http://offline.example.com/app/")
     registerUtility(settings, ISettings)
     parent = DummyModel()
     context = parent['foo'] = DummyModel()
     url = self._makeOne(context)
     self.assertEqual(url(), 'http://offline.example.com/app/foo')
示例#10
0
    def setUp(self):
        cleanUp()

        self.parent = DummyModel(title='dummyparent')
        self.context = DummyModel(title='dummytitle', text='dummytext')
        self.context['attachments'] = DummyModel()
        self.parent['child'] = self.context
        self.parent.catalog = DummyCatalog()
        self.parent["profiles"] = DummyModel()
        users = self.parent.users = DummyUsers()
        users.add("userid", "userid", "password", [])
示例#11
0
文件: test_page.py 项目: lslaz1/karl
 def setUp(self):
     cleanUp()
     self.parent = DummyModel(title='dummyparent', sessions=DummySessions())
     self.context = DummyModel(title='dummytitle', text='dummytext')
     self.context['attachments'] = DummyModel()
     self.parent['child'] = self.context
     self.parent.catalog = DummyCatalog()
     request = testing.DummyRequest()
     request.environ['repoze.browserid'] = '1'
     self.request = request
     registerLayoutProvider()
示例#12
0
 def __init__(self):
     DummyModel.__init__(self)
     self[u'profiles'] = DummyModel()
     dummies = [
         (u'dummy1', u'Dummy One'),
         (u'dummy2', u'Dummy Two'),
         (u'dummy3', u'Dummy Three'),
     ]
     for dummy in dummies:
         self[u'profiles'][dummy[0]] = DummyModel(title=dummy[1])
     self[u'communities'] = DummyModel()
示例#13
0
 def _makeContext(self):
     from pyramid.testing import DummyModel
     from karl.testing import DummyCatalog
     from karl.testing import DummyOrdering
     parent = DummyModel(title='dummyparent',
                         ordering=DummyOrdering(),
                         catalog=DummyCatalog())
     context = DummyModel(title='dummytitle',
                          text='dummytext',
                          ordering=DummyOrdering())
     context['attachments'] = DummyModel()
     parent['child'] = context
     return parent, context
示例#14
0
 def test_get_user_by_login(self):
     from pyramid.testing import DummyModel
     from pyramid.testing import DummyRequest
     from zope.interface import directlyProvides
     from ...interfaces import IFolder
     context = DummyModel()
     directlyProvides(context, IFolder)
     principals = context['principals'] = DummyModel(__is_service__=True)
     directlyProvides(principals, IFolder)
     users = principals['users'] = DummyModel()
     phred = users['phred'] = DummyModel()
     adapter = self._makeOne(context, DummyRequest())
     self.assertTrue(adapter.get_user_by_login('phred') is phred)
     self.assertTrue(adapter.get_user_by_login('bharney') is None)
示例#15
0
 def test_get_groupids(self):
     from pyramid.testing import DummyModel
     from pyramid.testing import DummyRequest
     from zope.interface import directlyProvides
     from ...interfaces import IFolder
     context = DummyModel()
     directlyProvides(context, IFolder)
     principals = context['principals'] = DummyModel(__is_service__=True)
     directlyProvides(principals, IFolder)
     users = principals['users'] = DummyModel()
     phred = users['phred'] = DummyModel()
     phred.groupids = ['phlyntstones']
     adapter = self._makeOne(context, DummyRequest())
     omap = context.__objectmap__ = DummyObjectMap(oid123=phred)
     self.assertEqual(adapter.get_groupids('oid123'), ['phlyntstones'])
示例#16
0
文件: test_page.py 项目: lslaz1/karl
    def setUp(self):
        cleanUp()

        # When you see:
        #   AttributeError: 'NoneType' object has no attribute 'url'
        # ...it is often because you are pointed at the wrong .pt
        self.template_fn = 'templates/show_page.pt'

        self.parent = DummyModel(title='dummyparent')
        self.context = DummyModel(title='dummytitle', text='dummytext')
        self.context['attachments'] = DummyModel()
        self.parent['child'] = self.context
        self.parent.catalog = DummyCatalog()
        karl.testing.registerDummyRenderer(
            'karl.views:templates/formfields.pt')
示例#17
0
 def test_get_user_by_userid(self):
     from pyramid.testing import DummyModel
     from pyramid.testing import DummyRequest
     from zope.interface import directlyProvides
     from ...interfaces import IFolder
     context = DummyModel()
     directlyProvides(context, IFolder)
     principals = context['principals'] = DummyModel(__is_service__=True)
     directlyProvides(principals, IFolder)
     users = principals['users'] = DummyModel()
     phred = users['phred'] = DummyModel()
     adapter = self._makeOne(context, DummyRequest())
     omap = context.__objectmap__ = DummyObjectMap(oid123=phred)
     self.assertTrue(adapter.get_user_by_userid('oid123') is phred)
     self.assertTrue(adapter.get_user_by_userid('nonesuch') is None)
示例#18
0
    def test_creator_is___name__(self):
        from pyramid.testing import DummyModel
        profiles = DummyModel()
        inst = profiles['flinty'] = self._makeOne(firstname='fred',
                                                  lastname='flintstone ')

        self.assertEqual(inst.creator, 'flinty')
示例#19
0
    def test_handle_no_email_attachments(self):
        from pyramid.testing import DummyModel
        from karl.models.interfaces import IComment
        import datetime
        self._registerFactory(IComment, DummyModel)
        self._registerContextURL()
        self._registerSettings()
        alerts = self._registerAlerts()
        workflow = self._registerSecurityWorkflow()
        context = _makeBlogEntryClass()('foo', 'foo', 'foo', 'foo')
        comments = context['comments'] = DummyModel()
        comments.next_id = '1'
        adapter = self._makeOne(context)
        message = object()  # ignored
        info = {
            'subject': 'SUBJECT',
            'author': 'phreddy',
            'date': datetime.datetime(2010, 5, 12, 2, 42)
        }

        adapter.handle(message, info, 'TEXT', [])

        self.assertEqual(len(comments), 1)
        comment_id, comment = comments.items()[0]
        self.assertEqual(comment_id, '1')
        self.assertEqual(comment.title, 'SUBJECT')
        self.assertEqual(comment.creator, 'phreddy')
        self.assertEqual(comment.text, 'TEXT')
        self.assertEqual(comment.description, 'TEXT')
        self.assertEqual(comment.created,
                         datetime.datetime(2010, 5, 12, 2, 42))
        self.failIf('attachments' in comment)

        self.assertEqual(len(alerts.emissions), 1)
        self.failUnless(workflow.initialized)
示例#20
0
    def test_handle_no_email_attachments(self):
        import datetime
        from pyramid.testing import DummyModel
        from karl.content.interfaces import IBlogEntry
        self._set_NOW(datetime.datetime(2009, 01, 28, 10, 00, 00))
        self._registerFactory(IBlogEntry, _makeBlogEntryClass())
        self._registerContextURL()
        self._registerSettings()
        alerts = self._registerAlerts()
        workflow = self._registerSecurityWorkflow()
        context = DummyModel()
        adapter = self._makeOne(context)
        message = object()  # ignored
        info = {
            'subject': 'SUBJECT',
            'author': 'phreddy',
            'date': datetime.datetime(2010, 5, 12, 2, 42)
        }

        adapter.handle(message, info, 'TEXT', [])

        self.assertEqual(len(context), 1)
        entry_id, entry = context.items()[0]
        self.assertEqual(entry_id, 'subject')
        self.assertEqual(entry.title, 'SUBJECT')
        self.assertEqual(entry.creator, 'phreddy')
        self.assertEqual(entry.text, 'TEXT')
        self.assertEqual(entry.description, 'TEXT')
        self.assertEqual(entry.created, datetime.datetime(2010, 5, 12, 2, 42))
        self.failIf(len(entry['attachments']))

        self.assertEqual(len(alerts.emissions), 1)
        self.assertEqual(alerts.emissions,
                         [(entry, 'http://offline.example.com/app/subject')])
        self.failUnless(workflow.initialized)
示例#21
0
 def test_w_all_attrs(self):
     from pyramid.testing import DummyModel
     ATTR_NAMES = [
         '__name__',
         'firstname',
         'lastname',
         'email',
         'phone',
         'extension',
         'department',
         'position',
         'organization',
         'location',
         'country',
         'website',
         'languages',
         'office',
         'room_no',
         'biography',
     ]
     ATTR_VALUES = [x.upper() for x in ATTR_NAMES]
     mapping = dict(zip(ATTR_NAMES, ATTR_VALUES))
     mapping['title'] = 'TITLE'
     profile = DummyModel(**mapping)
     callable = self._callFUT(profile)
     self.assertEqual(callable(), ('TITLE', '\n'.join(ATTR_VALUES)))
示例#22
0
 def test_w_latin1_attrs(self):
     from pyramid.testing import DummyModel
     FIRSTNAME = u'Phr\xE9d'
     profile = DummyModel(title='title',
                          firstname=FIRSTNAME.encode('latin1'))
     callable = self._callFUT(profile)
     self.assertEqual(callable(), ('title', FIRSTNAME))
示例#23
0
    def test_handle_submit(self):
        from pyramid.testing import DummyModel
        from karl.testing import DummyCatalog
        from karl.testing import DummyOrdering
        from karl.testing import DummyTags
        context = DummyModel(
            tags=DummyTags(),
            catalog=DummyCatalog(),
            ordering=DummyOrdering(),
        )
        converted = {
            'title': u'Ref Manual Title',
            'tags': [u'foo', u'bar'],
            'description': u'ref manual description',
        }
        controller = self._makeOne(context=context)
        self._registerFactory(controller)
        response = controller.handle_submit(converted)

        self.failUnless(u'ref-manual-title' in context)
        manual = context[u'ref-manual-title']
        self.assertEqual(manual.title, u'Ref Manual Title')
        self.assertEqual(manual.description, u'ref manual description')
        self.assertEqual(context.tags._called_with[1]['tags'],
                         [u'foo', u'bar'])
示例#24
0
 def test_my_view(self):
     from pyramid.testing import DummyModel
     from pyramid.testing import DummyRequest
     context = DummyModel()
     request = DummyRequest()
     info = self._callFUT(context, request)
     self.assertEqual(info['purl'], 'http://example.com/')
示例#25
0
 def test_short_address_overridden(self):
     from pyramid.testing import DummyModel
     parent = DummyModel(__name__='testing')
     mlist = self._makeOne()
     mlist.__parent__ = parent
     mlist.short_address = 'overridden'
     self.assertEqual(mlist.short_address, 'overridden')
示例#26
0
文件: test_page.py 项目: lslaz1/karl
 def factory(title, text, description, creator):
     page = DummyPage(title=title,
                      text=text,
                      description=description,
                      creator=creator)
     page['attachments'] = DummyModel()
     return page
示例#27
0
 def test___call___app_url_trailing_slash(self):
     from pyramid.testing import DummyModel
     root = self._makeRoot()
     root.settings['site_url'] = "http://offline.example.com/app/"
     context = root['foo'] = DummyModel()
     url = self._makeOne(context)
     self.assertEqual(url(), 'http://offline.example.com/app/foo')
示例#28
0
 def _makeModel(self, name=None, parent=None, principals=('phreddy', )):
     from pyramid.testing import DummyModel
     model = DummyModel()
     if parent is not None:
         parent[name] = model
     if principals:
         model.__acl__ = [self._makeACE(principal=x) for x in principals]
     return model
示例#29
0
 def _makeOne(self, context=None, request=None):
     from pyramid.testing import DummyModel
     from pyramid.testing import DummyRequest
     if context is None:
         context = DummyModel(text='<p>dummy</p>')
     if request is None:
         request = DummyRequest()
     return self._getTargetClass()(context, request)
示例#30
0
 def __init__(self, title, text, description, creator):
     DummyModel.__init__(self,
                         title=title,
                         text=text,
                         description=description,
                         creator=creator)
     if init_attachments:
         self['attachments'] = DummyModel()