Ejemplo n.º 1
0
 def test_find_failed_registrations(self):
     failures = []
     legacy = []
     delta = datetime.timedelta(days=2)
     for i in range(5):
         reg = factories.RegistrationFactory()
         reg.archive_job._fields['datetime_initiated'].__set__(
             reg.archive_job, datetime.datetime.now() - delta, safe=True)
         reg.save()
         ArchiveJob.remove_one(reg.archive_job)
         legacy.append(reg._id)
     for i in range(5):
         reg = factories.RegistrationFactory()
         reg.archive_job._fields['datetime_initiated'].__set__(
             reg.archive_job, datetime.datetime.now() - delta, safe=True)
         reg.save()
         for addon in ['osfstorage', 'dropbox']:
             reg.archive_job._set_target(addon)
             reg.archive_job.update_target(addon, ARCHIVER_INITIATED)
         reg.archive_job.sent = False
         reg.archive_job.save()
         failures.append(reg._id)
     pending = []
     for i in range(5):
         reg = factories.RegistrationFactory()
         for addon in ['osfstorage', 'dropbox']:
             reg.archive_job._set_target(addon)
             reg.archive_job.update_target(addon, ARCHIVER_INITIATED)
         reg.archive_job.save()
         pending.append(reg)
     failed = scripts.find_failed_registrations()
     assert_items_equal([f._id for f in failed], failures)
     for pk in legacy:
         assert_false(pk in failed)
Ejemplo n.º 2
0
    def test_field_with_callable_related_attrs(self):
        req = make_drf_request_with_version(version='2.0')
        project = factories.ProjectFactory()
        node = factories.NodeFactory(parent=project)
        data = self.BasicNodeSerializer(node, context={
            'request': req
        }).data['data']
        assert_not_in('registered_from', data['relationships'])

        registration = factories.RegistrationFactory(project=node)
        data = self.BasicNodeSerializer(registration, context={
            'request': req
        }).data['data']
        field = data['relationships']['registered_from']['links']
        assert_in('/v2/nodes/{}/'.format(node._id), field['related']['href'])

        registration_registration = factories.RegistrationFactory(
            project=registration)
        data = self.BasicNodeSerializer(registration_registration,
                                        context={
                                            'request': req
                                        }).data['data']
        field = data['relationships']['registered_from']['links']
        assert_in('/v2/registrations/{}/'.format(registration._id),
                  field['related']['href'])
Ejemplo n.º 3
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)
     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()
Ejemplo n.º 4
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()
Ejemplo n.º 5
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'])
Ejemplo n.º 6
0
 def test_archive_success_adds_registered_logs(self, mock_enqueue):
     proj = factories.ProjectFactory()
     len_logs = len(proj.logs)
     reg = factories.RegistrationFactory(project=proj, archive=True)
     archiver_utils.archive_success(reg, proj.creator)
     assert_equal(len(proj.logs), len_logs + 1)
     assert_equal([p for p in proj.logs][-1].action, NodeLog.PROJECT_REGISTERED)
Ejemplo n.º 7
0
 def test_archive_callback_on_tree_sends_only_one_email(self, mock_send_success, mock_arhive_success):
     proj = factories.NodeFactory()
     child = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=child)
     reg = factories.RegistrationFactory(project=proj)
     rchild = reg.nodes[0]
     rchild2 = rchild.nodes[0]
     for node in [reg, rchild, rchild2]:
         for addon in ['dropbox', 'osfstorage']:
             node.archive_job._set_target(addon)
     for node in [reg, rchild, rchild2]:
         for addon in ['dropbox', 'osfstorage']:
             node.archive_job.update_target(addon, ARCHIVER_INITIATED)
     for addon in ['dropbox', 'osfstorage']:
         rchild.archive_job.update_target(addon, ARCHIVER_SUCCESS)
     rchild.save()
     listeners.archive_callback(rchild)
     mock_send_success.assert_not_called()
     for addon in ['dropbox', 'osfstorage']:
         reg.archive_job.update_target(addon, ARCHIVER_SUCCESS)
     reg.save()
     listeners.archive_callback(reg)
     mock_send_success.assert_not_called()
     for addon in ['dropbox', 'osfstorage']:
         rchild2.archive_job.update_target(addon, ARCHIVER_SUCCESS)
     rchild2.save()
     listeners.archive_callback(rchild2)
     mock_send_success.assert_called()
