Esempio n. 1
0
    def test_handle_submit_titlechange(self):
        from karl.testing import DummyCatalog

        self._register()
        converted = {
            "text": "text",
            "title": "newtitle",
            "sendalert": True,
            "security_state": "public",
            "tags": "thetesttag",
        }
        context = testing.DummyModel(title="oldtitle")
        context.text = "oldtext"

        def change_title(newtitle):
            context.title = newtitle

        context.change_title = change_title
        context.catalog = DummyCatalog()
        request = testing.DummyRequest()
        from karl.models.interfaces import IObjectModifiedEvent
        from zope.interface import Interface

        L = testing.registerEventListener((Interface, IObjectModifiedEvent))
        testing.registerDummySecurityPolicy("testeditor")
        controller = self._makeOne(context, request)
        response = controller.handle_submit(converted)
        self.assertEqual(L[0], context)
        self.assertEqual(L[1].object, context)
        self.assertEqual(response.location, "http://example.com/?status_message=Wiki%20Page%20edited")
        self.assertEqual(context.text, "text")
        self.assertEqual(context.modified_by, "testeditor")
        self.assertEqual(context.title, "newtitle")
Esempio n. 2
0
 def test_add_group_unchanged_does_not_fire_IUserAddedGroup(self):
     from karl.models.interfaces import IUserAddedGroup
     events = testing.registerEventListener(IUserAddedGroup)
     ku = self._makeOne(self)
     ku.add('userid', 'login_name', 'password', ('group_1',))
     ku.add_group('userid', 'group_1')
     self.assertEqual(len(events), 0)
Esempio n. 3
0
 def test___delitem___emits_no_events(self):
     obj = self._make_one()
     obj['foo'] = testing.DummyModel()
     events = testing.registerEventListener()
     del events[:]
     del obj['foo']
     self.failIf(events)
Esempio n. 4
0
 def test_remove_group_unchanged_does_not_fire_IUserRemovedGroup(self):
     from opencore.models.interfaces import IUserRemovedGroup
     events = testing.registerEventListener(IUserRemovedGroup)
     ku = self._makeOne(self)
     ku.add('userid', 'login_name', 'password', ('group_1', 'group_2'))
     ku.remove_group('userid', 'nonesuch')
     self.assertEqual(len(events), 0)
Esempio n. 5
0
 def test_handle_submit_titlechange(self):
     from karl.testing import DummyCatalog
     self._register()
     converted = {
         'text':'text',
         'title':'newtitle',
         'sendalert': True,
         'security_state': 'public',
         'tags': 'thetesttag',
         }
     context = testing.DummyModel(title='oldtitle')
     context.text = 'oldtext'
     def change_title(newtitle):
         context.title = newtitle
     context.change_title = change_title
     context.catalog = DummyCatalog()
     request = testing.DummyRequest()
     from karl.models.interfaces import IObjectModifiedEvent
     from zope.interface import Interface
     L = testing.registerEventListener((Interface, IObjectModifiedEvent))
     testing.registerDummySecurityPolicy('testeditor')
     controller = self._makeOne(context, request)
     response = controller.handle_submit(converted)
     self.assertEqual(L[0], context)
     self.assertEqual(L[1].object, context)
     self.assertEqual(
         response.location,
         'http://example.com/?status_message=Wiki%20Page%20edited')
     self.assertEqual(context.text, 'text')
     self.assertEqual(context.modified_by, 'testeditor')
     self.assertEqual(context.title, 'newtitle')
Esempio n. 6
0
 def test_add_fires_IUserAdded(self):
     from karl.models.interfaces import IUserAdded
     events = testing.registerEventListener(IUserAdded)
     ku = self._makeOne(self)
     ku.add('userid', 'login_name', 'password', ('group_1',))
     self.assertEqual(len(events), 1)
     self.failUnless(events[0].site is self)
     self.assertEqual(events[0].id, 'userid')
     self.assertEqual(events[0].login, 'login_name')
     self.assertEqual(len(events[0].groups), 1)
     self.failUnless('group_1' in events[0].groups)
Esempio n. 7
0
 def test_handle_submit_events(self):
     from zope.interface import Interface
     from karl.models.interfaces import IObjectModifiedEvent
     from karl.models.interfaces import IObjectWillBeModifiedEvent
     context = testing.DummyModel(
         title='oldtitle', description='oldescription',
         default_tool='overview')
     request = testing.DummyRequest()
     L = testing.registerEventListener((Interface, IObjectModifiedEvent))
     L2 = testing.registerEventListener((Interface,
                                         IObjectWillBeModifiedEvent))
     self._register()
     view = self._makeOne(context, request)
     converted = {'title':u'Thetitle yo',
                  'description':'thedescription',
                  'text':'thetext',
                  'security_state':'public',
                  'default_tool': 'files',
                  'tags': 'thetesttag',
                  'tools':[],
                   }
     view.handle_submit(converted)
     self.assertEqual(len(L), 2)
     self.assertEqual(len(L2), 2)
