Ejemplo n.º 1
0
 def node_one(self, user):
     return NodeFactory(title='Ismael Lo: Tajabone',
                        creator=user,
                        is_public=True)
Ejemplo n.º 2
0
 def node(self, user):
     return NodeFactory(creator=user)
Ejemplo n.º 3
0
 def setUp(self):
     super(TestResolveGuid, self).setUp()
     self.node = NodeFactory()
 def public_component(self, user, public_project):
     return NodeFactory(parent=public_project, creator=user, is_public=True)
Ejemplo n.º 5
0
 def node(self, greg):
     return NodeFactory(creator=greg)
Ejemplo n.º 6
0
 def great_grandchild_node_two(self, user, grandchild_node_two, institution):
     great_grandchild_node_two = NodeFactory(parent=grandchild_node_two, creator=user, is_public = True)
     great_grandchild_node_two.affiliated_institutions.add(institution)
     great_grandchild_node_two.save()
     return great_grandchild_node_two
Ejemplo n.º 7
0
 def test__get_readable_descendants(self):
     project = ProjectFactory(creator=self.user)
     child = NodeFactory(parent=project, creator=self.user)
     nodes, all_readable = _get_readable_descendants(auth=Auth(project.creator), node=project)
     assert_equal(nodes[0]._id, child._id)
     assert_true(all_readable)
Ejemplo n.º 8
0
 def node_other(self):
     return NodeFactory()
Ejemplo n.º 9
0
 def node_public(self):
     return NodeFactory(is_public=True)
Ejemplo n.º 10
0
 def node_contrib(self, user, user_two):
     node_contrib = NodeFactory(creator=user_two)
     node_contrib.add_contributor(user, auth=Auth(user_two))
     node_contrib.save()
     return node_contrib