Ejemplo n.º 8
0
    def test_on_complete_sets_state_to_approved(self):
        user = factories.UserFactory()
        registration = factories.RegistrationFactory(creator=user)
        registration.require_approval(user)

        assert_true(registration.registration_approval.is_pending_approval)  # sanity check
        registration.registration_approval._on_complete(None)
        assert_false(registration.registration_approval.is_pending_approval)
Ejemplo n.º 9
0
 def test_delete_registration_tree_deletes_backrefs(self):
     proj = factories.NodeFactory()
     factories.NodeFactory(parent=proj)
     comp2 = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=comp2)
     reg = factories.RegistrationFactory(project=proj)
     archiver_utils.delete_registration_tree(reg)
     assert_false(proj.node__registrations)
Ejemplo n.º 10
0
    def setUp(self):
        super(TestNodeSerializerAndRegistrationSerializerDifferences, self).setUp()

        self.node = factories.ProjectFactory(is_public=True)
        self.registration = factories.RegistrationFactory(project = self.node, is_public=True)

        self.url = '/{}nodes/{}/'.format(API_BASE, self.node._id)
        self.reg_url = '/{}registrations/{}/'.format(API_BASE, self.registration._id)
Ejemplo n.º 11
0
 def test_delete_registration_tree(self):
     proj = factories.NodeFactory()
     factories.NodeFactory(parent=proj)
     comp2 = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=comp2)
     reg = factories.RegistrationFactory(project=proj)
     reg_ids = [reg._id] + [r._id for r in reg.get_descendants_recursive()]
     archiver_utils.delete_registration_tree(reg)
     assert_false(Node.find(Q('_id', 'in', reg_ids) & Q('is_deleted', 'eq', False)).count())
Ejemplo n.º 12
0
 def setUp(self, *args, **kwargs):
     super(TestSanction, self).setUp(*args, **kwargs)
     self.user = valid_user()
     self.invalid_user = factories.UserFactory()
     self.sanction = SanctionTestClass(initiated_by=self.user,
                                       end_date=datetime.datetime.now() +
                                       datetime.timedelta(days=2))
     self.registration = factories.RegistrationFactory()
     self.sanction.add_authorizer(self.user, self.registration, save=True)
Ejemplo n.º 13
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)
Ejemplo n.º 14
0
 def test_archive_callback_updates_archiving_state_when_done(self):
     proj = factories.NodeFactory()
     factories.NodeFactory(parent=proj)
     reg = factories.RegistrationFactory(project=proj)
     reg.archive_job.update_target('osfstorage', ARCHIVER_INITIATED)
     child = reg.nodes[0]
     child.archive_job.update_target('osfstorage', ARCHIVER_SUCCESS)
     child.save()
     listeners.archive_callback(child)
     assert_false(child.archiving)
Ejemplo n.º 15
0
    def setUp(self):
        super(ArchiverTestCase, self).setUp()

        handlers.celery_before_request()
        self.user = factories.UserFactory()
        self.auth = Auth(user=self.user)
        self.src = factories.NodeFactory(creator=self.user)
        self.dst = factories.RegistrationFactory(user=self.user, project=self.src, send_signals=False)
        archiver_utils.before_archive(self.dst, self.user)
        self.archive_job = self.dst.archive_job
Ejemplo n.º 16
0
    def setUp(self):
        super(TestNodeEmbargoTerminations, self).setUp()

        self.user = factories.AuthUserFactory()
        self.node = factories.ProjectFactory(creator=self.user)
        with mock_archive(self.node, embargo=True,
                          autoapprove=True) as registration:
            self.registration = registration

        self.not_embargoed = factories.RegistrationFactory()
Ejemplo n.º 17
0
 def test_after_register_does_not_archive_pointers(self, mock_chain, mock_archive):
     proj = factories.ProjectFactory(creator=self.user)
     c1 = factories.ProjectFactory(creator=self.user, parent=proj)
     other = factories.ProjectFactory(creator=self.user)
     reg = factories.RegistrationFactory(project=proj)
     r1 = reg.nodes[0]
     proj.add_pointer(other, auth=Auth(self.user))
     listeners.after_register(c1, r1, self.user)
     listeners.after_register(proj, reg, self.user)
     for kwargs in [dict(job_pk=n.archive_job._id,) for n in [reg, r1]]:
         mock_archive.assert_any_call(**kwargs)
Ejemplo n.º 18
0
 def test_archiving_nodes_not_added_to_search_on_archive_failure(self, mock_send, mock_update_search):
     proj = factories.ProjectFactory()
     reg = factories.RegistrationFactory(project=proj)
     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=False))
     ) as (mock_finished, mock_sent, mock_success):
         listeners.archive_callback(reg)
     mock_update_search.assert_not_called()
