def test_off_switch(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = False z3c.caching.registry.register(DummyView, 'testrule') settings.operationMapping = {'testrule': 'op1'} @implementer(ICachingOperation) @adapter(Interface, Interface) class DummyOperation(object): def __init__(self, published, request): self.published = published self.request = request def interceptResponse(self, rulename, response): return None def modifyResponse(self, rulename, response): response['X-Mutated'] = rulename provideAdapter(DummyOperation, name='op1') view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u'', 'utf-8') self.assertEqual({'PUBLISHED': view}, dict(request)) self.assertEqual({}, dict(request.response))
def test_no_registry(self): provideAdapter(DefaultRulesetLookup) view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u'', 'utf-8') self.assertEqual({'PUBLISHED': view}, dict(request)) self.assertEqual({}, dict(request.response))
def test_no_records(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u"", "utf-8") self.assertEquals({'PUBLISHED': view}, dict(request)) self.assertEquals({}, dict(request.response))
def test_no_published_object(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True request = DummyRequest(None, DummyResponse()) MutatorTransform(None, request).transformUnicode(u'', 'utf-8') self.assertEqual({'PUBLISHED': None}, dict(request)) self.assertEqual({}, dict(request.response))
def test_no_lookup_adapter(self): provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True z3c.caching.registry.register(DummyView, 'testrule') settings.operationMapping = {'testrule': 'dummy'} view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u'', 'utf-8') self.assertEqual({'PUBLISHED': view}, dict(request)) self.assertEqual({}, dict(request.response))
def test_no_cache_rule(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True settings.operationMapping = {'testrule': 'dummy'} view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u"", "utf-8") self.assertEquals({'PUBLISHED': view}, dict(request)) self.assertEquals({}, dict(request.response))
def test_operation_name_not_found(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True z3c.caching.registry.register(DummyView, 'testrule') settings.operationMapping = {'foo': 'bar'} view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformUnicode(u'', 'utf-8') self.assertEqual({'PUBLISHED': view}, dict(request)) self.assertEqual({'X-Cache-Rule': ['testrule']}, dict(request.response))
def test_match_method(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True z3c.caching.registry.register(DummyResource, 'testrule') settings.operationMapping = {'testrule': 'op1'} class DummyOperation(object): implements(ICachingOperation) adapts(Interface, Interface) def __init__(self, published, request): self.published = published self.request = request def interceptResponse(self, rulename, response): return None def modifyResponse(self, rulename, response): response.addHeader('X-Cache-Foo', 'test') provideAdapter(DummyOperation, name="op1") resource = DummyResource() request = DummyRequest(resource.index_html, DummyResponse()) MutatorTransform(resource, request).transformUnicode(u"", "utf-8") self.assertEquals({'PUBLISHED': resource.index_html}, dict(request)) self.assertEquals( { 'X-Cache-Rule': ['testrule'], 'X-Cache-Operation': ['op1'], 'X-Cache-Foo': ['test'] }, dict(request.response))
def test_match_iterable(self): provideAdapter(DefaultRulesetLookup) provideUtility(Registry(), IRegistry) registry = getUtility(IRegistry) registry.registerInterface(ICacheSettings) settings = registry.forInterface(ICacheSettings) settings.enabled = True z3c.caching.registry.register(DummyView, 'testrule') settings.operationMapping = {'testrule': 'op1'} @implementer(ICachingOperation) @adapter(Interface, Interface) class DummyOperation(object): def __init__(self, published, request): self.published = published self.request = request def interceptResponse(self, rulename, response): return None def modifyResponse(self, rulename, response): response.addHeader('X-Cache-Foo', 'test') provideAdapter(DummyOperation, name='op1') view = DummyView() request = DummyRequest(view, DummyResponse()) MutatorTransform(view, request).transformIterable([''], 'utf-8') self.assertEqual({'PUBLISHED': view}, dict(request)) self.assertEqual( { 'X-Cache-Rule': ['testrule'], 'X-Cache-Operation': ['op1'], 'X-Cache-Foo': ['test'] }, dict(request.response))