Ejemplo n.º 11
0
    def test_node_errors(self, app, user, node_private, node_contrib,
                         node_public, node_other, make_payload, url_private,
                         url_public, node_linking_private):

        #   test_node_doesnt_exist
        res = app.post_json_api(url_private,
                                make_payload(['aquarela']),
                                auth=user.auth,
                                expect_errors=True)

        assert res.status_code == 404

        #   test_type_mistyped
        res = app.post_json_api(
            url_private,
            {'data': [{
                'type': 'not_linked_nodes',
                'id': node_contrib._id
            }]},
            auth=user.auth,
            expect_errors=True)

        assert res.status_code == 409

        #   test_type_nodes_not_acceptable_below_2_13
        res = app.post_json_api(
            url_private, {'data': [{
                'type': 'nodes',
                'id': node_contrib._id
            }]},
            auth=user.auth,
            expect_errors=True)

        assert res.status_code == 409

        #   test_type_linked_nodes_not_acceptable_as_of_2_13
        res = app.post_json_api(
            '{}?version=2.13'.format(url_private),
            {'data': [{
                'type': 'linked_nodes',
                'id': node_contrib._id
            }]},
            auth=user.auth,
            expect_errors=True)

        assert res.status_code == 409

        #   test_creates_public_linked_node_relationship_logged_out
        res = app.post_json_api(url_public,
                                make_payload([node_public._id]),
                                expect_errors=True)

        assert res.status_code == 401

        #   test_creates_public_linked_node_relationship_logged_in
        res = app.post_json_api(url_public,
                                make_payload([node_public._id]),
                                auth=user.auth,
                                expect_errors=True)

        assert res.status_code == 403

        #   test_creates_private_linked_node_relationship_logged_out
        res = app.post_json_api(url_private,
                                make_payload([node_other._id]),
                                expect_errors=True)

        assert res.status_code == 401

        #   test_put_public_nodes_relationships_logged_out
        res = app.put_json_api(url_public,
                               make_payload([node_public._id]),
                               expect_errors=True)

        assert res.status_code == 401

        #   test_put_public_nodes_relationships_logged_in
        res = app.put_json_api(url_public,
                               make_payload([node_private._id]),
                               auth=user.auth,
                               expect_errors=True)

        #   test_put_child_node

        assert res.status_code == 403

        #   test_delete_public_nodes_relationships_logged_out
        res = app.delete_json_api(url_public,
                                  make_payload([node_public._id]),
                                  expect_errors=True)

        assert res.status_code == 401

        #   test_delete_public_nodes_relationships_logged_in
        res = app.delete_json_api(url_public,
                                  make_payload([node_private._id]),
                                  auth=user.auth,
                                  expect_errors=True)

        assert res.status_code == 403

        #   test_node_child_cannot_be_linked_on_create
        node_child = NodeFactory(creator=user)
        node_parent = NodeFactory(creator=user)
        node_parent_child = NodeRelationFactory(child=node_child,
                                                parent=node_parent)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_parent_child.parent._id)
        res = app.post_json_api(url, {
            'data': [{
                'type': 'linked_nodes',
                'id': node_parent_child.child._id
            }]
        },
                                auth=user.auth,
                                expect_errors=True)

        assert res.status_code == 400

        #   test_linking_node_to_itself _on_create
        node_self = NodeFactory(creator=user)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_self._id)
        res = app.post_json_api(url_private,
                                make_payload([node_linking_private._id]),
                                auth=user.auth,
                                expect_errors=True)

        assert res.status_code == 400

        #   test_linking_child_node_to_parent_on_create
        node_child = NodeFactory(creator=user)
        node_parent = NodeFactory(creator=user)
        node_parent_child = NodeRelationFactory(child=node_child,
                                                parent=node_parent)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_parent_child.child._id)
        res = app.post_json_api(url, {
            'data': [{
                'type': 'linked_nodes',
                'id': node_parent_child.parent._id
            }]
        },
                                auth=user.auth,
                                expect_errors=True)

        assert res.status_code == 400

        #   test_node_child_cannot_be_linked_on_update
        node_child = NodeFactory(creator=user)
        node_parent = NodeFactory(creator=user)
        node_parent_child = NodeRelationFactory(child=node_child,
                                                parent=node_parent)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_parent_child.parent._id)
        res = app.put_json_api(url, {
            'data': [{
                'type': 'linked_nodes',
                'id': node_parent_child.child._id
            }]
        },
                               auth=user.auth,
                               expect_errors=True)

        assert res.status_code == 400

        #   test_linking_child_node_to_parent_on_update
        node_child = NodeFactory(creator=user)
        node_parent = NodeFactory(creator=user)
        node_parent_child = NodeRelationFactory(child=node_child,
                                                parent=node_parent)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_parent_child.child._id)
        res = app.put_json_api(url, {
            'data': [{
                'type': 'linked_nodes',
                'id': node_parent_child.parent._id
            }]
        },
                               auth=user.auth,
                               expect_errors=True)

        assert res.status_code == 400

        #   test_linking_node_to_itself _on_update
        node_self = NodeFactory(creator=user)
        url = '/{}nodes/{}/relationships/linked_nodes/'.format(
            API_BASE, node_self._id)
        res = app.put_json_api(url_private,
                               make_payload([node_linking_private._id]),
                               auth=user.auth,
                               expect_errors=True)

        assert res.status_code == 400
