class BaseServiceMakerTests(StoreTestCase): """ Utility class for ServiceMaker tests. """ configOptions = None @inlineCallbacks def setUp(self): yield super(BaseServiceMakerTests, self).setUp() self.options = TestCalDAVOptions() self.options.parent = Options() self.options.parent["gid"] = None self.options.parent["uid"] = None self.options.parent["nodaemon"] = None self.config = ConfigDict(DEFAULT_CONFIG) accountsFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/accounts.xml") resourcesFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/resources.xml") augmentsFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/augments.xml") pemFile = os.path.join(sourceRoot, "twistedcaldav/test/data/server.pem") self.config["DirectoryService"] = { "params": {"xmlFile": accountsFile}, "type": "twistedcaldav.directory.xmlfile.XMLDirectoryService" } self.config["ResourceService"] = { "params": {"xmlFile": resourcesFile}, } self.config["AugmentService"] = { "params": {"xmlFiles": [augmentsFile]}, "type": "twistedcaldav.directory.augment.AugmentXMLDB" } self.config.UseDatabase = False self.config.ServerRoot = self.mktemp() self.config.ConfigRoot = "config" self.config.ProcessType = "Single" self.config.SSLPrivateKey = pemFile self.config.SSLCertificate = pemFile self.config.EnableSSL = True self.config.Memcached.Pools.Default.ClientEnabled = False self.config.Memcached.Pools.Default.ServerEnabled = False self.config.DirectoryAddressBook.Enabled = False self.config.UsePackageTimezones = True if self.configOptions: self.config.update(self.configOptions) os.mkdir(self.config.ServerRoot) os.mkdir(os.path.join(self.config.ServerRoot, self.config.DocumentRoot)) os.mkdir(os.path.join(self.config.ServerRoot, self.config.DataRoot)) os.mkdir(os.path.join(self.config.ServerRoot, self.config.ConfigRoot)) self.configFile = self.mktemp() self.writeConfig() def tearDown(self): config.setDefaults(DEFAULT_CONFIG) config.reset() def writeConfig(self): """ Flush self.config out to self.configFile """ writePlist(self.config, self.configFile) def makeService(self, patcher=passthru): """ Create a service by calling into CalDAVServiceMaker with self.configFile """ self.options.parseOptions(["-f", self.configFile]) maker = CalDAVServiceMaker() maker = patcher(maker) return maker.makeService(self.options) def getSite(self): """ Get the server.Site from the service by finding the HTTPFactory. """ service = self.makeService() for listeningService in inServiceHierarchy( service, # FIXME: need a better predicate for 'is this really an HTTP # factory' but this works for now. # NOTE: in a database 'single' configuration, PostgresService # will prevent the HTTP services from actually getting added to # the hierarchy until the hierarchy has started. # 'underlyingSite' assigned in caldav.py lambda x: hasattr(x, 'underlyingSite') ): return listeningService.underlyingSite raise RuntimeError("No site found.")
class BaseServiceMakerTests(TestCase): """ Utility class for ServiceMaker tests. """ configOptions = None def setUp(self): TestCase.setUp(self) self.options = TestCalDAVOptions() self.options.parent = Options() self.options.parent["gid"] = None self.options.parent["uid"] = None self.options.parent["nodaemon"] = None self.config = ConfigDict(DEFAULT_CONFIG) accountsFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/accounts.xml") resourcesFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/resources.xml") augmentsFile = os.path.join(sourceRoot, "twistedcaldav/directory/test/augments.xml") pemFile = os.path.join(sourceRoot, "twistedcaldav/test/data/server.pem") self.config["DirectoryService"] = { "params": {"xmlFile": accountsFile}, "type": "twistedcaldav.directory.xmlfile.XMLDirectoryService" } self.config["ResourceService"] = { "params": {"xmlFile": resourcesFile}, } self.config["AugmentService"] = { "params": {"xmlFiles": [augmentsFile]}, "type": "twistedcaldav.directory.augment.AugmentXMLDB" } self.config.ServerRoot = self.mktemp() self.config.ConfigRoot = "config" self.config.ProcessType = "Slave" self.config.SSLPrivateKey = pemFile self.config.SSLCertificate = pemFile self.config.Memcached.Pools.Default.ClientEnabled = False self.config.Memcached.Pools.Default.ServerEnabled = False self.config.DirectoryAddressBook.Enabled = False self.config.SudoersFile = "" if self.configOptions: self.config.update(self.configOptions) os.mkdir(self.config.ServerRoot) os.mkdir(os.path.join(self.config.ServerRoot, self.config.DocumentRoot)) os.mkdir(os.path.join(self.config.ServerRoot, self.config.DataRoot)) os.mkdir(os.path.join(self.config.ServerRoot, self.config.ConfigRoot)) self.configFile = self.mktemp() self.writeConfig() def tearDown(self): config.setDefaults(DEFAULT_CONFIG) config.reset() def writeConfig(self): """ Flush self.config out to self.configFile """ writePlist(self.config, self.configFile) def makeService(self): """ Create a service by calling into CalDAVServiceMaker with self.configFile """ self.options.parseOptions(["-f", self.configFile]) return CalDAVServiceMaker().makeService(self.options) def getSite(self): """ Get the server.Site from the service by finding the HTTPFactory """ service = self.makeService() return service.services[0].args[1].protocolArgs["requestFactory"]