Exemplo n.º 1
0
 def setUp(self):
   app= Application()
   catalog= ZCatalog('Catalog')
   app._setObject('Catalog',catalog)
   self.catalog= catalog= app._getOb('Catalog')
   install_products(app, 'ManagableIndex')
   # field
   self.fi = self._createIndex('id', FieldIndex)
   # keyword
   self.ki= self._createIndex('kw', KeywordIndex)
   # range
   self.ri = self._createIndex(
     'ri', RangeIndex,
     dict(CombineType='aggregate',
          ValueProviders=[
            dict(id='rlow', type='AttributeLookup'),
            dict(id='rhigh', type='AttributeLookup'),
            ]
          ),
     )
   # word
   lexicon = Lexicon(Splitter())
   app._setObject('lexicon', lexicon)
   self.wi = self._createIndex('wi', WordIndex, dict(Lexicon='lexicon'))
   # simple text
   self.sti = self._createIndex('sti', SimpleTextIndex, dict(Lexicon='lexicon'))
   # path
   self.pi= self._createIndex('pi', PathIndex)
   # create objects
   self.obj1= obj1= _Object()
   obj1.kw= (1,2)
   obj1.fkw= _Caller(lambda obj: obj.kw)
   obj1.fid= _Caller(lambda obj: obj.id)
   self.obj2= obj2= _Object().__of__(obj1)
   obj2.id= 'id'
Exemplo n.º 2
0
 def setUp(self):
     app = Application()
     catalog = ZCatalog('Catalog')
     app._setObject('Catalog', catalog)
     self.catalog = catalog = app._getOb('Catalog')
     install_products(app, 'ManagableIndex')
     # field
     self.fi = self._createIndex('id', FieldIndex)
     # keyword
     self.ki = self._createIndex('kw', KeywordIndex)
     # range
     self.ri = self._createIndex(
         'ri',
         RangeIndex,
         dict(CombineType='aggregate',
              ValueProviders=[
                  dict(id='rlow', type='AttributeLookup'),
                  dict(id='rhigh', type='AttributeLookup'),
              ]),
     )
     # word
     lexicon = Lexicon(Splitter())
     app._setObject('lexicon', lexicon)
     self.wi = self._createIndex('wi', WordIndex, dict(Lexicon='lexicon'))
     # simple text
     self.sti = self._createIndex('sti', SimpleTextIndex,
                                  dict(Lexicon='lexicon'))
     # path
     self.pi = self._createIndex('pi', PathIndex)
     # create objects
     self.obj1 = obj1 = _Object()
     obj1.kw = (1, 2)
     obj1.fkw = _Caller(lambda obj: obj.kw)
     obj1.fid = _Caller(lambda obj: obj.id)
     self.obj2 = obj2 = _Object().__of__(obj1)
     obj2.id = 'id'
 def setUp(self):
   app= Application()
   catalog= ZCatalog('Catalog')
   app._setObject('Catalog',catalog)
   self.catalog= catalog= app._getOb('Catalog')
   # create indexes -- avoid the official API because it requires
   # product setup and this takes ages
   cat= catalog._catalog
   # field
   fi= FieldIndex('id'); cat.addIndex('id',fi)
   self.fi= cat.getIndex('id')
   # keyword
   ki= KeywordIndex('kw'); cat.addIndex('kw',ki)
   self.ki= cat.getIndex('kw')
   # range
   ri= RangeIndex('ri'); cat.addIndex('ri',ri)
   self.ri = ri = cat.getIndex('ri')
   ri._delObject('ri'); ri.CombineType = 'aggregate'
   ri.addValueProvider('rlow','AttributeLookup')
   ri.addValueProvider('rhigh','AttributeLookup')
   # word
   lexicon = Lexicon(Splitter())
   app._setObject('lexicon', lexicon)
   wi = WordIndex('wi'); cat.addIndex('wi',wi)
   wi.Lexicon = 'lexicon'
   self.wi = cat.getIndex('wi')
   # path
   pi= PathIndex('pi'); cat.addIndex('pi',pi)
   self.pi= cat.getIndex('pi')
   # create objects
   self.obj1= obj1= _Object()
   obj1.kw= (1,2)
   obj1.fkw= _Caller(lambda obj: obj.kw)
   obj1.fid= _Caller(lambda obj: obj.id)
   self.obj2= obj2= _Object().__of__(obj1)
   obj2.id= 'id'
