view idavoll/test/test_backend.py @ 162:84cfe9fe38c5

Comply with the access model 'open'. Currently, the only implemented access model is 'open', so we should not check for the subscription of the requestor for item retrieval. We do reject outcasts.
author Ralph Meijer <ralphm@ik.nu>
date Wed, 06 Sep 2006 12:57:53 +0000
parents 21fcfb86433f
children ef22e4150caa
line wrap: on
line source

# Copyright (c) 2003-2006 Ralph Meijer
# See LICENSE for details.

from twisted.trial import unittest
from zope.interface import implements
from twisted.internet import defer
from twisted.words.protocols.jabber import jid

from idavoll import backend, storage

OWNER = jid.JID('owner@example.com')

class testNode:
    id = 'to-be-deleted'
    def get_affiliation(self, entity):
        if entity is OWNER:
            return defer.succeed('owner')

class testStorage:

    implements(storage.IStorage)

    def get_node(self, node_id):
        return defer.succeed(testNode())

    def delete_node(self, node_id):
        if node_id in ['to-be-deleted']:
            self.backend.delete_called = True
            return defer.succeed(None)
        else:
            return defer.fail(storage.NodeNotFound())

class NodeDeletionServiceTests:
    pre_delete_called = False
    delete_called = False

    def setUpClass(self):
        self.storage = testStorage()
        self.storage.backend = self

    def testDeleteNode(self):
        def pre_delete(node_id):
            self.pre_delete_called = True
            return defer.succeed(None)

        def cb(result):
            self.assert_(self.pre_delete_called)
            self.assert_(self.delete_called)

        self.backend.register_pre_delete(pre_delete)
        d = self.backend.delete_node('to-be-deleted', OWNER)
        d.addCallback(cb)

class GenericNodeDeletionServiceTestCase(unittest.TestCase,
                                         NodeDeletionServiceTests):

    def setUpClass(self):
        NodeDeletionServiceTests.setUpClass(self)
        from idavoll.generic_backend import BackendService, NodeDeletionService
        bs = BackendService(self.storage)
        self.backend = NodeDeletionService()
        self.backend.setServiceParent(bs)