コード例 #1
0
ファイル: test_members.py プロジェクト: iotest3/new
    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

        karltesting.registerUtility(nonrandom, IRandomId)
        registerContentFactory(DummyInvitation, IInvitation)
        controller = self._makeOne(context, request)
        converted = {
            'email_addresses': [u'*****@*****.**'],
            'text': u'some text',
        }

        karltesting.registerDummyRenderer(
            'karl.views:templates/email_invite_new.pt')
        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"*****@*****.**",
        ])
コード例 #2
0
ファイル: test_members.py プロジェクト: iotest3/new
    def test_handle_submit_inactive_user(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()
        self._registerMailer()
        registerCatalogSearch()
        profile = karltesting.DummyProfile(security_state='inactive')
        profile.__name__ = 'd'
        registerCatalogSearch(results={'[email protected]': [
            profile,
        ]})

        def nonrandom(size=6):
            return 'A' * size

        karltesting.registerUtility(nonrandom, IRandomId)
        registerContentFactory(DummyInvitation, IInvitation)
        controller = self._makeOne(context, request)
        converted = {
            'email_addresses': [u'*****@*****.**'],
            'text': u'some text',
        }
        karltesting.registerDummyRenderer(
            'karl.views:templates/email_add_existing.pt')
        from pyramid_formish import ValidationError
        self.assertRaises(ValidationError, controller.handle_submit, converted)
コード例 #3
0
    def test_submit_form(self):
        from repoze.sendmail.interfaces import IMailDelivery
        karltesting.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()
        karltesting.registerUtility(mailer, IMailDelivery)

        karltesting.registerDummySecurityPolicy("user")
        request = testing.DummyRequest({
            "form.submitted": "1",
            "message": "Message text.",
        })
        karltesting.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, ["*****@*****.**",
                                   "*****@*****.**"])
コード例 #4
0
ファイル: test_members.py プロジェクト: iotest3/new
 def test_handle_submit_resend(self):
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_invite_new.pt')
     context = self._makeCommunity()
     context.title = 'community'
     context.description = 'description'
     request = testing.DummyRequest()
     controller = self._makeOne(context, request)
     converted = {
         'members': [{
             'remove': False,
             'name': 'invitation',
             'resend': True,
             'moderator': False,
             'title': 'buz'
         }]
     }
     mailer = self._registerMailer()
     response = controller.handle_submit(converted)
     self.assertEqual(len(mailer), 1)
     self.assertEqual(
         response.location, 'http://example.com/communities/community/'
         'manage.html?status_message='
         'Membership+information+changed%3A+'
         'Resent+invitation+to+buz')
コード例 #5
0
    def test_submit_form(self):
        from repoze.sendmail.interfaces import IMailDelivery
        karltesting.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()
        karltesting.registerUtility(mailer, IMailDelivery)

        karltesting.registerDummySecurityPolicy("user")
        request = testing.DummyRequest({
            "form.submitted": "1",
            "message": "Message text.",
        })
        karltesting.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, ["*****@*****.**",
                                   "*****@*****.**"])
コード例 #6
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
        karltesting.registerUtility(nonrandom, IRandomId)
        registerContentFactory(DummyInvitation, IInvitation)
        controller = self._makeOne(context, request)
        converted = {
            'email_addresses': [u'*****@*****.**'],
            'text': u'some text',
            }

        karltesting.registerDummyRenderer(
            'karl.views:templates/email_invite_new.pt')
        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"*****@*****.**",])
コード例 #7
0
 def test_handle_submit_already_in_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()
     profile = karltesting.DummyProfile(security_state='active')
     profile.__name__ = 'd'
     registerCatalogSearch(results={'[email protected]': [profile,]})
     def nonrandom(size=6):
         return 'A' * size
     karltesting.registerUtility(nonrandom, IRandomId)
     registerContentFactory(DummyInvitation, IInvitation)
     controller = self._makeOne(context, request)
     converted = {
         'email_addresses': [u'*****@*****.**'],
         'text': u'some text',
         }
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     response = controller.handle_submit(converted)
     self.assertEqual(response.location,
       'http://example.com/manage.html?status_message=One+existing+Karl+user+added+to+community.++'
                      )
     self.failIf('A'*6 in context)
     self.assertEqual(context.users.added_groups,
                      [('d', 'group:community:members')])
コード例 #8
0
ファイル: test_acl.py プロジェクト: Falmarri/karl
 def test_workflow_transition_from_custom(self):
     registerDummyRenderer('templates/edit_acl.pt')
     from repoze.workflow.testing import DummyWorkflow
     from zope.interface import Interface
     from zope.interface import directlyProvides
     workflow = DummyWorkflow()
     def state_info(context, request):
         return [{'name': 'foo', 'current': True, 'transitions': True},
                 {'name': 'bar', 'current': False, 'transitions': True}]
     workflow.state_info = state_info
     def get_dummy_workflow(*args, **kw):
         return workflow
     import karl.views.acl
     old_f = karl.views.acl.get_context_workflow
     karl.views.acl.get_context_workflow = get_dummy_workflow
     try:
         context = testing.DummyModel()
         context.state = 'foo'
         context.__custom_acl__ = []
         directlyProvides(Interface)
         request = testing.DummyRequest()
         request.POST['form.security_state'] = 1
         request.POST['security_state'] = 'bar'
         self._callFUT(context, request)
         self.assertEqual(workflow.transitioned[0]['to_state'], 'bar')
         self.assertEqual(workflow.resetted, [context,])
         self.failIf(hasattr(context, '__custom_acl__'))
     finally:
         karl.views.acl.get_context_workflow = old_f