Exemplo n.º 4
0
class TestBrowserIdManager(TestCase):
    def setUp(self):
        self.app = Application()
        self.app.id = 'App'
        mgr = BrowserIdManager('browser_id_manager')
        self.app._setObject('browser_id_manager', mgr)
        self.m = self.app.browser_id_manager
        resp = HTTPResponse()
        environ = {}
        environ['SERVER_NAME']='fred'
        environ['SERVER_PORT']='80'
        self.req = HTTPRequest(stdin, environ, resp)
        self.req['TraversalRequestNameStack'] = ['foo', 'bar']
        self.app.REQUEST = self.req

    def tearDown(self):
        del self.m
        self.app.REQUEST = None
        del self.app

    def testSetBrowserIdName(self):
        self.m.setBrowserIdName('foo')
        self.failUnless(self.m.getBrowserIdName()== 'foo')

    def testSetBadBrowserIdName(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setBrowserIdName(''))
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setBrowserIdName(1))

    def testSetBadNamespaces(self):
        d = ('gummy', 'froopy')
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self,d=d:
                          self.m.setBrowserIdNamespaces(d))

    def testSetGoodNamespaces(self):
        d = ('cookies', 'url', 'form')
        self.m.setBrowserIdNamespaces(d)
        self.failUnless(self.m.getBrowserIdNamespaces() == d)

    def testSetBadCookiePath(self):
        path = '/;'
        self.assertRaises(BrowserIdManagerErr,
                        lambda self=self, path=path:self.m.setCookiePath(path))

    def testSetGoodCookiePath(self):
        self.m.setCookiePath('/foo')
        self.failUnless(self.m.getCookiePath() == '/foo')

    def testSetBadCookieLifeDays(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setCookieLifeDays(''))

    def testSetGoodCookieLifeDays(self):
        self.m.setCookieLifeDays(1)
        self.failUnless(self.m.getCookieLifeDays() == 1)

    def testSetBadCookieDomain(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setCookieDomain('gubble'))

    def testSetGoodCookieLifeDays(self):
        self.m.setCookieLifeDays(1)
        self.failUnless(self.m.getCookieLifeDays() == 1)

    def testSetNoCookieDomain(self):
        domain = ''
        self.m.setCookieDomain(domain)
        setdomain = self.m.getCookieDomain()
        self.failUnless(setdomain == domain)

    def testSetBadCookieDomain(self):
        # not enough dots, must be stringtype, semicolon follows respectively
        for domain in ('zope.org', {1:1}, '.zope.org;'):
            self.assertRaises(BrowserIdManagerErr,
               lambda self=self, domain=domain: self.m.setCookieDomain(domain))

    def testSetGoodCookieDomain(self):
        self.m.setCookieDomain('.zope.org')
        setdomain = self.m.getCookieDomain()
        self.failUnless( setdomain == '.zope.org', "%s" % setdomain )

    def testSetCookieSecure(self):
        self.m.setCookieSecure(1)
        self.failUnless( self.m.getCookieSecure() == 1 )

    def testGetBrowserIdCookie(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless( a == token, repr(a) )
        self.failUnless( self.m.isBrowserIdFromCookie() )

    def testSetBrowserIdDontCreate(self):
        a = self.m.getBrowserId(0)
        self.failUnless( a == None )

    def testSetBrowserIdCreate(self):
        a = self.m.getBrowserId(1)
        tokenkey = self.m.getBrowserIdName()
        b = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless( a == b['value'] )

    def testHasBrowserId(self):
        self.failUnless( not self.m.hasBrowserId() )
        a = self.m.getBrowserId()
        self.failUnless( self.m.hasBrowserId() )

    def testBrowserIdIsNew(self):
        a = self.m.getBrowserId()
        self.failUnless( self.m.isBrowserIdNew() )

    def testIsBrowserIdFromCookieOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.form[tokenkey] = token
        self.m.setBrowserIdNamespaces(('cookies',))
        a = self.m.getBrowserId()
        self.failUnless( self.m.isBrowserIdFromCookie() )
        self.failUnless( not self.m.isBrowserIdFromForm() )

    def testIsBrowserIdFromFormOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'form'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.form[tokenkey] = token
        self.m.setBrowserIdNamespaces(('form',))
        a = self.m.getBrowserId()
        self.failUnless( not self.m.isBrowserIdFromCookie() )
        self.failUnless( self.m.isBrowserIdFromForm() )

    def testIsBrowserIdFromUrlOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'url'
        self.m.setBrowserIdNamespaces(('url',))
        a = self.m.getBrowserId()
        self.failUnless( not self.m.isBrowserIdFromCookie() )
        self.failUnless( self.m.isBrowserIdFromUrl() )

    def testFlushBrowserIdCookie(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless( a == token, repr(a) )
        self.failUnless( self.m.isBrowserIdFromCookie() )
        self.m.flushBrowserIdCookie()
        c = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless( c['value'] == 'deleted' )

    def testSetBrowserIdCookieByForce(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless( a == token )
        self.failUnless( self.m.isBrowserIdFromCookie() )
        token = 'abcdefghijk'
        self.m.setBrowserIdCookieByForce(token)
        c = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless( c['value'] == token )

    def testEncodeUrl(self):
        keystring = self.m.getBrowserIdName()
        key = self.m.getBrowserId()
        u = '/home/chrism/foo'
        r = self.m.encodeUrl(u)
        self.failUnless( r == '%s?%s=%s' % (u, keystring, key) )
        u = 'http://www.zope.org/Members/mcdonc?foo=bar&spam=eggs'
        r = self.m.encodeUrl(u)
        self.failUnless( r == '%s&%s=%s' % (u, keystring, key) )
        r = self.m.encodeUrl(u, style='inline')
        self.failUnless( r == 'http://www.zope.org/%s/%s/Members/mcdonc?foo=bar&spam=eggs' % (keystring, key))

    def testGetHiddenFormField(self):
        keystring = self.m.getBrowserIdName()
        key = self.m.getBrowserId()
        html = self.m.getHiddenFormField()
        expected = ('<input type="hidden" name="%s" value="%s">' %
                    (keystring, key))
        self.failUnless( html == expected )

    def testAutoUrlEncoding(self):
        self.m.setAutoUrlEncoding(1)
        self.m.setBrowserIdNamespaces(('url',))
        self.m.updateTraversalData()
        traverser = BrowserIdManagerTraverser()
        traverser(self.app, self.req)
        self.failUnless(isAWellFormedBrowserId(self.req.browser_id_))
        self.failUnless(self.req.browser_id_ns_ == None)
        self.failUnless(self.req._script[-1] == self.req.browser_id_)
        self.failUnless(self.req._script[-2] == '_ZopeId')

    def testUrlBrowserIdIsFound(self):
        bid = '43295340A0bpcu4nkCI'
        name = '_ZopeId'
        resp = HTTPResponse()
        environ = {}
        environ['SERVER_NAME']='fred'
        environ['SERVER_PORT']='80'
        self.req = HTTPRequest(stdin, environ, resp)
        self.req['TraversalRequestNameStack'] = ['foo', 'bar', bid, name]
        self.app.REQUEST = self.req
        self.m.setAutoUrlEncoding(1)
        self.m.setBrowserIdNamespaces(('url',))
        self.m.updateTraversalData()
        traverser = BrowserIdManagerTraverser()
        traverser(self.app, self.req)
        self.failUnless(isAWellFormedBrowserId(self.req.browser_id_))
        self.failUnless(self.req.browser_id_ns_ == 'url')
        self.failUnless(self.req._script[-1] == self.req.browser_id_)
        self.failUnless(self.req._script[-2] == '_ZopeId')
        self.failUnless(self.req['TraversalRequestNameStack'] == ['foo','bar'])

    def testUpdateTraversalData(self):
        self.m.setBrowserIdNamespaces(('url',))
        self.m.updateTraversalData()
        self.failUnless(self.m.hasTraversalHook(self.app))
        self.failUnless(queryBeforeTraverse(self.app, 'BrowserIdManager'))
        self.m.setBrowserIdNamespaces(('cookies', 'form'))
        self.m.updateTraversalData()
        self.failUnless(not queryBeforeTraverse(self.app,'BrowserIdManager'))
Exemplo n.º 5
0
class TestBrowserIdManager(TestCase):
    def setUp(self):
        self.app = Application()
        self.app.id = 'App'
        mgr = BrowserIdManager('browser_id_manager')
        self.app._setObject('browser_id_manager', mgr)
        self.m = self.app.browser_id_manager
        resp = HTTPResponse()
        environ = {}
        environ['SERVER_NAME'] = 'fred'
        environ['SERVER_PORT'] = '80'
        self.req = HTTPRequest(stdin, environ, resp)
        self.req['TraversalRequestNameStack'] = ['foo', 'bar']
        self.app.REQUEST = self.req

    def tearDown(self):
        del self.m
        self.app.REQUEST = None
        del self.app

    def testSetBrowserIdName(self):
        self.m.setBrowserIdName('foo')
        self.failUnless(self.m.getBrowserIdName() == 'foo')

    def testSetBadBrowserIdName(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setBrowserIdName(''))
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setBrowserIdName(1))

    def testSetBadNamespaces(self):
        d = ('gummy', 'froopy')
        self.assertRaises(
            BrowserIdManagerErr,
            lambda self=self, d=d: self.m.setBrowserIdNamespaces(d))

    def testSetGoodNamespaces(self):
        d = ('cookies', 'url', 'form')
        self.m.setBrowserIdNamespaces(d)
        self.failUnless(self.m.getBrowserIdNamespaces() == d)

    def testSetBadCookiePath(self):
        path = '/;'
        self.assertRaises(
            BrowserIdManagerErr,
            lambda self=self, path=path: self.m.setCookiePath(path))

    def testSetGoodCookiePath(self):
        self.m.setCookiePath('/foo')
        self.failUnless(self.m.getCookiePath() == '/foo')

    def testSetBadCookieLifeDays(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setCookieLifeDays(''))

    def testSetGoodCookieLifeDays(self):
        self.m.setCookieLifeDays(1)
        self.failUnless(self.m.getCookieLifeDays() == 1)

    def testSetBadCookieDomain(self):
        self.assertRaises(BrowserIdManagerErr,
                          lambda self=self: self.m.setCookieDomain('gubble'))

    def testSetGoodCookieLifeDays(self):
        self.m.setCookieLifeDays(1)
        self.failUnless(self.m.getCookieLifeDays() == 1)

    def testSetNoCookieDomain(self):
        domain = ''
        self.m.setCookieDomain(domain)
        setdomain = self.m.getCookieDomain()
        self.failUnless(setdomain == domain)

    def testSetBadCookieDomain(self):
        # not enough dots, must be stringtype, semicolon follows respectively
        for domain in ('zope.org', {1: 1}, '.zope.org;'):
            self.assertRaises(BrowserIdManagerErr,
                              lambda self=self, domain=domain: self.m.
                              setCookieDomain(domain))

    def testSetGoodCookieDomain(self):
        self.m.setCookieDomain('.zope.org')
        setdomain = self.m.getCookieDomain()
        self.failUnless(setdomain == '.zope.org', "%s" % setdomain)

    def testSetCookieSecure(self):
        self.m.setCookieSecure(1)
        self.failUnless(self.m.getCookieSecure() == 1)

    def testGetBrowserIdCookie(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless(a == token, repr(a))
        self.failUnless(self.m.isBrowserIdFromCookie())

    def testSetBrowserIdDontCreate(self):
        a = self.m.getBrowserId(0)
        self.failUnless(a == None)

    def testSetBrowserIdCreate(self):
        a = self.m.getBrowserId(1)
        tokenkey = self.m.getBrowserIdName()
        b = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless(a == b['value'])

    def testHasBrowserId(self):
        self.failUnless(not self.m.hasBrowserId())
        a = self.m.getBrowserId()
        self.failUnless(self.m.hasBrowserId())

    def testBrowserIdIsNew(self):
        a = self.m.getBrowserId()
        self.failUnless(self.m.isBrowserIdNew())

    def testIsBrowserIdFromCookieOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.form[tokenkey] = token
        self.m.setBrowserIdNamespaces(('cookies', ))
        a = self.m.getBrowserId()
        self.failUnless(self.m.isBrowserIdFromCookie())
        self.failUnless(not self.m.isBrowserIdFromForm())

    def testIsBrowserIdFromFormOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'form'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.form[tokenkey] = token
        self.m.setBrowserIdNamespaces(('form', ))
        a = self.m.getBrowserId()
        self.failUnless(not self.m.isBrowserIdFromCookie())
        self.failUnless(self.m.isBrowserIdFromForm())

    def testIsBrowserIdFromUrlOnly(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'url'
        self.m.setBrowserIdNamespaces(('url', ))
        a = self.m.getBrowserId()
        self.failUnless(not self.m.isBrowserIdFromCookie())
        self.failUnless(self.m.isBrowserIdFromUrl())

    def testFlushBrowserIdCookie(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless(a == token, repr(a))
        self.failUnless(self.m.isBrowserIdFromCookie())
        self.m.flushBrowserIdCookie()
        c = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless(c['value'] == 'deleted')

    def testSetBrowserIdCookieByForce(self):
        token = self.m.getBrowserId()
        self.m.REQUEST.browser_id_ = token
        self.m.REQUEST.browser_id_ns_ = 'cookies'
        tokenkey = self.m.getBrowserIdName()
        self.m.REQUEST.cookies[tokenkey] = token
        a = self.m.getBrowserId()
        self.failUnless(a == token)
        self.failUnless(self.m.isBrowserIdFromCookie())
        token = 'abcdefghijk'
        self.m.setBrowserIdCookieByForce(token)
        c = self.m.REQUEST.RESPONSE.cookies[tokenkey]
        self.failUnless(c['value'] == token)

    def testEncodeUrl(self):
        keystring = self.m.getBrowserIdName()
        key = self.m.getBrowserId()
        u = '/home/chrism/foo'
        r = self.m.encodeUrl(u)
        self.failUnless(r == '%s?%s=%s' % (u, keystring, key))
        u = 'http://www.zope.org/Members/mcdonc?foo=bar&spam=eggs'
        r = self.m.encodeUrl(u)
        self.failUnless(r == '%s&amp;%s=%s' % (u, keystring, key))
        r = self.m.encodeUrl(u, style='inline')
        self.failUnless(
            r == 'http://www.zope.org/%s/%s/Members/mcdonc?foo=bar&spam=eggs' %
            (keystring, key))

    def testGetHiddenFormField(self):
        keystring = self.m.getBrowserIdName()
        key = self.m.getBrowserId()
        html = self.m.getHiddenFormField()
        expected = ('<input type="hidden" name="%s" value="%s">' %
                    (keystring, key))
        self.failUnless(html == expected)

    def testAutoUrlEncoding(self):
        self.m.setAutoUrlEncoding(1)
        self.m.setBrowserIdNamespaces(('url', ))
        self.m.updateTraversalData()
        traverser = BrowserIdManagerTraverser()
        traverser(self.app, self.req)
        self.failUnless(isAWellFormedBrowserId(self.req.browser_id_))
        self.failUnless(self.req.browser_id_ns_ == None)
        self.failUnless(self.req._script[-1] == self.req.browser_id_)
        self.failUnless(self.req._script[-2] == '_ZopeId')

    def testUrlBrowserIdIsFound(self):
        bid = '43295340A0bpcu4nkCI'
        name = '_ZopeId'
        resp = HTTPResponse()
        environ = {}
        environ['SERVER_NAME'] = 'fred'
        environ['SERVER_PORT'] = '80'
        self.req = HTTPRequest(stdin, environ, resp)
        self.req['TraversalRequestNameStack'] = ['foo', 'bar', bid, name]
        self.app.REQUEST = self.req
        self.m.setAutoUrlEncoding(1)
        self.m.setBrowserIdNamespaces(('url', ))
        self.m.updateTraversalData()
        traverser = BrowserIdManagerTraverser()
        traverser(self.app, self.req)
        self.failUnless(isAWellFormedBrowserId(self.req.browser_id_))
        self.failUnless(self.req.browser_id_ns_ == 'url')
        self.failUnless(self.req._script[-1] == self.req.browser_id_)
        self.failUnless(self.req._script[-2] == '_ZopeId')
        self.failUnless(
            self.req['TraversalRequestNameStack'] == ['foo', 'bar'])

    def testUpdateTraversalData(self):
        self.m.setBrowserIdNamespaces(('url', ))
        self.m.updateTraversalData()
        self.failUnless(self.m.hasTraversalHook(self.app))
        self.failUnless(queryBeforeTraverse(self.app, 'BrowserIdManager'))
        self.m.setBrowserIdNamespaces(('cookies', 'form'))
        self.m.updateTraversalData()
        self.failUnless(not queryBeforeTraverse(self.app, 'BrowserIdManager'))