Esempio n. 8
0
 def test_remove_group_fires_IUserRemovedGroup(self):
     from karl.models.interfaces import IUserRemovedGroup
     events = testing.registerEventListener(IUserRemovedGroup)
     ku = self._makeOne(self)
     ku.add('userid', 'login_name', 'password', ('group_1', 'group_2'))
     ku.remove_group('userid', 'group_2')
     self.assertEqual(len(events), 1)
     self.assertEqual(events[0].id, 'userid')
     self.assertEqual(events[0].login, 'login_name')
     groups = events[0].groups
     self.assertEqual(len(groups), 1)
     self.failUnless(events[0].site is self)
     self.failUnless('group_1' in groups)
     old_groups = events[0].old_groups
     self.assertEqual(len(old_groups), 2)
     self.failUnless('group_1' in old_groups)
     self.failUnless('group_2' in old_groups)
Esempio n. 9
0
    def test_handle_submit_valid_nofile_noremove(self):
        from karl.models.interfaces import ISite
        from zope.interface import directlyProvides
        from schemaish.type import File as SchemaFile
        from karl.models.interfaces import IObjectModifiedEvent
        from karl.content.interfaces import ICommunityFile
        from repoze.lemonade.interfaces import IContentFactory

        self._register()

        context = DummyFile(title='oldtitle')
        context.__name__ = None
        context.__parent__ = None
        context.mimetype = 'old/type'
        context.filename = 'old_name'
        context.stream = 'old'
        context.sessions = DummySessions()
        context.catalog = DummyCatalog()
        directlyProvides(context, ISite)
        converted = {
            'title': 'new title',
            'file': SchemaFile(None, None, None),
            'security_state': 'public',
            'tags': ['thetesttag'],
            }
        testing.registerAdapter(lambda *arg: DummyCommunityFile,
                                (ICommunityFile,),
                                IContentFactory)
        L = testing.registerEventListener((Interface, IObjectModifiedEvent))
        testing.registerDummySecurityPolicy('testeditor')
        request = self._makeRequest()
        controller = self._makeOne(context, request)
        response = controller.handle_submit(converted)
        self.assertEqual(response.location,
                         'http://example.com/?status_message=File+changed')
        self.assertEqual(len(L), 2)
        self.assertEqual(context.title, u'new title')
        self.assertEqual(context.mimetype, 'old/type')
        self.assertEqual(context.filename, 'old_name')
        self.assertEqual(L[0], context)
        self.assertEqual(L[1].object, context)
        self.assertEqual(context.stream, 'old')
        self.assertEqual(context.modified_by, 'testeditor')
Esempio n. 10
0
    def test_handle_submit(self):
        from karl.testing import DummyUpload
        context = testing.DummyModel(
            title='oldtitle',
            text='oldtext',
            )

        upload = DummyUpload(filename='test.txt')

        converted = {
            'title':'newtitle',
            'text':'newtext',
            'tags':[],
            'security_state':'public',
            'attachments':[DummyUpload()],
            }
        from karl.content.interfaces import ICommunityFile
        from repoze.lemonade.testing import registerContentFactory
        def factory(**args):
            res = testing.DummyModel(**args)
            res.size = 10
            return res
        registerContentFactory(factory, ICommunityFile)
        context['attachments'] = testing.DummyModel()
        context.catalog = DummyCatalog()
        context.sessions = DummySessions()
        from karl.models.interfaces import IObjectModifiedEvent
        L = testing.registerEventListener((Interface, IObjectModifiedEvent))
        request = testing.DummyRequest()
        request.environ['repoze.browserid'] = '1'
        controller = self._makeOne(context, request)
        response = controller.handle_submit(converted)
        self.assertEqual(response.location,
            'http://example.com/?status_message=Forum+Topic+Edited')
        self.assertEqual(L[0], context)
        self.assertEqual(L[1].object, context)
        self.assertEqual(context.title, 'newtitle')
        self.assertEqual(context.text, 'newtext')
        self.assertEqual(len(context['attachments']), 1)
        self.assertEqual(context['attachments'].keys(), ['test.txt'])
        self.assertEqual(
            context['attachments']['test.txt'].mimetype, 'text/plain')