コード例 #9
0
ファイル: test_members.py プロジェクト: iotest3/new
    def test_handle_submit_already_in_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()
        self._registerMailer()
        registerCatalogSearch()
        profile = karltesting.DummyProfile(security_state='active')
        profile.__name__ = 'd'
        registerCatalogSearch(results={'[email protected]': [
            profile,
        ]})

        def nonrandom(size=6):
            return 'A' * size

        karltesting.registerUtility(nonrandom, IRandomId)
        registerContentFactory(DummyInvitation, IInvitation)
        controller = self._makeOne(context, request)
        converted = {
            'email_addresses': [u'*****@*****.**'],
            'text': u'some text',
        }
        karltesting.registerDummyRenderer(
            'karl.views:templates/email_add_existing.pt')
        response = controller.handle_submit(converted)
        self.assertEqual(
            response.location,
            'http://example.com/manage.html?status_message=One+existing+Karl+user+added+to+community.++'
        )
        self.failIf('A' * 6 in context)
        self.assertEqual(context.users.added_groups,
                         [('d', 'group:community:members')])
コード例 #10
0
 def test_handle_submit_success(self):
     from karl.models.interfaces import IProfile
     from repoze.lemonade.testing import registerContentFactory
     from repoze.sendmail.interfaces import IMailDelivery
     from repoze.workflow.testing import registerDummyWorkflow
     from karl.models.interfaces import ICommunity
     from zope.interface import directlyProvides
     workflow = registerDummyWorkflow('security')
     mailer = karltesting.DummyMailer()
     karltesting.registerUtility(mailer, IMailDelivery)
     registerContentFactory(DummyContent, IProfile)
     class DummyWhoPlugin(object):
         def remember(self, environ, identity):
             self.identity = identity
             return []
     request = self._makeRequest()
     community = testing.DummyModel()
     profiles = testing.DummyModel()
     community['profiles'] = profiles
     community.users = karltesting.DummyUsers()
     community.members_group_name = 'community:members'
     directlyProvides(community, ICommunity)
     context = self._makeContext()
     community['invite'] = context
     community.title = 'Community'
     community.description = 'Community'
     community.sessions = DummySessions()
     context.email = '*****@*****.**'
     controller = self._makeOne(context, request)
     converted = {'password':'******', 'password_confirm':'1',
                  'username':'******',
                  'firstname':'firstname', 'lastname':'lastname',
                  'phone':'phone', 'extension':'extension',
                  'department':'department', 'position':'position',
                  'organization':'organization', 'location':'location',
                  'country':'country', 'websites':['website'],
                  'languages':'languages', 'date_format':'en-US',
                  'biography':'bio',
                  }
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_accept_invitation.pt')
     response = controller.handle_submit(converted)
     self.assertEqual(response.location,
                      'http://example.com/?status_message=Welcome%21')
     self.assertEqual(community.users.added,
                      ('username', 'username', '1', ['community:members']))
     profiles = community['profiles']
     self.failUnless('username' in profiles)
     self.assertEqual(workflow.initialized,[profiles['username']])
     profile = profiles['username']
     self.assertEqual('phone', profile.phone)
     self.assertEqual('firstname', profile.firstname)
     self.assertEqual('lastname', profile.lastname)
     self.assertEqual('bio', profile.biography)
     self.failIf('invite' in community)
     self.assertEqual(len(mailer), 1)
コード例 #11
0
ファイル: test_community.py プロジェクト: Falmarri/karl
 def test_confirmed(self):
     request = testing.DummyRequest({'confirm':'1'})
     context = testing.DummyModel(title='oldtitle')
     parent = DummyParent()
     parent['thename'] = context
     parent.catalog = karltesting.DummyCatalog({})
     parent.users = karltesting.DummyUsers({})
     karltesting.registerDummyRenderer('templates/delete_resource.pt')
     self._register()
     karltesting.registerDummySecurityPolicy('userid')
     response = self._callFUT(context, request)
     self.assertEqual(parent.deleted, 'thename')
     self.assertEqual(response.location, 'http://example.com/')
コード例 #12
0
 def test_show_form(self):
     c = karltesting.DummyCommunity()
     site = c.__parent__.__parent__
     profiles = site["profiles"] = testing.DummyModel()
     profiles["user"] = karltesting.DummyProfile()
     renderer = karltesting.registerDummyRenderer("templates/join_community.pt")
     karltesting.registerDummySecurityPolicy("user")
     request = testing.DummyRequest()
     karltesting.registerDummyRenderer("karl.views:templates/formfields.pt")
     self._callFUT(c, request)
     self.assertEqual(renderer.profile, profiles["user"])
     self.assertEqual(renderer.community, c)
     self.assertEqual(renderer.post_url, "http://example.com/communities/community/join.html")
