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') 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'
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'))
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'))