Ejemplo n.º 12
0
    def setUp(self):
        super(ApiSearchTestCase, self).setUp()

        self.user = AuthUserFactory()
        self.user_one = AuthUserFactory(fullname='Kanye Omari West')
        self.user_one.schools = [{
            'degree': 'English',
            'institution': 'Chicago State University'
        }]
        self.user_one.jobs = [{
            'title': 'Producer',
            'institution': 'GOOD Music, Inc.'
        }]
        self.user_one.save()

        self.user_two = AuthUserFactory(fullname='Chance The Rapper')
        self.institution = InstitutionFactory(name='Social Experiment')
        self.user_two.affiliated_institutions.add(self.institution)
        self.user_two.save()
        # self.institution.save()

        self.project = ProjectFactory(title='The Life of Pablo',
                                      creator=self.user_one,
                                      is_public=True)
        self.project.set_description('Name one genius who ain\'t crazy',
                                     auth=Auth(self.user_one),
                                     save=True)
        self.project.add_tag('Yeezus', auth=Auth(self.user_one), save=True)

        self.project_two = ProjectFactory(title='Graduation',
                                          creator=self.user_one,
                                          is_public=True)
        self.private_project = ProjectFactory(title='Coloring Book',
                                              creator=self.user_two)

        self.component = NodeFactory(parent=self.project,
                                     title='Ultralight Beam',
                                     creator=self.user_two,
                                     is_public=True)
        self.component.set_description('This is my part, nobody else speak',
                                       auth=Auth(self.user_two),
                                       save=True)
        self.component.add_tag('trumpets', auth=Auth(self.user_two), save=True)

        self.component_two = NodeFactory(parent=self.project,
                                         title='Highlights',
                                         creator=self.user_one,
                                         is_public=True)
        self.private_component = NodeFactory(parent=self.project,
                                             title='Wavves',
                                             creator=self.user_one)

        self.file = utils.create_test_file(self.component,
                                           self.user_one,
                                           filename='UltralightBeam.mp3')
        self.file_two = utils.create_test_file(self.component_two,
                                               self.user_one,
                                               filename='Highlights.mp3')
        self.private_file = utils.create_test_file(self.private_component,
                                                   self.user_one,
                                                   filename='Wavves.mp3')
Ejemplo n.º 13
0
 def node_private(self, user):
     return NodeFactory(title='Classified', creator=user)
Ejemplo n.º 14
0
 def node_two(self, user):
     return NodeFactory(title='Sambolera', creator=user, is_public=True)
Ejemplo n.º 15
0
 def child_node_two(self, user, parent_project, institution):
     child_node_two = NodeFactory(parent=parent_project, creator=user, is_public = True)
     child_node_two.affiliated_institutions.add(institution)
     child_node_two.save()
     return child_node_two
Ejemplo n.º 16
0
 def node_linking_private(self, user, node_private):
     node_linking_private = NodeFactory(creator=user)
     node_linking_private.add_pointer(node_private, auth=Auth(user))
     return node_linking_private
Ejemplo n.º 17
0
 def grandchild_node_one(self, user, child_node_one, institution):
     grandchild_node_one = NodeFactory(parent=child_node_one, creator=user, is_public = True)
     grandchild_node_one.affiliated_institutions.add(institution)
     grandchild_node_one.save()
     return grandchild_node_one
Ejemplo n.º 18
0
 def node_public(self, user):
     return NodeFactory(is_public=True, creator=user)
Ejemplo n.º 19
0
 def test_view_project_embed_descendants(self):
     child = NodeFactory(parent=self.project, creator=self.user)
     res = _view_project(self.project, auth=Auth(self.project.creator), embed_descendants=True)
     assert_in('descendants', res['node'])
     assert_equal(len(res['node']['descendants']), 1)
     assert_equal(res['node']['descendants'][0]['id'], child._id)
Ejemplo n.º 20
0
 def node_linking_public(self, user_two, node_private, node_public):
     node_linking_public = NodeFactory(is_public=True, creator=user_two)
     node_linking_public.add_pointer(node_private, auth=Auth(user_two))
     node_linking_public.add_pointer(node_public, auth=Auth(user_two))
     return node_linking_public
 def component(self, user, private_project):
     return NodeFactory(parent=private_project, creator=user)
Ejemplo n.º 22
0
 def project(self, submitter):
     return NodeFactory(creator=submitter)
 def test_node_children_list_does_not_include_unauthorized_projects(self, app, user, component, private_project, private_project_url):
     private_component = NodeFactory(parent=private_project)
     res = app.get(private_project_url, auth=user.auth)
     assert len(res.json['data']) == 1