コード例 #13
0
    def test_not_confirmed(self):
        from karl.testing import registerLayoutProvider
        registerLayoutProvider()

        request = testing.DummyRequest()
        context = testing.DummyModel(title='oldtitle')
        context.__name__  = 'thename'
        context.catalog = karltesting.DummyCatalog({})
        context.users = karltesting.DummyUsers({})
        karltesting.registerDummyRenderer('templates/delete_resource.pt')
        self._register()
        response = self._callFUT(context, request)
        self.assertTrue(isinstance(response, dict))
コード例 #14
0
    def test_not_confirmed(self):
        from karl.testing import registerLayoutProvider
        registerLayoutProvider()

        request = testing.DummyRequest()
        context = testing.DummyModel(title='oldtitle')
        context.__name__  = 'thename'
        context.catalog = karltesting.DummyCatalog({})
        context.users = karltesting.DummyUsers({})
        karltesting.registerDummyRenderer('templates/delete_resource.pt')
        self._register()
        response = self._callFUT(context, request)
        self.assertTrue(isinstance(response, dict))
コード例 #15
0
    def test_not_confirmed(self):
        from karl.testing import registerLayoutProvider

        registerLayoutProvider()

        request = testing.DummyRequest()
        context = testing.DummyModel(title="oldtitle")
        context.__name__ = "thename"
        context.catalog = karltesting.DummyCatalog({})
        context.users = karltesting.DummyUsers({})
        karltesting.registerDummyRenderer("templates/delete_resource.pt")
        self._register()
        response = self._callFUT(context, request)
        self.assertEqual(response.status, "200 OK")
コード例 #16
0
ファイル: test_members.py プロジェクト: claytron/karl
 def test___call__with_userid_get(self):
     from repoze.sendmail.interfaces import IMailDelivery
     request = testing.DummyRequest({"user_id": "admin"})
     context = self._getContext()
     mailer = karltesting.DummyMailer()
     karltesting.registerUtility(mailer, IMailDelivery)
     controller = self._makeOne(context, request)
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     response = controller()
     self.assertEqual(context.users.added_groups, [('admin','members')])
     self.assertEqual(mailer[0].mto[0], '*****@*****.**')
     self.failUnless(
         response.location.startswith('http://example.com/manage.html'))
コード例 #17
0
 def test_confirmed(self):
     request = testing.DummyRequest({"confirm": "1"})
     context = testing.DummyModel(title="oldtitle")
     parent = DummyParent()
     parent["thename"] = context
     parent.catalog = karltesting.DummyCatalog({})
     parent.users = karltesting.DummyUsers({})
     parent["profiles"] = testing.DummyModel()
     karltesting.registerDummyRenderer("templates/delete_resource.pt")
     self._register()
     karltesting.registerDummySecurityPolicy("userid")
     response = self._callFUT(context, request)
     self.assertEqual(parent.deleted, "thename")
     self.assertEqual(response.location, "http://example.com/")
コード例 #18
0
ファイル: test_members.py プロジェクト: iotest3/new
 def test___call__with_userid_get(self):
     from repoze.sendmail.interfaces import IMailDelivery
     request = testing.DummyRequest({"user_id": "admin"})
     context = self._getContext()
     mailer = karltesting.DummyMailer()
     karltesting.registerUtility(mailer, IMailDelivery)
     controller = self._makeOne(context, request)
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     response = controller()
     self.assertEqual(context.users.added_groups, [('admin', 'members')])
     self.assertEqual(mailer[0].mto[0], '*****@*****.**')
     self.failUnless(
         response.location.startswith('http://example.com/manage.html'))
コード例 #19
0
 def test_confirmed(self):
     request = testing.DummyRequest({'confirm':'1'})
     context = testing.DummyModel(title='oldtitle')
     parent = DummyParent()
     parent['thename'] = context
     parent.catalog = karltesting.DummyCatalog({})
     parent.users = karltesting.DummyUsers({})
     parent['profiles'] = testing.DummyModel()
     karltesting.registerDummyRenderer('templates/delete_resource.pt')
     self._register()
     karltesting.registerDummySecurityPolicy('userid')
     response = self._callFUT(context, request)
     self.assertEqual(parent.deleted, 'thename')
     self.assertEqual(response.location, 'http://example.com/')
コード例 #20
0
 def test_handle_submit_success(self):
     from repoze.sendmail.interfaces import IMailDelivery
     request = testing.DummyRequest()
     context = self._getContext()
     mailer = karltesting.DummyMailer()
     karltesting.registerUtility(mailer, IMailDelivery)
     controller = self._makeOne(context, request)
     converted = {'users': (u'admin',), 'text':'some_text'}
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     response = controller.handle_submit(converted)
     self.assertEqual(context.users.added_groups, [('admin','members')])
     self.assertEqual(mailer[0].mto[0], '*****@*****.**')
     self.failUnless(
         response.location.startswith('http://example.com/manage.html'))
コード例 #21
0
ファイル: test_members.py プロジェクト: iotest3/new
 def test_handle_submit_success(self):
     from repoze.sendmail.interfaces import IMailDelivery
     request = testing.DummyRequest()
     context = self._getContext()
     mailer = karltesting.DummyMailer()
     karltesting.registerUtility(mailer, IMailDelivery)
     controller = self._makeOne(context, request)
     converted = {'users': (u'admin', ), 'text': 'some_text'}
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     response = controller.handle_submit(converted)
     self.assertEqual(context.users.added_groups, [('admin', 'members')])
     self.assertEqual(mailer[0].mto[0], '*****@*****.**')
     self.failUnless(
         response.location.startswith('http://example.com/manage.html'))