Esempio n. 11
0
 def test_handle_submit(self):
     converted = {
         'title':'newtitle',
         'description':'newdescription',
         }
     context = testing.DummyModel(
         title='oldtitle', description='olddescription')
     context.catalog = DummyCatalog()
     from karl.models.interfaces import IObjectModifiedEvent
     L = testing.registerEventListener((Interface, IObjectModifiedEvent))
     testing.registerDummySecurityPolicy('testeditor')
     request = testing.DummyRequest()
     controller = self._makeOne(context, request)
     response = controller.handle_submit(converted)
     self.assertEqual(L[0], context)
     self.assertEqual(L[1].object, context)
     self.assertEqual(response.location,
                      'http://example.com/?status_message=Forum+Edited')
     self.assertEqual(context.title, 'newtitle')
     self.assertEqual(context.description, 'newdescription')
     self.assertEqual(context.modified_by, 'testeditor')
Esempio n. 12
0
 def test_handle_submit_attachment_is_None(self):
     """
     There seems to be some set of circumstances under which formish will
     return a None as a value in the attachments sequence.
     """
     from schemaish.type import File as SchemaFile
     from karl.models.interfaces import IObjectModifiedEvent
     from zope.interface import Interface
     from karl.models.interfaces import ITagQuery
     from karl.content.interfaces import IBlogEntry
     from repoze.lemonade.testing import registerContentFactory
     from karl.testing import DummyCatalog
     testing.registerAdapter(DummyTagQuery, (Interface, Interface),
                             ITagQuery)
     self._registerDummyWorkflow()
     context = DummyBlogEntry()
     context.sessions = DummySessions()
     context.__name__ ='ablogentry'
     context.catalog = DummyCatalog()
     context['attachments'] = testing.DummyModel()
     from karl.models.interfaces import ISite
     from zope.interface import directlyProvides
     directlyProvides(context, ISite)
     converted = {'title':'foo',
                  'text':'text',
                  'security_state':'public',
                  'tags':'thetesttag',
                  'attachments':[None],
                  }
     registerContentFactory(DummyBlogEntry, IBlogEntry)
     L = testing.registerEventListener((Interface, IObjectModifiedEvent))
     testing.registerDummySecurityPolicy('testeditor')
     request = self._makeRequest()
     controller = self._makeOne(context, request)
     response = controller.handle_submit(converted)
     self.assertEqual(response.location, 'http://example.com/ablogentry/')
     self.assertEqual(len(L), 2)
     self.assertEqual(context.title, 'foo')
     self.assertEqual(context.text, 'text')
     self.assertEqual(context.modified_by, 'testeditor')
Esempio n. 13
0
 def test_handle_submit(self):
     self._register()
     from karl.models.interfaces import IObjectModifiedEvent
     request = testing.DummyRequest()
     context = testing.DummyModel(title='oldtitle')
     context.catalog = DummyCatalog()
     request = testing.DummyRequest()
     converted = {
         'title':'new title',
         'security_state': 'private',
         'tags': ['thetesttag'],
         }
     L = testing.registerEventListener((Interface, IObjectModifiedEvent))
     testing.registerDummySecurityPolicy('testeditor')
     controller = self._makeOne(context, request)
     response = controller.handle_submit(converted)
     msg = 'http://example.com/?status_message=Folder+changed'
     self.assertEqual(response.location, msg)
     self.assertEqual(context.title, u'new title')
     self.assertEqual(L[0], context)
     self.assertEqual(L[1].object, context)
     self.assertEqual(context.modified_by, 'testeditor')
Esempio n. 14
0
    def test_submitted_valid(self):
        self._registerSecurityWorkflow()

        blog_entry = DummyBlogEntry()
        context = blog_entry.comments
        context.__name__ = 'thecomment'
        context.text = 'yup'
        request = testing.DummyRequest(
            params={
                'form.submitted': '1',
                'add_comment': 'Some Text',
                'security_state': 'public',
                }
            )
        L = testing.registerEventListener((Interface, Interface))
        testing.registerDummySecurityPolicy('testeditor')
        response = self._callFUT(context, request)
        self.assertEqual(context.text, 'Some Text')
        self.assertEqual(len(L), 4)
        self.assertEqual(response.location,
                         'http://example.com/thecomment/')
        self.assertEqual(context.modified_by, 'testeditor')
Esempio n. 15
0
    def test_submitted_valid(self):
        self._registerTagbox()
        self._registerLayoutProvider()

        request = DummyRequest(
            MultiDict(
                {"form.submitted": "1", "title": "newtitle", "description": "newdescription", "tags": "thetesttag"}
            )
        )
        context = self.context

        L = registerEventListener((Interface, IObjectModifiedEvent))

        testing.registerDummySecurityPolicy("testeditor")
        response = self._callFUT(context, request)

        self.assertEqual(L[0], context)
        self.assertEqual(L[1].object, context)
        msg = "http://example.com/child/?status_message=Reference%20section%20edited"
        self.assertEqual(response.location, msg)
        self.assertEqual(context.title, "newtitle")
        self.assertEqual(context.description, "newdescription")
        self.assertEqual(context.modified_by, "testeditor")