Ejemplo n.º 24
0
 def node_public(self, registration):
     node_public = NodeFactory(is_public=True)
     node_public.add_pointer(registration, auth=Auth(node_public.creator))
     node_public.save()
     return node_public
Ejemplo n.º 25
0
 def node_with_file(self):
     node = NodeFactory()
     file = create_test_file(node, node.creator)
     file.save()
     node.save()
     return node
Ejemplo n.º 26
0
    def test_initiate_withdraw_registration_fails(
            self, app, user, read_write_contributor, public_registration,
            make_payload, private_registration, public_url, private_url,
            public_project, public_payload):
        # test set pending_withdrawal with no auth
        res = app.put_json_api(public_url, public_payload, expect_errors=True)
        assert res.status_code == 401

        # test set pending_withdrawal from a read write contrib
        public_registration.add_contributor(read_write_contributor,
                                            permissions=[permissions.WRITE])
        public_registration.save()
        res = app.put_json_api(public_url,
                               public_payload,
                               auth=read_write_contributor.auth,
                               expect_errors=True)
        assert res.status_code == 403

        # test set pending_withdrawal private registration fails
        payload_private = make_payload(id=private_registration._id,
                                       attributes={
                                           'pending_withdrawal':
                                           True,
                                           'withdrawal_justification':
                                           'fine whatever'
                                       })
        res = app.put_json_api(private_url,
                               payload_private,
                               auth=user.auth,
                               expect_errors=True)
        assert res.status_code == 400

        # test set pending_withdrawal for component fails
        project = ProjectFactory(is_public=True, creator=user)
        NodeFactory(is_public=True, creator=user, parent=project)
        registration_with_comp = RegistrationFactory(is_public=True,
                                                     project=project)
        registration_comp = registration_with_comp._nodes.first()
        payload_component = make_payload(
            id=registration_comp._id, attributes={'pending_withdrawal': True})
        url = '/{}registrations/{}/'.format(API_BASE, registration_comp._id)
        res = app.put_json_api(url,
                               payload_component,
                               auth=user.auth,
                               expect_errors=True)
        assert res.status_code == 400

        # setting pending_withdrawal to false fails
        public_payload['data']['attributes'] = {'pending_withdrawal': False}
        res = app.put_json_api(public_url,
                               public_payload,
                               auth=user.auth,
                               expect_errors=True)
        assert res.status_code == 400

        # test set pending_withdrawal with just withdrawal_justification key
        public_payload['data']['attributes'] = {
            'withdrawal_justification': 'Not enough oopmh.'
        }
        res = app.put_json_api(public_url,
                               public_payload,
                               auth=user.auth,
                               expect_errors=True)
        assert res.status_code == 400

        # set pending_withdrawal on a registration already pending withdrawal fails
        public_registration._initiate_retraction(user)
        res = app.put_json_api(public_url,
                               public_payload,
                               auth=user.auth,
                               expect_errors=True)
        assert res.status_code == 400
Ejemplo n.º 27
0
 def _create_n_nodes(n, roots=True):
     return [ProjectFactory() if roots else NodeFactory() for _ in range(n)]
Ejemplo n.º 28
0
 def child_node_one(self, user, parent_project, institution, parent_project_one):
     child_node_one = NodeFactory(parent=parent_project, title='Friend of {}'.format(parent_project_one._id), creator=user, is_public=True)
     child_node_one.affiliated_institutions.add(institution)
     child_node_one.save()
     return child_node_one
Ejemplo n.º 29
0
 def node(self, user):
     return NodeFactory(creator=user, is_public=True)
Ejemplo n.º 30
0
 def component_private(self, user_one, project_public):
     return NodeFactory(parent=project_public,
                        title='Wavves',
                        creator=user_one)