def test_upload_asset_url_type(self, name, meta, exp_meta, form): content = deepcopy(self.LINK_CONTENT) if meta is not None: content['metadata'] = meta self._mock_resource_type(form) am = asset_manager.AssetManager() am.rollback_logger = {'files': [], 'models': []} am.upload_asset(self._user, content) self.assertEquals({ 'files': [], 'models': [self.res_mock] }, am.rollback_logger) # Check calls asset_manager.ResourcePlugin.objects.filter.assert_called_once_with( name='service') # Check resource creation asset_manager.Resource.objects.create.assert_called_once_with( provider=self._user.userprofile.current_organization, version='', download_link=self.LINK, resource_path='', content_type='application/json', resource_type='service', state='', is_public=False, meta_info=exp_meta)
def test_upload_asset(self, name, data, side_effect=None, override=False, err_type=None, err_msg=None, file_name='example.wgt'): if side_effect is not None: side_effect(self) am = asset_manager.AssetManager() am.rollback_logger = { 'files': [], 'models': [] } error = None try: resource = am.upload_asset(self._user, data, file_=self._file) except Exception as e: error = e if err_type is None: # Check not error self.assertTrue(error is None) # Check calls self.assertEquals(self.res_mock, resource) self.assertEquals("http://locationurl.com/", resource.get_url()) self.assertEqual("http://uri.com/", resource.get_uri()) self._check_file_calls(file_name) # Check rollback logger self.assertEquals({ 'files': ["/home/test/media/assets/test_user/{}".format(file_name)], 'models': [self.res_mock] }, am.rollback_logger) # Check file calls if self._file is not None: self._file.seek.assert_called_once_with(0) asset_manager.os.mkdir.assert_called_once_with("/home/test/media/assets/test_user") # Check override calls if override: asset_manager.Resource.objects.get.assert_called_once_with(resource_path='media/assets/test_user/{}'.format(file_name)) self.res_mock.delete.assert_called_once_with() # Check resource creation asset_manager.Resource.objects.create.assert_called_once_with( provider=self._user.userprofile.current_organization, version='', download_link='http://testdomain.com/charging/media/assets/test_user/{}'.format(urllib.quote(file_name)), resource_path='media/assets/test_user/{}'.format(file_name), content_type='application/x-widget', resource_type='', state='', is_public=False, meta_info={} ) else: self.assertTrue(isinstance(error, err_type)) self.assertEquals(err_msg, unicode(error))
def test_resource_retrieving(self, expected_result, pagination=None, err_type=None, err_msg=None): # Call the method error = None result = None try: am = asset_manager.AssetManager() result = am.get_provider_assets_info(self.user, pagination) except Exception as e: error = e self.validate_response(result, expected_result, error, err_type, err_msg)
def test_assets_from_product(self, name, expected_result, side_effect=None, err_type=None, err_msg=None): if side_effect is not None: side_effect(self) error = None result = None try: am = asset_manager.AssetManager() result = am.get_product_assets('123') except Exception as e: error = e asset_manager.Resource.objects.filter.assert_called_once_with(product_id='123') self.validate_response(result, expected_result, error, err_type, err_msg)
def test_single_asset_retrieving(self, name, expected_result, side_effect=None, err_type=None, err_msg=None): if side_effect is not None: side_effect(self) error = None result = None try: am = asset_manager.AssetManager() result = am.get_asset_info('111') except Exception as e: error = e self.validate_response(result, expected_result, error, err_type, err_msg)
def test_upgrade_asset_error(self, name, asset_mock, err_type, err_msg): self._mock_timer() asset_resp = asset_mock(self) asset_manager.Resource.objects.filter.return_value = asset_resp error = None try: am = asset_manager.AssetManager() am.upgrade_asset('1', self._user, UPLOAD_CONTENT, file_=None) except Exception as e: error = e self.assertTrue(isinstance(error, err_type)) self.assertEquals(err_msg, str(error))
def test_upload_asset_url_type_error(self, name, content, side_effect, meta, form, err_type, err_msg): if meta is not None: content['metadata'] = meta self._mock_resource_type(form) if side_effect is not None: side_effect(self) am = asset_manager.AssetManager() error = None try: am.upload_asset(self._user, content) except Exception as e: error = e self.assertTrue(isinstance(error, err_type)) self.assertEquals(err_msg, unicode(error))
def _test_timer(self, state, check_calls): asset_pk = '1234' lock = MagicMock() asset_manager.DocumentLock = MagicMock(return_value=lock) asset = MagicMock(pk=asset_pk, state=state) asset_manager.Resource.objects.get.return_value = asset asset_manager.downgrade_asset = MagicMock() am = asset_manager.AssetManager() am._to_downgrade = MagicMock(pk=asset_pk) am._upgrade_timer() asset_manager.DocumentLock.assert_called_once_with('wstore_resource', asset_pk, 'asset') lock.wait_document.assert_called_once_with() lock.unlock_document.assert_called_once_with() asset_manager.Resource.objects.get.assert_called_once_with(pk=asset_pk) check_calls(asset)
def test_upload_asset_pending(self): content = deepcopy(self.LINK_CONTENT) content['metadata'] = self.BASIC_META self._mock_resource_type(self.BASIC_FORM) am = asset_manager.AssetManager() am.rollback_logger = { 'files': [], 'models': [] } assets = [MagicMock(product_id=None), MagicMock(product_id=None)] asset_manager.Resource.objects.filter.return_value = assets am.upload_asset(self._user, content) # Check calls asset_manager.Resource.objects.filter.assert_called_once_with( download_link=self.LINK, provider=self._user.userprofile.current_organization) assets[0].delete.assert_called_once_with() assets[1].delete.assert_called_once_with()
def test_upgrade_asset(self): asset_id = '1' prev_path = 'media/assets/test_user/example1.wgt' prev_link = 'http://testdomain.com/charging/media/assets/test_user/example1.wgt' prev_type = 'application/x-widget-old' prev_version = '1.0' asset = MagicMock(product_id='2', is_public=False, resource_path=prev_path, download_link=prev_link, content_type=prev_type, version=prev_version, state='attached', old_versions=[]) asset_manager.Resource.objects.filter.return_value = [asset] timer = self._mock_timer() am = asset_manager.AssetManager() am.rollback_logger = {'files': [], 'models': []} resource = am.upgrade_asset(asset_id, self._user, UPLOAD_CONTENT, file_=None) # Check calls asset_manager.Resource.objects.filter.assert_called_once_with( pk=asset_id) self.assertEquals(asset, resource) self._check_file_calls() # Check rollback logger self.assertEquals( { 'files': ["/home/test/media/assets/test_user/example.wgt"], 'models': [] }, am.rollback_logger) self.assertEquals(asset, am._to_downgrade) # Check resource creation self.assertEquals('media/assets/test_user/example.wgt', asset.resource_path) self.assertEquals( 'http://testdomain.com/charging/media/assets/test_user/example.wgt', asset.download_link) self.assertEquals('application/x-widget', asset.content_type) self.assertEquals('upgrading', asset.state) self.assertEquals('', asset.version) self.assertEquals(1, len(asset.old_versions)) old_version = asset.old_versions[0] self.assertEquals(prev_path, old_version['resource_path']) self.assertEquals(prev_link, old_version['download_link']) self.assertEquals(prev_type, old_version['content_type']) self.assertEquals(prev_version, old_version['version']) asset_manager.threading.Timer.assert_called_once_with( 15, am._upgrade_timer) timer.start.assert_called_once_with()