コード例 #22
0
ファイル: test_adapters.py プロジェクト: claytron/karl
    def test_long_history(self):
        from repoze.postoffice.message import Message
        comments = []
        for i in xrange(6):
            comments.append(
                self._add_comment(self.blogentry, "comment%d" % i))

        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        self.assertEqual(1, len(alert.mto))
        self.assertEqual("*****@*****.**", alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(alert.message["reply-to"],
                         u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
                          '@karl3.example.com>'
                        )

        messages, n = renderer.history
        self.assertEqual(n, 7)
        self.assertEqual(len(messages), 7)
        self.assertEqual(messages[0], self.blogentry)
        self.assertEqual(messages[1], comments[0])
        self.assertEqual(messages[2], comments[1])
        self.assertEqual(messages[3], comments[2])
        self.assertEqual(messages[4], comments[3])
        self.assertEqual(messages[5], comments[4])
        self.assertEqual(messages[6], comments[5])
コード例 #23
0
ファイル: test_adapters.py プロジェクト: iotest3/new
    def test_long_history(self):
        from repoze.postoffice.message import Message
        comments = []
        for i in xrange(6):
            comments.append(self._add_comment(self.blogentry, "comment%d" % i))

        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        self.assertEqual(1, len(alert.mto))
        self.assertEqual("*****@*****.**", alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(
            alert.message["reply-to"],
            u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
            '@karl3.example.com>')

        messages, n = renderer.history
        self.assertEqual(n, 7)
        self.assertEqual(len(messages), 7)
        self.assertEqual(messages[0], self.blogentry)
        self.assertEqual(messages[1], comments[0])
        self.assertEqual(messages[2], comments[1])
        self.assertEqual(messages[3], comments[2])
        self.assertEqual(messages[4], comments[3])
        self.assertEqual(messages[5], comments[4])
        self.assertEqual(messages[6], comments[5])
コード例 #24
0
 def test_render_footer_no_adapter(self):
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     renderer = karltesting.registerDummyRenderer('templates/footer.pt')
     api.render_footer()
     renderer.assert_(api=api)
コード例 #25
0
 def test_generic_layout(self):
     renderer = karltesting.registerDummyRenderer(
         'karl.views:templates/generic_layout.pt')
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     api.generic_layout(a=1)
     renderer.assert_(a=1)
コード例 #26
0
ファイル: test_api.py プロジェクト: araymund/karl
 def test_generic_layout(self):
     renderer = karltesting.registerDummyRenderer(
         'karl.views:templates/generic_layout.pt')
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     api.generic_layout(a=1)
     renderer.assert_(a=1)
コード例 #27
0
ファイル: test_api.py プロジェクト: araymund/karl
 def test_render_footer_no_adapter(self):
     context = testing.DummyModel()
     request = testing.DummyRequest()
     api = self._makeOne(context, request)
     renderer = karltesting.registerDummyRenderer(
         'templates/footer.pt')
     api.render_footer()
     renderer.assert_(api=api)
コード例 #28
0
 def test_handle_submit_resend(self):
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_invite_new.pt')
     context = self._makeCommunity()
     context.title = 'community'
     context.description = 'description'
     request = testing.DummyRequest()
     controller = self._makeOne(context, request)
     converted = {'members':[{'remove':False, 'name':'invitation',
                              'resend':True, 'moderator':False,
                              'title':'buz'}]}
     mailer = self._registerMailer()
     response = controller.handle_submit(converted)
     self.assertEqual(len(mailer), 1)
     self.assertEqual(response.location,
                      'http://example.com/communities/community/'
                      'manage.html?status_message='
                      'Membership+information+changed%3A+'
                      'Resent+invitation+to+buz')
コード例 #29
0
    def test_workflow_transition_from_custom(self):
        registerDummyRenderer('templates/edit_acl.pt')
        from repoze.workflow.testing import DummyWorkflow
        from zope.interface import Interface
        from zope.interface import directlyProvides
        workflow = DummyWorkflow()

        def state_info(context, request):
            return [{
                'name': 'foo',
                'current': True,
                'transitions': True
            }, {
                'name': 'bar',
                'current': False,
                'transitions': True
            }]

        workflow.state_info = state_info

        def get_dummy_workflow(*args, **kw):
            return workflow

        import karl.views.acl
        old_f = karl.views.acl.get_context_workflow
        karl.views.acl.get_context_workflow = get_dummy_workflow
        try:
            context = testing.DummyModel()
            context.state = 'foo'
            context.__custom_acl__ = []
            directlyProvides(Interface)
            request = testing.DummyRequest()
            request.POST['form.security_state'] = 1
            request.POST['security_state'] = 'bar'
            self._callFUT(context, request)
            self.assertEqual(workflow.transitioned[0]['to_state'], 'bar')
            self.assertEqual(workflow.resetted, [
                context,
            ])
            self.failIf(hasattr(context, '__custom_acl__'))
        finally:
            karl.views.acl.get_context_workflow = old_f
コード例 #30
0
ファイル: test_atom.py プロジェクト: Falmarri/karl
 def test_it(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICommunity
     import datetime
     context = testing.DummyModel(title='thetitle')
     directlyProvides(context, ICommunity)
     context.member_names = context.moderator_names = set()
     context.title = "Community"
     foo = testing.DummyModel()
     foo.modified = datetime.datetime(2009, 9, 2, 10, 28, 0)
     request = testing.DummyRequest()
     karltesting.registerDummyRenderer(
         'karl.views:templates/atomfeed.pt')
     from karl.models.interfaces import ICatalogSearch
     from karl.models.adapters import CatalogSearch
     catalog = karltesting.DummyCatalog({1:'/foo'})
     karltesting.registerModels({'/foo':foo})
     context.catalog = catalog
     karltesting.registerAdapter(CatalogSearch, (Interface), ICatalogSearch)
     self._callFUT(context, request)
コード例 #31
0
    def test_it_inform_moderators(self):
        from pyramid.interfaces import ISettings
        karltesting.registerUtility(karltesting.DummySettings(), ISettings)

        site = karltesting.DummyModel()
        site['fred'] = profile = karltesting.DummyProfile()
        profile.title = 'Fred Flintstone'
        profile.email = '*****@*****.**'
        site['clint'] = moderator = karltesting.DummyProfile()
        moderator.title = 'Clint'
        moderator.email = '*****@*****.**'

        site.users = karltesting.DummyUsers()
        site.users.add('fred', 'fred', 'password', set(
            ('group.community:Test1:members',
             'group.community:Test2:members',
             'group.community:Test2:moderators',
             'group.SomeGroup')))
        site.users.add('clint', 'clint', 'password', set(
            ('group.community:Test1:moderators',
             'group.community:Test2:moderators')))

        site['communities'] = communities = karltesting.DummyModel()
        communities['Test1'] = karltesting.DummyModel(title='Test One')
        communities['Test2'] = karltesting.DummyModel(title='Test Two')

        mailer = karltesting.registerDummyMailer()
        renderer = karltesting.registerDummyRenderer(
            'templates/email_notify_former_staff.pt'
        )

        self._call_fut(profile)

        removed = site.users.removed_groups
        self.failIf(('fred', 'group.SomeGroup') in removed)
        self.failUnless(('fred', 'group.community:Test1:members') in removed)
        self.failUnless(('fred', 'group.community:Test2:moderators')
                        in removed)

        self.assertEqual(len(mailer), 1, mailer)
        sent = mailer[0]
        self.assertEqual(sent.mto, ['Clint <*****@*****.**>'])
        self.assertEqual(renderer.name, 'Fred Flintstone')
        self.assertEqual(renderer.communities, [
            {'unremove_url': 'http://offline.example.com/app/communities/Test1'
                             '/members/add_existing.html?user_id=fred',
             'title': 'Test One'},
            {'unremove_url': 'http://offline.example.com/app/communities/Test2'
                             '/members/add_existing.html?user_id=fred',
             'title': 'Test Two'}]
        )
コード例 #32
0
 def test_handle_submit_inactive_user(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(security_state='inactive')
     profile.__name__ = 'd'
     registerCatalogSearch(results={'[email protected]': [profile,]})
     def nonrandom(size=6):
         return 'A' * size
     karltesting.registerUtility(nonrandom, IRandomId)
     registerContentFactory(DummyInvitation, IInvitation)
     controller = self._makeOne(context, request)
     converted = {
         'email_addresses': [u'*****@*****.**'],
         'text': u'some text',
         }
     karltesting.registerDummyRenderer(
         'karl.views:templates/email_add_existing.pt')
     from pyramid_formish import ValidationError
     self.assertRaises(ValidationError, controller.handle_submit, converted)
コード例 #33
0
ファイル: test_adapters.py プロジェクト: lslaz1/karl
    def test_digest(self):
        from repoze.postoffice.message import Message
        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        renderer.string_response = "<body>Dummy message body.</body>"

        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        alert.alert.digest = True
        self.assertEqual(1, len(alert.mto))
        self.assertEqual("*****@*****.**", alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(alert.message["reply-to"],
                         u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
                         u'@karl3.example.com>')
コード例 #34
0
    def test_digest(self):
        from repoze.postoffice.message import Message
        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        renderer.string_response = "<body>Dummy message body.</body>"

        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        alert.alert.digest = True
        self.assertEqual(1, len(alert.mto))
        self.assertEqual("*****@*****.**", alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(
            alert.message["reply-to"],
            u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
            u'@karl3.example.com>')
コード例 #35
0
ファイル: test_adapters.py プロジェクト: lslaz1/karl
    def test_alert(self):
        from repoze.postoffice.message import Message
        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        self.assertEqual(1, len(alert.alert.mto))
        self.assertEqual("*****@*****.**", alert.alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(alert.message["reply-to"],
                         u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
                         u'@karl3.example.com>')
        self.assertEqual(alert.message['Precedence'], 'bulk')

        messages, n = renderer.history
        self.assertEqual(n, 1)
        self.assertEqual(messages[0], self.blogentry)
コード例 #36
0
ファイル: test_adapters.py プロジェクト: iotest3/new
    def test_alert(self):
        from repoze.postoffice.message import Message
        renderer = karltesting.registerDummyRenderer(
            'templates/email_blog_comment_alert.pt')
        request = testing.DummyRequest()
        alert = self._makeOne(self.comment, self.profile, request)
        self.assertEqual(1, len(alert.mto))
        self.assertEqual("*****@*****.**", alert.mto[0])

        self.failUnless(isinstance(alert.message, Message))
        self.assertEqual(
            alert.message["reply-to"],
            u'"Dummy Communit\xe0" <community+blog-7FFFFFFF'
            '@karl3.example.com>')
        self.assertEqual(alert.message['Precedence'], 'bulk')

        messages, n = renderer.history
        self.assertEqual(n, 1)
        self.assertEqual(messages[0], self.blogentry)
コード例 #37
0
ファイル: test_members.py プロジェクト: claytron/karl
 def test_show_members(self):
     from zope.interface import Interface
     from karl.models.interfaces import ICatalogSearch
     context = testing.DummyModel()
     context.member_names = ['a']
     context.moderator_names = ['b']
     profiles = testing.DummyModel()
     profiles['a'] = karltesting.DummyProfile()
     profiles['b'] = karltesting.DummyProfile()
     context['profiles'] = profiles
     d = {1:profiles['a'], 2:profiles['b']}
     searchkw = {}
     def resolver(docid):
         return d.get(docid)
     def dummy_catalog_search(context):
         def search(**kw):
             searchkw.update(kw)
             return 2, [1,2], resolver
         return search
     karltesting.registerAdapter(dummy_catalog_search, (Interface),
                             ICatalogSearch)
     from karl.models.interfaces import ICommunity
     from zope.interface import directlyProvides
     directlyProvides(context, ICommunity)
     request = testing.DummyRequest(params={'hide_pictures':True})
     renderer = karltesting.registerDummyRenderer('templates/show_members.pt')
     self._callFUT(context, request)
     actions = [('Manage Members', 'manage.html'),
                ('Add Existing', 'add_existing.html'),
                ('Invite New', 'invite_new.html')]
     self.assertEqual(renderer.actions, actions)
     self.assertEqual(len(renderer.members), 2)
     self.assertEqual(len(renderer.moderators), 1)
     self.assertEqual(renderer.hide_pictures, True)
     self.assertEqual(len(renderer.submenu), 2)
     self.assertEqual(renderer.submenu[0]['make_link'], True)
     self.assertEqual(renderer.submenu[1]['make_link'], False)
     self.assertEqual(searchkw['sort_index'], 'lastfirst')
コード例 #38
0
    def test_it(self):
        import mock
        from zope.interface import Interface
        from zope.interface import alsoProvides
        from pyramid.testing import DummyModel
        from pyramid.testing import DummyRequest
        from karl.models.interfaces import ICommunity
        from karl.models.interfaces import ISite
        from karl.models.interfaces import IIntranet
        from karl.models.interfaces import IIntranets
        from karl.views.interfaces import IIntranetPortlet
        from karl.testing import registerAdapter
        from karl.testing import registerDummyRenderer
        ANY = (Interface, Interface)
        WELL = u'<h1>WELL</h1>'
        BODY = u'<h1>BODY</h1>'
        FEATURE = u'<p>FEATURE</p>'
        root = DummyModel()
        alsoProvides(root, ISite)
        offices = root['offices'] = DummyModel()
        alsoProvides(offices, IIntranets)
        offices.feature = FEATURE
        context = offices['nice'] = DummyModel(title='nice office')
        context['foo'] = DummyModel()
        context['bar'] = DummyModel()
        context['spam'] = DummyModel()
        alsoProvides(context, ICommunity)
        alsoProvides(context, IIntranet)
        context.middle_portlets = ['foo', 'bar|baz']
        context.right_portlets = ['spam|qux']
        request = DummyRequest()
        request.layout_manager = mock.Mock()

        class _Portlet(object):
            def __init__(self, text):
                self._text = text
            @property
            def asHTML(self):
                return self._text

        _nameless_contexts = []
        NAMELESS = '<p>NAMELESS</p>'
        def _nameless(context, req):
            assert req is request
            _nameless_contexts.append(context)
            return _Portlet(NAMELESS)
        registerAdapter(_nameless, ANY, IIntranetPortlet)

        _baz_contexts = []
        BAZ = '<p>BAZ</p>'
        def _baz(context, req):
            assert req is request
            _baz_contexts.append(context)
            return _Portlet(BAZ)
        registerAdapter(_baz, ANY, IIntranetPortlet, name='baz')

        _qux_contexts = []
        QUX = '<p>QUX</p>'
        def _qux(context, req):
            assert req is request
            _qux_contexts.append(context)
            return _Portlet(QUX)
        registerAdapter(_qux, ANY, IIntranetPortlet, name='qux')

        _ihb_data = []
        def _IHB(data, _):
            _ihb_data.append(data)
            return WELL
        registerDummyRenderer(
            'karl.views:templates/intranethome_body.pt', _IHB)

        _ihp_data = []
        def _IHP(data, _):
            _ihp_data.append(data)
            return BODY
        registerDummyRenderer(
            'karl.views:templates/intranet_homepage.pt', _IHP)

        response = self._callFUT(context, request)
        self.assertEqual(response.body, BODY)
        self.assertEqual(len(_ihp_data), 1)
        self.assertEqual(_ihp_data[0]['body'], WELL)
        self.assertEqual(len(_ihb_data), 1)
        self.assertTrue(_ihb_data[0]['current_intranet'] is context)
        self.assertEqual(_ihb_data[0]['feature'], FEATURE)
        self.assertEqual(_ihb_data[0]['middle_portlet_html'], NAMELESS + BAZ)
        self.assertEqual(_ihb_data[0]['right_portlet_html'], QUX)
コード例 #39
0
ファイル: test_retail.py プロジェクト: araymund/karl
    def test_it(self):
        from zope.interface import Interface
        from zope.interface import alsoProvides
        from pyramid.testing import DummyModel
        from pyramid.testing import DummyRequest
        from karl.models.interfaces import ICommunity
        from karl.models.interfaces import ISite
        from karl.models.interfaces import IIntranet
        from karl.models.interfaces import IIntranets
        from karl.views.interfaces import IIntranetPortlet
        from karl.testing import registerAdapter
        from karl.testing import registerDummyRenderer

        ANY = (Interface, Interface)
        WELL = u"<h1>WELL</h1>"
        BODY = u"<h1>BODY</h1>"
        FEATURE = u"<p>FEATURE</p>"
        root = DummyModel()
        alsoProvides(root, ISite)
        offices = root["offices"] = DummyModel()
        alsoProvides(offices, IIntranets)
        offices.feature = FEATURE
        context = offices["nice"] = DummyModel(title="nice office")
        context["foo"] = DummyModel()
        context["bar"] = DummyModel()
        context["spam"] = DummyModel()
        alsoProvides(context, ICommunity)
        alsoProvides(context, IIntranet)
        context.middle_portlets = ["foo", "bar|baz"]
        context.right_portlets = ["spam|qux"]
        request = DummyRequest()

        class _Portlet(object):
            def __init__(self, text):
                self._text = text

            @property
            def asHTML(self):
                return self._text

        _nameless_contexts = []
        NAMELESS = "<p>NAMELESS</p>"

        def _nameless(context, req):
            assert req is request
            _nameless_contexts.append(context)
            return _Portlet(NAMELESS)

        registerAdapter(_nameless, ANY, IIntranetPortlet)

        _baz_contexts = []
        BAZ = "<p>BAZ</p>"

        def _baz(context, req):
            assert req is request
            _baz_contexts.append(context)
            return _Portlet(BAZ)

        registerAdapter(_baz, ANY, IIntranetPortlet, name="baz")

        _qux_contexts = []
        QUX = "<p>QUX</p>"

        def _qux(context, req):
            assert req is request
            _qux_contexts.append(context)
            return _Portlet(QUX)

        registerAdapter(_qux, ANY, IIntranetPortlet, name="qux")

        _ihb_data = []

        def _IHB(data, _):
            _ihb_data.append(data)
            return WELL

        registerDummyRenderer("karl.views:templates/intranethome_body.pt", _IHB)

        _ihp_data = []

        def _IHP(data, _):
            _ihp_data.append(data)
            return BODY

        registerDummyRenderer("karl.views:templates/intranet_homepage.pt", _IHP)

        response = self._callFUT(context, request)
        self.assertEqual(response.body, BODY)
        self.assertEqual(len(_ihp_data), 1)
        self.assertEqual(_ihp_data[0]["body"], WELL)
        self.assertEqual(len(_ihb_data), 1)
        self.assertTrue(_ihb_data[0]["current_intranet"] is context)
        self.assertEqual(_ihb_data[0]["feature"], FEATURE)
        self.assertEqual(_ihb_data[0]["middle_portlet_html"], NAMELESS + BAZ)
        self.assertEqual(_ihb_data[0]["right_portlet_html"], QUX)
コード例 #40
0
 def setUp(self):
     cleanUp()
     karltesting.registerDummyRenderer(
         'karl.views:templates/generic_layout.pt')
     karltesting.registerDummyRenderer(
         'karl.views:templates/community_layout.pt')
コード例 #41
0
ファイル: test_search.py プロジェクト: lslaz1/karl
 def setUp(self):
     cleanUp()
     karltesting.registerDummyRenderer(
         'karl.views:templates/generic_layout.pt')
     karltesting.registerDummyRenderer(
         'karl.views:templates/community_layout.pt')
コード例 #42
0
ファイル: test_members.py プロジェクト: iotest3/new
    def test_handle_submit_success(self):
        from karl.models.interfaces import IProfile
        from repoze.lemonade.testing import registerContentFactory
        from repoze.sendmail.interfaces import IMailDelivery
        from repoze.workflow.testing import registerDummyWorkflow
        from karl.models.interfaces import ICommunity
        from zope.interface import directlyProvides
        workflow = registerDummyWorkflow('security')
        mailer = karltesting.DummyMailer()
        karltesting.registerUtility(mailer, IMailDelivery)
        registerContentFactory(DummyContent, IProfile)

        class DummyWhoPlugin(object):
            def remember(self, environ, identity):
                self.identity = identity
                return []

        request = self._makeRequest()
        community = testing.DummyModel()
        profiles = testing.DummyModel()
        community['profiles'] = profiles
        community.users = karltesting.DummyUsers()
        community.members_group_name = 'community:members'
        directlyProvides(community, ICommunity)
        context = self._makeContext()
        community['invite'] = context
        community.title = 'Community'
        community.description = 'Community'
        community.sessions = DummySessions()
        context.email = '*****@*****.**'
        controller = self._makeOne(context, request)
        converted = {
            'password': '******',
            'password_confirm': '1',
            'username': '******',
            'firstname': 'firstname',
            'lastname': 'lastname',
            'phone': 'phone',
            'extension': 'extension',
            'department': 'department',
            'position': 'position',
            'organization': 'organization',
            'location': 'location',
            'country': 'country',
            'websites': ['website'],
            'languages': 'languages',
            'date_format': 'en-US',
            'biography': 'bio',
        }
        karltesting.registerDummyRenderer(
            'karl.views:templates/email_accept_invitation.pt')
        response = controller.handle_submit(converted)
        self.assertEqual(response.location,
                         'http://example.com/?status_message=Welcome%21')
        self.assertEqual(community.users.added,
                         ('username', 'username', '1', ['community:members']))
        profiles = community['profiles']
        self.failUnless('username' in profiles)
        self.assertEqual(workflow.initialized, [profiles['username']])
        profile = profiles['username']
        self.assertEqual('phone', profile.phone)
        self.assertEqual('firstname', profile.firstname)
        self.assertEqual('lastname', profile.lastname)
        self.assertEqual('bio', profile.biography)
        self.failIf('invite' in community)
        self.assertEqual(len(mailer), 1)
コード例 #43
0
ファイル: test_metrics.py プロジェクト: iotest3/new
 def setUp(self):
     testing.cleanUp()
     renderer = karltesting.registerDummyRenderer(
         "karl.views:templates/generic_layout.pt")
コード例 #44
0
    def test_it(self):
        from zope.interface import Interface
        from zope.interface import alsoProvides
        from pyramid.testing import DummyModel
        from pyramid.testing import DummyRequest
        from karl.models.interfaces import ICommunity
        from karl.models.interfaces import ISite
        from karl.models.interfaces import IIntranet
        from karl.models.interfaces import IIntranets
        from karl.views.interfaces import IIntranetPortlet
        from karl.testing import registerAdapter
        from karl.testing import registerDummyRenderer
        ANY = (Interface, Interface)
        WELL = u'<h1>WELL</h1>'
        BODY = u'<h1>BODY</h1>'
        FEATURE = u'<p>FEATURE</p>'
        root = DummyModel()
        alsoProvides(root, ISite)
        offices = root['offices'] = DummyModel()
        alsoProvides(offices, IIntranets)
        offices.feature = FEATURE
        context = offices['nice'] = DummyModel(title='nice office')
        context['foo'] = DummyModel()
        context['bar'] = DummyModel()
        context['spam'] = DummyModel()
        alsoProvides(context, ICommunity)
        alsoProvides(context, IIntranet)
        context.middle_portlets = ['foo', 'bar|baz']
        context.right_portlets = ['spam|qux']
        request = DummyRequest()

        class _Portlet(object):
            def __init__(self, text):
                self._text = text
            @property
            def asHTML(self):
                return self._text

        _nameless_contexts = []
        NAMELESS = '<p>NAMELESS</p>'
        def _nameless(context, req):
            assert req is request
            _nameless_contexts.append(context)
            return _Portlet(NAMELESS)
        registerAdapter(_nameless, ANY, IIntranetPortlet)

        _baz_contexts = []
        BAZ = '<p>BAZ</p>'
        def _baz(context, req):
            assert req is request
            _baz_contexts.append(context)
            return _Portlet(BAZ)
        registerAdapter(_baz, ANY, IIntranetPortlet, name='baz')

        _qux_contexts = []
        QUX = '<p>QUX</p>'
        def _qux(context, req):
            assert req is request
            _qux_contexts.append(context)
            return _Portlet(QUX)
        registerAdapter(_qux, ANY, IIntranetPortlet, name='qux')

        _ihb_data = []
        def _IHB(data, _):
            _ihb_data.append(data)
            return WELL
        registerDummyRenderer(
            'karl.views:templates/intranethome_body.pt', _IHB)

        _ihp_data = []
        def _IHP(data, _):
            _ihp_data.append(data)
            return BODY
        registerDummyRenderer(
            'karl.views:templates/intranet_homepage.pt', _IHP)

        response = self._callFUT(context, request)
        self.assertEqual(response.body, BODY)
        self.assertEqual(len(_ihp_data), 1)
        self.assertEqual(_ihp_data[0]['body'], WELL)
        self.assertEqual(len(_ihb_data), 1)
        self.assertTrue(_ihb_data[0]['current_intranet'] is context)
        self.assertEqual(_ihb_data[0]['feature'], FEATURE)
        self.assertEqual(_ihb_data[0]['middle_portlet_html'], NAMELESS + BAZ)
        self.assertEqual(_ihb_data[0]['right_portlet_html'], QUX)