def test_extension_list_sync(self): """Testing ExtensionManager extension list synchronization cross-process """ key = 'extension-list-sync' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint]) manager1.load() manager2.load() self.assertEqual(len(manager1.get_installed_extensions()), 1) self.assertEqual(len(manager2.get_installed_extensions()), 1) self.assertEqual(len(manager1.get_enabled_extensions()), 0) self.assertEqual(len(manager2.get_enabled_extensions()), 0) manager1.enable_extension(self.extension_class.id) self.assertEqual(len(manager1.get_enabled_extensions()), 1) self.assertEqual(len(manager2.get_enabled_extensions()), 0) self.assertFalse(manager1.is_expired()) self.assertTrue(manager2.is_expired()) manager2.load(full_reload=True) self.assertEqual(len(manager1.get_enabled_extensions()), 1) self.assertEqual(len(manager2.get_enabled_extensions()), 1) self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired())
def test_load_blocks_sync_gen(self): """Testing ExtensionManager.load blocks bumping sync generation number """ key = 'check-expired-test' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint]) manager1.load() manager1.enable_extension(self.extension_class.id) manager2.load() self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Trigger a save whenever the extension initializes. self.extension_class.initialize = lambda ext: ext.settings.save() # Bump the generation number. extension = manager2.get_enabled_extension(self.extension_class.id) extension.settings.save() self.assertNotEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Loading now should retain the new sync generation number, instead # of bumping it. manager1.load(full_reload=True) self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen)
def setUp(self): class TestExtension(Extension): """An empty, dummy extension for testing""" css_bundles = { 'default': { 'source_filenames': ['test.css'], } } js_bundles = { 'default': { 'source_filenames': ['test.js'], } } self.key = 'test_key' self.extension_class = TestExtension self.manager = ExtensionManager(self.key) self.fake_entrypoint = Mock() self.fake_entrypoint.load = Mock(return_value=self.extension_class) self.fake_entrypoint.dist = Mock() self.test_author = 'Test author lorem ipsum' self.test_description = 'Test description lorem ipsum' self.test_email = 'Test [email protected]' self.test_home_page = 'http://www.example.com' self.test_license = 'Test License MIT GPL Apache Drivers' self.test_module_name = 'testextension.dummy.dummy' self.test_module_to_app = 'testextension.dummy' self.test_project_name = 'TestProjectName' self.test_summary = 'Test summary lorem ipsum' self.test_version = '1.0' self.test_htdocs_path = os.path.join(settings.EXTENSIONS_STATIC_ROOT, self.test_project_name) self.test_metadata = { 'Name': self.test_project_name, 'Version': self.test_version, 'Summary': self.test_summary, 'Description': self.test_description, 'Author': self.test_author, 'Author-email': self.test_email, 'License': self.test_license, 'Home-page': self.test_home_page, } self.fake_entrypoint.dist.get_metadata_lines = Mock( return_value=[ "%s: %s" % (key, value) for key, value in six.iteritems(self.test_metadata) ]) self.fake_entrypoint.dist.project_name = self.test_project_name self.fake_entrypoint.dist.version = self.test_version self.manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint] ) self.manager.load()
def setUp(self): manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=manager) for index in range(0, 5): self.extension.hooks.add(Mock())
def setUp(self): super(WebAPICapabilitiesHookTests, self).setUp() manager = ExtensionManager('') self.extension = WebAPICapabilitiesExtension( extension_manager=manager) self.url = get_root_url()
def setUpClass(cls): super(ExtensionEnabledWebAPIScopeDictionaryTests, cls).setUpClass() cls._extension_manager = ExtensionManager('') cls._resources = make_resource_tree( mixins=[ ResourceOAuth2TokenMixin, ], extension_manager=cls._extension_manager) class TestExtensionResource(cls._resources.base_resource): """An example resource on an extension.""" name = 'test-ext' allowed_methods = ('GET', 'POST', 'PUT', 'DELETE') cls._extension_resource = TestExtensionResource() class TestExtension(Extension): """An example extension.""" extension_id = \ 'djblets.webapi.tests.test_oauth2_scopes.TestExtension' resources = [cls._extension_resource] registration = RegisteredExtension() cls.extension_class = TestExtension
def get_extension_manager(): global _extension_manager if not _extension_manager: _extension_manager = ExtensionManager("reviewboard.extensions") return _extension_manager
def setUp(self): super(EmailHookTests, self).setUp() manager = ExtensionManager('') self.extension = DummyExtension(extension_manager=manager) mail.outbox = []
def setUp(self): self.mgr = ExtensionManager('') self.ext_resource = ExtensionResource(self.mgr) self.root_resource = TestRootResource([self.ext_resource]) self.request = RequestFactory().get('/') super(ExtensionRootResourceMixinTests, self).setUp()
def setUp(self): manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=manager) self.extension_hook_class = TestExtensionHook self.dummy_hook = Mock() self.extension_hook_class.add_hook(self.dummy_hook)
def setUp(self): manager = ExtensionManager('') self.test_extension = \ TestExtensionWithRegistration(extension_manager=manager) self.patterns = patterns( '', (r'^url_hook_test/', include('djblets.extensions.test.urls'))) self.url_hook = URLHook(self.test_extension, self.patterns)
def setUp(self): manager = ExtensionManager('') self.test_extension = \ TestExtensionWithRegistration(extension_manager=manager) self.signal = Signal() self.spy_on(self._on_signal_fired) self.spy_on(self._on_signal_exception)
def test_extension_settings_sync(self): """Testing ExtensionManager extension settings synchronization cross-process """ key = 'extension-settings-sync' setting_key = 'foo' setting_val = 'abc123' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint]) manager1.load() extension1 = manager1.enable_extension(self.extension_class.id) manager2.load() self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertNotEqual(extension2, None) self.assertFalse(setting_key in extension1.settings) self.assertFalse(setting_key in extension2.settings) extension1.settings[setting_key] = setting_val extension1.settings.save() self.assertFalse(setting_key in extension2.settings) self.assertFalse(manager1.is_expired()) self.assertTrue(manager2.is_expired()) manager2.load(full_reload=True) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) self.assertTrue(setting_key in extension1.settings) self.assertTrue(setting_key in extension2.settings) self.assertEqual(extension1.settings[setting_key], setting_val) self.assertEqual(extension2.settings[setting_key], setting_val)
def setUp(self): manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=manager) for index in range(0, 5): hook = DummyHook(self.extension) self.spy_on(hook.shutdown) self.extension.hooks.add(hook)
def setUp(self): super(SandboxTests, self).setUp() manager = ExtensionManager('') self.extension = SandboxExtension(extension_manager=manager) self.factory = RequestFactory() self.user = User.objects.create_user(username='******', email='', password='******')
def get_extension_manager(self): """Return an extension manager for the test. The result will always be a new, un-keyed extension manager. Returns: djblets.extensions.manager.ExtensionManager: The new extension manager. """ return ExtensionManager('')
def setUp(self): super(RootResourceTemplateRegistrationTests, self).setUp() self.ext_mgr = ExtensionManager('') self.ext_res = ExtensionResource(self.ext_mgr) self.root_res = RootResource([self.ext_res]) self.root_res._registered_uri_templates = { self.ext_res: { 'extensions': 'http://localhost:8080/api/extensions/' }, None: { 'extensions': 'http://localhost:8080/api/extensions/none/' }, }
def setUp(self): manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=manager) self.hook_with_applies_name = "template-hook-with-applies-name" self.hook_no_applies_name = "template-hook-no-applies-name" self.template_hook_no_applies = TemplateHook(self.extension, self.hook_no_applies_name, "test_module/some_template.html", []) self.template_hook_with_applies = TemplateHook(self.extension, self.hook_with_applies_name, "test_module/some_template.html", [ 'test-url-name', 'url_2', 'url_3', ] ) self.fake_request = Mock() self.fake_request._djblets_extensions_kwargs = {} self.fake_request.path_info = '/' self.context = { 'request': self.fake_request, }
def setUp(self): manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=manager) self.extension_hook = TestExtensionHook(self.extension)
def setUp(self): super(HookTests, self).setUp() manager = ExtensionManager('') self.extension = DummyExtension(extension_manager=manager)
def setUp(self): super(SandboxTests, self).setUp() manager = ExtensionManager('') self.extension = SandboxExtension(extension_manager=manager)
def setUp(self): self.manager = ExtensionManager('') self.extension = \ TestExtensionWithRegistration(extension_manager=self.manager)
def setUp(self): manager = ExtensionManager('') self.extension = DummyExtension(extension_manager=manager)