def test_set_metadata(self): plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) self.assertEqual(plugin.metadata['homepage'], 'http://boundlessgeo.com') plugin.set_metadata('homepage', 'http://my.new.homepage') plugin = Plugin(key) self.assertEqual(plugin.metadata['homepage'], 'http://my.new.homepage') # Check blob metadata metadata = dict(validator(StringIO(plugin.blob))) self.assertEqual(plugin.metadata['homepage'], metadata['homepage'])
def test_load_from_zip(self): """ Create a Plugin from a zip file """ # Make plugin plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) # Check that the plugin is the same binary blob plugin_path = os.path.join(DATA_DIR, 'test_plugin_%s.zip' % 1) my_zip = open(plugin_path, 'rb') plugin_content = my_zip.read() self.assertEqual(plugin.blob, plugin_content) # Check that metadata are in the DB plugin = Plugin(key) self.assertEqual(plugin.metadata['name'], 'Test Plugin 1') self.assertEqual(plugin.metadata['qgisMinimumVersion'], '2.0') self.assertEqual(plugin.metadata['description'], 'This is my first awesome plugin for testing.') self.assertEqual(plugin.metadata['version'], '0.1') self.assertEqual(plugin.metadata['author'], 'Larry Shaffer (Boundless)') self.assertEqual( plugin.metadata['about'], 'Here is some interesting text about my first test plugin.') self.assertEqual(plugin.metadata['tracker'], 'https://github.com/boundlessgeo/QGIS/issues') self.assertEqual(plugin.metadata['repository'], 'https://github.com/boundlessgeo/QGIS') # Recommended items: self.assertEqual(plugin.metadata['tags'], 'boundless,test') self.assertEqual(plugin.metadata['homepage'], 'http://boundlessgeo.com') self.assertEqual(plugin.metadata['category'], 'Plugins') self.assertEqual(plugin.metadata['icon'], 'images/test_plugin_1.png') self.assertEqual(plugin.metadata['experimental'], 'False') self.assertEqual(plugin.metadata['deprecated'], 'False') # Delete plugin.delete(key) # Test def load_deleted(): Plugin(key) self.assertRaises(DoesNotExist, load_deleted)
def test_set_version(self): plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) plugin.set_metadata('version', '123.34') def load_deleted(): Plugin(key) self.assertRaises(DoesNotExist, load_deleted) plugin = Plugin(plugin.key) self.assertEqual(plugin.version, '123.34') metadata = dict(validator(StringIO(plugin.blob))) self.assertEqual(plugin.metadata['version'], metadata['version']) self.assertEqual(plugin.metadata['version'], '123.34')
def test_getter_metadata(self): plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) self.assertEqual(plugin.metadata['homepage'], 'http://boundlessgeo.com') self.assertEqual(plugin.metadata['homepage'], plugin.homepage)
def test_plugins_list(self): self.load_from_zip() self.load_from_zip(2) response = self.open_with_auth('/rest/plugins', method='GET') plugins = dict(json.loads(response.data)['plugins'].items()) for p in Plugin.all(): self.assertIn(p.key, plugins.keys()) for k, v in p.metadata.items(): self.assertEqual(getattr(p, k), v)
def test_load_from_zip(self): """ Create a Plugin from a zip file """ # Make plugin plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) # Check that the plugin is the same binary blob plugin_path = os.path.join(DATA_DIR, 'test_plugin_%s.zip' % 1) my_zip = open(plugin_path, 'rb') plugin_content = my_zip.read() self.assertEqual(plugin.blob, plugin_content) # Check that metadata are in the DB plugin = Plugin(key) self.assertEqual(plugin.metadata['name'], 'Test Plugin 1') self.assertEqual(plugin.metadata['qgisMinimumVersion'], '2.0') self.assertEqual(plugin.metadata['description'], 'This is my first awesome plugin for testing.') self.assertEqual(plugin.metadata['version'], '0.1') self.assertEqual(plugin.metadata['author'], 'Larry Shaffer (Boundless)') self.assertEqual(plugin.metadata['about'], 'Here is some interesting text about my first test plugin.') self.assertEqual(plugin.metadata['tracker'], 'https://github.com/boundlessgeo/QGIS/issues') self.assertEqual(plugin.metadata['repository'], 'https://github.com/boundlessgeo/QGIS') # Recommended items: self.assertEqual(plugin.metadata['tags'], 'boundless,test') self.assertEqual(plugin.metadata['homepage'], 'http://boundlessgeo.com') self.assertEqual(plugin.metadata['category'], 'Plugins') self.assertEqual(plugin.metadata['icon'], 'images/test_plugin_1.png') self.assertEqual(plugin.metadata['experimental'], 'False') self.assertEqual(plugin.metadata['deprecated'], 'False') # Delete plugin.delete(key) # Test def load_deleted(): Plugin(key) self.assertRaises(DoesNotExist, load_deleted)
def test_api_post_package(self): data = open(os.path.join(DATA_DIR, 'test_plugin_1.zip')).read() response = self.open_with_auth('/rest/package/', method='POST', data=data) response_data = json.loads(response.data) self.assertEqual(response_data['result'], 'success') self.assertEqual(response_data['plugin']['name'], u'Test Plugin 1') key = Plugin.make_key(response_data['plugin']['name'], response_data['plugin']['version']) # Loopback response = self.open_with_auth('/rest/package/%s' % key, method='GET') package = base64.decodestring(json.loads(response.data).values()[0]) self.assertEqual(package, open(os.path.join(DATA_DIR, 'test_plugin_1.zip')).read()) # Get the package and check the zip file metadata = dict(validator(StringIO(package))) self.assertEqual(metadata['name'], response_data['plugin']['name']) self.assertEqual(metadata['version'], response_data['plugin']['version']) self.assertEqual(metadata['author'], response_data['plugin']['author'])
def test_api_post_package(self): data = open(os.path.join(DATA_DIR, 'test_plugin_1.zip')).read() response = self.open_with_auth('/rest/package/', method='POST', data=data) response_data = json.loads(response.data) self.assertEqual(response_data['result'], 'success') self.assertEqual(response_data['plugin']['name'], u'Test Plugin 1') key = Plugin.make_key(response_data['plugin']['name'], response_data['plugin']['version']) # Loopback response = self.open_with_auth('/rest/package/%s' % key, method='GET') package = base64.decodestring(json.loads(response.data).values()[0]) self.assertEqual( package, open(os.path.join(DATA_DIR, 'test_plugin_1.zip')).read()) # Get the package and check the zip file metadata = dict(validator(StringIO(package))) self.assertEqual(metadata['name'], response_data['plugin']['name']) self.assertEqual(metadata['version'], response_data['plugin']['version']) self.assertEqual(metadata['author'], response_data['plugin']['author'])
def load_from_zip(self, version=1): plugin_path = os.path.join(DATA_DIR, 'test_plugin_%s.zip' % version) zip_file = open(plugin_path, 'rb') plugin = Plugin.create_from_zip(zip_file) self.assertIsNotNone(Plugin(plugin.key)) return plugin
def tearDown(self): for p in Plugin.all(): p.delete(p.key)
def test_make_key(self): self.assertEqual(Plugin.make_key('uno', 'due'), 'Plugin:uno:due')
def setUp(self): for p in Plugin.all(): p.delete(p.key)
def load_deleted(): Plugin(plugin.key)
def _check_key(i, version): key = Plugin.make_key('Test Plugin %s' % i, '0.1') return key in [p.key for p in Plugin.all(version=version)]
def test_getter_metadata_empty(self): plugin = self.load_from_zip() # Check that the plugin is in the database key = plugin.key self.assertIsNotNone(Plugin(key)) self.assertEquals(plugin.not_exists, '')
def load_deleted(): Plugin(key)
def _check_key(i, version): key = Plugin.make_key('Test Plugin %s' % i, '0.1' ) return key in [p.key for p in Plugin.all(version=version)]