Example #1
0
 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'])
Example #2
0
 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()
Example #3
0
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()
Example #4
0
 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)
Example #5
0
    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
Example #6
0
 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()
Example #7
0
    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)
Example #8
0
 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()
Example #9
0
    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
Example #10
0
    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
Example #11
0
 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)