def test_set_targets(self): proj = factories.ProjectFactory() reg = factories.RegistrationFactory(project=proj) job = ArchiveJob(src_node=proj, dst_node=reg, initiator=proj.creator) job.set_targets() assert_equal([t.name for t in job.target_addons], ['osfstorage', 'dropbox'])
def test_archiving_registrations_not_added_to_search_before_archival( self, mock_update_search): proj = factories.ProjectFactory() reg = factories.RegistrationFactory(project=proj) ArchiveJob(src_node=proj, dst_node=reg, initiator=proj.creator) reg.save() mock_update_search.assert_not_called()
def before_archive(node, user): link_archive_provider(node, user) job = ArchiveJob( src_node=node.registered_from, dst_node=node, initiator=user ) job.set_targets()
def test_get_target(self): proj = factories.ProjectFactory() reg = factories.RegistrationFactory(project=proj) job = ArchiveJob(src_node=proj, dst_node=reg, initiator=proj.creator) job.set_targets() dropbox = job.get_target('dropbox') assert_false(not dropbox) none = job.get_target('fake') assert_false(none)
def _create(cls, target_class, project=None, schema=None, user=None, template=None, data=None, archive=False, embargo=None, registration_approval=None, retraction=None, *args, **kwargs): save_kwargs(**kwargs) # Original project to be registered project = project or target_class(*args, **kwargs) project.save() # Default registration parameters #schema = schema or MetaSchema.find_one( # Q('name', 'eq', 'Open-Ended_Registration') #) schema = None user = user or project.creator template = template or "Template1" data = data or "Some words" auth = Auth(user=user) register = lambda: project.register_node( schema=schema, auth=auth, template=template, data=data, ) def add_approval_step(reg): if embargo: reg.embargo = embargo elif registration_approval: reg.registration_approval = registration_approval elif retraction: reg.retraction = retraction else: reg.require_approval(reg.creator) reg.save() reg.sanction.add_authorizer(reg.creator) reg.sanction.save() if archive: reg = register() add_approval_step(reg) else: with patch('framework.tasks.handlers.enqueue_task'): reg = register() add_approval_step(reg) with patch.object(reg.archive_job, 'archive_tree_finished', Mock(return_value=True)): reg.archive_job.status = ARCHIVER_SUCCESS reg.archive_job.save() reg.sanction.state = Sanction.APPROVED reg.sanction.save() ArchiveJob( src_node=project, dst_node=reg, initiator=user, ) reg.save() return reg
def test_archiving_nodes_not_added_to_search_on_archive_incomplete( self, mock_send, mock_update_search): proj = factories.ProjectFactory() reg = factories.RegistrationFactory(project=proj) job = ArchiveJob(src_node=proj, dst_node=reg, initiator=proj.creator) reg.save() with mock.patch( 'website.archiver.model.ArchiveJob.archive_tree_finished', mock.Mock(return_value=False)): listeners.archive_callback(reg) mock_update_search.assert_not_called()
def test_target_info(self): target = ArchiveTarget(name='neon-archive') target.save() job = ArchiveJob() job.target_addons.append(target) result = job.target_info() assert_equal(len(result), 1) item = result[0] assert_equal(item['name'], target.name) assert_equal(item['status'], target.status) assert_equal(item['stat_result'], target.stat_result) assert_equal(item['errors'], target.errors)
def test_archiving_nodes_added_to_search_on_archive_success_if_public(self, mock_send, mock_update_search): proj = factories.ProjectFactory() reg = factories.RegistrationFactory(project=proj) job = ArchiveJob( src_node=proj, dst_node=reg, initiator=proj.creator ) reg.save() with nested( mock.patch('website.archiver.model.ArchiveJob.archive_tree_finished', mock.Mock(return_value=True)), mock.patch('website.archiver.model.ArchiveJob.sent', mock.PropertyMock(return_value=False)), mock.patch('website.archiver.model.ArchiveJob.success', mock.PropertyMock(return_value=True)) ) as (mock_finished, mock_sent, mock_success): listeners.archive_callback(reg) mock_update_search.assert_called_once()
def _create(cls, target_class, project=None, schema=None, user=None, template=None, data=None, archive=False, *args, **kwargs): save_kwargs(**kwargs) # Original project to be registered project = project or target_class(*args, **kwargs) project.save() # Default registration parameters #schema = schema or MetaSchema.find_one( # Q('name', 'eq', 'Open-Ended_Registration') #) schema = None user = user or project.creator template = template or "Template1" data = data or "Some words" auth = Auth(user=user) register = lambda: project.register_node( schema=schema, auth=auth, template=template, data=data, ) ArchiveJob( src_node=project, dst_node=register, initiator=user, ) if archive: return register() else: with patch('framework.tasks.handlers.enqueue_task'): reg = register() archiver_utils.archive_success( reg, reg.registered_user ) return reg
def _create(cls, target_class, project=None, is_public=False, schema=None, data=None, archive=False, embargo=None, registration_approval=None, retraction=None, *args, **kwargs): save_kwargs(**kwargs) user = None if project: user = project.creator user = kwargs.get('user') or kwargs.get( 'creator') or user or UserFactory() kwargs['creator'] = user # Original project to be registered project = project or target_class(*args, **kwargs) if user._id not in project.permissions: project.add_contributor( contributor=user, permissions=permissions.CREATOR_PERMISSIONS, log=False, save=False) project.save() # Default registration parameters schema = schema or get_default_metaschema() data = data or {'some': 'data'} auth = Auth(user=user) register = lambda: project.register_node( schema=schema, auth=auth, data=data) def add_approval_step(reg): if embargo: reg.embargo = embargo elif registration_approval: reg.registration_approval = registration_approval elif retraction: reg.retraction = retraction else: reg.require_approval(reg.creator) reg.save() reg.sanction.add_authorizer(reg.creator) reg.sanction.save() if archive: reg = register() add_approval_step(reg) else: with patch('framework.tasks.handlers.enqueue_task'): reg = register() add_approval_step(reg) with patch.object(reg.archive_job, 'archive_tree_finished', Mock(return_value=True)): reg.archive_job.status = ARCHIVER_SUCCESS reg.archive_job.save() reg.sanction.state = Sanction.APPROVED reg.sanction.save() ArchiveJob( src_node=project, dst_node=reg, initiator=user, ) if is_public: reg.is_public = True reg.save() return reg
def test_repr(self): job = ArchiveJob() result = repr(job) assert_in('ArchiveJob', result) assert_in(str(job.done), result) assert_in(str(job._id), result)