Ejemplo n.º 19
0
 def _make_registration(self, schemas):
     if not isinstance(schemas, list):
         schemas = [schemas]
     reg = factories.RegistrationFactory()
     reg.save()
     self.db['node'].update({'_id': reg._id}, {
         '$set': {
             'registered_meta': {
                 to_mongo(schema.name): json.dumps(OLD_META[schema.name])
                 for schema in schemas
             },
             'registered_schema': None
         }
     })
Ejemplo n.º 20
0
 def test_after_register_archive_runs_only_for_root(self, mock_chain, mock_archive):
     proj = factories.ProjectFactory()
     c1 = factories.ProjectFactory(parent=proj)
     c2 = factories.ProjectFactory(parent=c1)
     reg = factories.RegistrationFactory(project=proj)
     rc1 = reg.nodes[0]
     rc2 = rc1.nodes[0]
     listeners.after_register(c1, rc1, self.user)
     mock_chain.assert_not_called()
     listeners.after_register(c2, rc2, self.user)
     mock_chain.assert_not_called()
     listeners.after_register(proj, reg, self.user)
     for kwargs in [dict(job_pk=n.archive_job._id,) for n in [reg, rc1, rc2]]:
         mock_archive.assert_any_call(**kwargs)
Ejemplo n.º 21
0
 def test_archive_tree_finished_d3(self):
     proj = factories.NodeFactory()
     child = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=child)
     reg = factories.RegistrationFactory(project=proj)
     rchild = reg.nodes[0]
     rchild2 = rchild.nodes[0]
     for node in [reg, rchild, rchild2]:
         for addon in ['osfstorage', 'dropbox']:
             node.archive_job._set_target(addon)
     for node in [reg, rchild, rchild2]:
         for addon in ['osfstorage', 'dropbox']:
             node.archive_job.update_target(addon, ARCHIVER_SUCCESS)
     for node in [reg, rchild, rchild2]:
         assert_true(node.archive_job.archive_tree_finished())
Ejemplo n.º 22
0
    def setUp(self):
        super(TestODMTitleSearch, self).setUp()

        self.user = factories.AuthUserFactory()
        self.user_two = factories.AuthUserFactory()
        self.project = factories.ProjectFactory(creator=self.user, title="foo")
        self.project_two = factories.ProjectFactory(creator=self.user_two,
                                                    title="bar")
        self.public_project = factories.ProjectFactory(creator=self.user_two,
                                                       is_public=True,
                                                       title="baz")
        self.registration_project = factories.RegistrationFactory(
            creator=self.user, title="qux")
        self.folder = factories.CollectionFactory(creator=self.user,
                                                  title="quux")
        self.dashboard = find_bookmark_collection(self.user)
        self.url = api_url_for('search_projects_by_title')
Ejemplo n.º 23
0
 def test_archive_tree_finished(self):
     proj = factories.NodeFactory()
     factories.NodeFactory(parent=proj)
     comp2 = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=comp2)
     reg = factories.RegistrationFactory(project=proj)
     rchild1 = reg.nodes[0]
     rchild2 = reg.nodes[1]
     rchild2a = rchild2.nodes[0]
     regs = itertools.chain([reg], reg.get_descendants_recursive())
     for node in regs:
         assert_false(node.archive_job.archive_tree_finished())
     for node in regs:
         assert_false(node.archive_job.archive_tree_finished())
     for node in [reg, rchild2]:
         for target in node.archive_job.target_addons:
             node.archive_job.update_target(target.name, ARCHIVER_SUCCESS)
     for node in regs:
         assert_true(node.archive_job.archive_tree_finished())
Ejemplo n.º 24
0
 def setUp(self):
     super(TestShowIfVersion, self).setUp()
     self.node = factories.NodeFactory()
     self.registration = factories.RegistrationFactory()
Ejemplo n.º 25
0
 def test_archiving_registrations_not_added_to_search_before_archival(self, mock_update_search):
     proj = factories.ProjectFactory()
     reg = factories.RegistrationFactory(project=proj)
     reg.save()
     mock_update_search.assert_not_called()
Ejemplo n.º 26
0
 def _get_registration(self):
     return factories.RegistrationFactory()
Ejemplo n.º 27
0
 def setUp(self):
     super(TestRegistrationApproval, self).setUp()
     ensure_schemas()
     self.user = factories.AuthUserFactory()
     self.registration = factories.RegistrationFactory(creator=self.user, archive=True)