Ejemplo n.º 1
0
    def test_register_remote(self):
        """
        Registering and deregistering remotely exposed attributes and functions
        
        Verifies:
            * only specified remote is added and removed
            * attributes are wrapped
            * functions are mappable
            * methods can have secure param
            * remote is removed if no more mapped functions exist
        """
        manager = ModuleManager()
        module = Bar()
        manager.register_remote(module, "REMOTE0", module.foo)
        manager.register_remote(module, "REMOTE0", (module.bar, True))
        manager.register_remote(module, "REMOTE1", "xoo")
        manager.register_remote(module, "REMOTE1", ("zoo", True))

        self.assert_("REMOTE0" in manager._remotes)
        self.assert_("REMOTE1" in manager._remotes)

        remotes0 = manager._remotes["REMOTE0"]
        remotes1 = manager._remotes["REMOTE1"]
        self.assert_("foo" in remotes0)
        self.assert_("bar" in remotes0)
        self.assert_("xoo" in remotes1)
        self.assert_("zoo" in remotes1)

        manager.deregister_remote(module, "REMOTE0", module.foo)
        manager.deregister_remote(module, "REMOTE0", (module.bar, True))
        manager.deregister_remote(module, "REMOTE1", "xoo")
        manager.deregister_remote(module, "REMOTE1", ("zoo", True))

        self.assertFalse("REMOTE0" in manager._remotes)
        self.assertFalse("REMOTE1" in manager._remotes)
        self.assertFalse(manager._remotes)