def test_widget_deletion(self): resource = CatalogueResource.objects.get(vendor='Test', short_name='Test Widget', version='1.0.0') resource_pk = resource.pk xhtml_pk = resource.widget.pk delete_resource(resource, self.user) self.assertRaises(XHTML.DoesNotExist, XHTML.objects.get, pk=xhtml_pk) self.assertRaises(Widget.DoesNotExist, Widget.objects.get, resource__pk=resource_pk) self.assertRaises(CatalogueResource.DoesNotExist, CatalogueResource.objects.get, pk=resource_pk)
def test_basic_packaged_operator_deployment(self): wgt_file = WgtFile(os.path.join(os.path.dirname(wirecloud.commons.test.__file__), 'test-data', 'Wirecloud_TestOperator_1.0.zip')) deployment_path = catalogue.wgt_deployer.get_base_dir('Wirecloud', 'TestOperator', '1.0') install_resource_to_user(self.user, file_contents=wgt_file, packaged=True) resource = CatalogueResource.objects.get(vendor='Wirecloud', short_name='TestOperator', version='1.0') self.assertTrue(os.path.isdir(deployment_path)) delete_resource(resource, self.user) self.assertRaises(CatalogueResource.DoesNotExist, CatalogueResource.objects.get, vendor='Wirecloud', short_name='TestOperator', version='1.0') self.assertFalse(os.path.exists(deployment_path))
def test_basic_packaged_widget_deployment(self): wgt_file = WgtFile(os.path.join(os.path.dirname(__file__), 'test-data', 'basic_widget.wgt')) catalogue_deployment_path = catalogue.wgt_deployer.get_base_dir('Morfeo', 'Test', '0.1') deployment_path = wirecloud.platform.widget.utils.wgt_deployer.get_base_dir('Morfeo', 'Test', '0.1') install_resource_to_user(self.user, file_contents=wgt_file, packaged=True) resource = CatalogueResource.objects.get(vendor='Morfeo', short_name='Test', version='0.1') resource.widget self.assertTrue(os.path.isdir(deployment_path)) self.assertTrue(os.path.isdir(catalogue_deployment_path)) delete_resource(resource, self.user) self.assertRaises(CatalogueResource.DoesNotExist, CatalogueResource.objects.get, vendor='Morfeo', short_name='Test', version='0.1') self.assertFalse(os.path.exists(deployment_path)) self.assertFalse(os.path.exists(catalogue_deployment_path))
def delete(self, request, vendor, name, version=None): response_json = {'result': 'ok', 'removedIWidgets': []} if version is not None: #Delete only the specified version of the widget resource = get_object_or_404(CatalogueResource, short_name=name, vendor=vendor, version=version) result = delete_resource(resource, request.user) response_json['removedIWidgets'] = result['removedIWidgets'] else: #Delete all versions of the widget resources = get_list_or_404(CatalogueResource, short_name=name, vendor=vendor) for resource in resources: result = delete_resource(resource, request.user) response_json['removedIWidgets'] += result['removedIWidgets'] return HttpResponse(json.dumps(response_json), mimetype='application/json; charset=UTF-8')
def handle(self, *args, **options): if len(args) < 1: raise CommandError(_('Wrong number of arguments')) user = None if not options['deploy_only']: user = User.objects.get(pk=1) for file_name in args: try: f = open(file_name, 'rb') wgt_file = WgtFile(f) except: print _('Failed to read from %(file_name)s') % {'file_name': file_name} continue try: template_contents = wgt_file.get_template() template = TemplateParser(template_contents) try: add_widget_from_wgt(f, user, wgt_file=wgt_file, template=template, deploy_only=options['deploy_only']) except IntegrityError: if not options['reinstall']: raise else: old_resource = CatalogueResource.objects.get(vendor=template.get_resource_vendor(), short_name=template.get_resource_name(), version=template.get_resource_version() ) delete_resource(old_resource, user) add_widget_from_wgt(f, user, wgt_file=wgt_file, template=template) wgt_file.close() f.close() print _('Successfully imported %(name)s widget') % {'name': template.get_resource_name()} except IntegrityError: print _('Version %(version)s of the %(name)s widget (from %(vendor)s) already exists') % { 'name': template.get_resource_name(), 'version': template.get_resource_version(), 'vendor': template.get_resource_vendor(), } except: print _('Failed to import widget from %(file_name)s') % {'file_name': file_name}
def test_widget_code_cache(self): template_uri = "http://example.com/path/widget.xml" template = self.read_template('template1.xml') client = Client() client.login(username='******', password='******') widget_id = { 'vendor': 'Wirecloud', 'name': 'test', 'version': '0.1', } downloader.download_http_content.set_response(template_uri, template) downloader.download_http_content.set_response('http://example.com/path/test.html', BASIC_HTML_GADGET_CODE) resource = install_resource_to_user(self.user, file_contents=template, templateURL=template_uri) resource_pk = resource.pk xhtml_pk = resource.widget.pk # Cache widget code response = client.get(reverse('wirecloud.widget_code_entry', kwargs=widget_id)) self.assertEqual(response.status_code, 200) old_code = response.content delete_resource(resource, self.user) self.assertRaises(XHTML.DoesNotExist, XHTML.objects.get, pk=xhtml_pk) self.assertRaises(Widget.DoesNotExist, Widget.objects.get, resource__pk=resource_pk) self.assertRaises(CatalogueResource.DoesNotExist, CatalogueResource.objects.get, pk=resource_pk) # Use a different xhtml code downloader.download_http_content.set_response('http://example.com/path/test.html', 'cache') install_resource_to_user(self.user, file_contents=template, templateURL=template_uri) response = client.get(reverse('wirecloud.widget_code_entry', kwargs=widget_id)) self.assertEqual(response.status_code, 200) new_code = response.content self.assertNotEqual(old_code, new_code)
def delete(self, request, vendor, name, version=None): response_json = {'affectedVersions': [], 'removedIWidgets': []} if version is not None: # Delete only the specified version of the widget resources = (get_object_or_404(CatalogueResource, short_name=name, vendor=vendor, version=version), ) else: # Delete all versions of the widget resources = get_list_or_404(CatalogueResource, short_name=name, vendor=vendor) for resource in resources: result = delete_resource(resource, request.user) response_json['affectedVersions'].append(resource.version) response_json['removedIWidgets'] += result['removedIWidgets'] return HttpResponse(json.dumps(response_json), content_type='application/json; charset=UTF-8')