def resource(self, user_admin_contrib, user_write_contrib, user_read_contrib):
     # Overrides SubjectsListMixin
     draft = DraftRegistrationFactory(initiator=user_admin_contrib)
     draft.add_contributor(user_write_contrib, permissions=WRITE)
     draft.add_contributor(user_read_contrib, permissions=READ)
     draft.save()
     return draft
 def resource(self, user_admin_contrib, user_write_contrib,
              user_read_contrib):
     draft = DraftRegistrationFactory(creator=user_admin_contrib)
     draft.add_contributor(user_write_contrib, permissions=WRITE)
     draft.add_contributor(user_read_contrib, permissions=READ)
     draft.save()
     return draft
コード例 #3
0
class TestDraftNodeProvidersList(ApiTestCase):
    def setUp(self):
        super(TestDraftNodeProvidersList, self).setUp()
        self.user = AuthUserFactory()
        self.draft_reg = DraftRegistrationFactory(creator=self.user)
        self.draft_node = self.draft_reg.branched_from
        self.url = '/{}draft_nodes/{}/files/'.format(API_BASE, self.draft_node._id)

        self.user_two = AuthUserFactory()
        self.draft_reg.add_contributor(self.user_two)
        self.draft_reg.save()

        self.user_three = AuthUserFactory()

    def test_draft_node_files(self):
        # Unauthenticated
        res = self.app.get(self.url, expect_errors=True)
        assert res.status_code == 401

        # Noncontrib
        res = self.app.get(self.url, auth=self.user_three.auth, expect_errors=True)
        assert res.status_code == 403

        # Write contributor on draft
        res = self.app.get(self.url, auth=self.user_two.auth)
        assert res.status_code == 200

        # Admin contrib on draft
        res = self.app.get(self.url, auth=self.user.auth)
        assert res.status_code == 200

    def test_deleted_draft_node_files(self):
        self.draft_node.is_deleted = True
        self.draft_node.save()

        # Admin contrib
        res = self.app.get(self.url, auth=self.user.auth, expect_errors=True)
        assert res.status_code == 410

    def test_returns_provider_data(self):
        res = self.app.get(self.url, auth=self.user.auth)
        assert_equal(res.status_code, 200)
        assert_true(isinstance(res.json['data'], list))
        assert_equal(res.content_type, 'application/vnd.api+json')
        data = res.json['data'][0]
        assert_equal(data['attributes']['kind'], 'folder')
        assert_equal(data['attributes']['name'], 'osfstorage')
        assert_equal(data['attributes']['provider'], 'osfstorage')
        assert_equal(data['attributes']['node'], self.draft_node._id)
        assert_equal(data['attributes']['path'], '/')

    def test_returns_osfstorage_folder_version_two(self):
        res = self.app.get(
            '{}osfstorage/'.format(self.url), auth=self.user.auth)
        assert_equal(res.status_code, 200)

    def test_returns_osf_storage_folder_version_two_point_two(self):
        res = self.app.get(
            '{}osfstorage/?version=2.2'.format(self.url), auth=self.user.auth)
        assert_equal(res.status_code, 200)
コード例 #4
0
 def node(self, user, write_contrib, read_contrib):
     # Overrides TestNodeRelationshipInstitutions
     draft = DraftRegistrationFactory(initiator=user)
     draft.add_contributor(write_contrib, permissions=permissions.WRITE)
     draft.add_contributor(read_contrib, permissions=permissions.READ)
     draft.save()
     return draft
コード例 #5
0
 def project(self, user, user_write_contrib):
     # Overrides TestNodeContributorDelete
     project = DraftRegistrationFactory(creator=user)
     project.add_contributor(
         user_write_contrib,
         permissions=permissions.WRITE,
         visible=True, save=True)
     return project
コード例 #6
0
 def project(self, user, contrib):
     # Overrides TestNodeContributorUpdate
     draft = DraftRegistrationFactory(creator=user)
     draft.add_contributor(contrib,
                           permissions=permissions.WRITE,
                           visible=True,
                           save=True)
     return draft
コード例 #7
0
 def draft_registration(self, user, user_read_contrib, user_write_contrib,
                        project_public, schema):
     draft_registration = DraftRegistrationFactory(
         initiator=user, registration_schema=schema, branched_from=None)
     draft_registration.add_contributor(user_write_contrib,
                                        permissions=WRITE)
     draft_registration.add_contributor(user_read_contrib, permissions=READ)
     draft_registration.save()
     return draft_registration
コード例 #8
0
 def project(self, user, contribs):
     # Overrides TestNodeContributorOrdering
     project = DraftRegistrationFactory(initiator=user, title='hey')
     for contrib in contribs:
         if contrib._id != user._id:
             project.add_contributor(contrib,
                                     permissions=permissions.WRITE,
                                     visible=True,
                                     save=True)
     return project
コード例 #9
0
 def project_private(self, user, user_two, user_three, title, description,
                     category):
     project_private = DraftRegistrationFactory(initiator=user)
     project_private.add_contributor(user_two,
                                     permissions=permissions.READ,
                                     visible=True,
                                     save=True)
     project_private.add_contributor(user_three,
                                     permissions=permissions.READ,
                                     visible=True,
                                     save=True)
     return project_private
コード例 #10
0
 def draft_registration(self, user, user_non_biblio_contrib):
     # Overrides TestNodeContributorDelete
     project = DraftRegistrationFactory(creator=user)
     project.add_contributor(user,
                             permissions=permissions.ADMIN,
                             visible=True,
                             save=True)
     project.add_contributor(user_non_biblio_contrib,
                             permissions=permissions.WRITE,
                             visible=False,
                             save=True)
     return project
コード例 #11
0
    def test_detail_response(self, app, user, user_two):
        draft_reg = DraftRegistrationFactory(initiator=user)
        draft_reg.add_contributor(user_two)
        draft_reg.save()

        draft_node = draft_reg.branched_from

        # Unauthenticated
        url = '/{}draft_nodes/{}/'.format(API_BASE, draft_node._id)
        res = app.get(url, expect_errors=True)
        assert res.status_code == 401

        # Draft Node and Draft Registration contributor
        res = app.get(url, auth=user.auth)
        assert res.status_code == 200

        # Draft Registration contributor only
        res = app.get(url, auth=user_two.auth)
        assert res.status_code == 200
        data = res.json['data']

        assert data['attributes'] == {}
        assert data['type'] == 'draft-nodes'
        assert data['id'] == draft_node._id

        assert url + 'files/' in data['relationships']['files']['links'][
            'related']['href']
        assert url in data['links']['self']

        # assert cannot access node through this endpoint
        project = ProjectFactory(creator=user)
        url = '/{}draft_nodes/{}/'.format(API_BASE, project._id)
        res = app.get(url, expect_errors=True)
        assert res.status_code == 404

        # cannot access draft node after it's been registered (it's now a node!)
        draft_reg.register(Auth(user))
        url = '/{}draft_nodes/{}/'.format(API_BASE, draft_node._id)
        res = app.get(url, auth=user_two.auth, expect_errors=True)
        assert res.status_code == 404
コード例 #12
0
 def draft_registration(self, user, user_write_contrib):
     draft_reg = DraftRegistrationFactory(initiator=user)
     draft_reg.add_contributor(user_write_contrib, permissions=WRITE)
     return draft_reg
コード例 #13
0
 def active_draft_registration_multiple_contributor(self, project, initiator, draft_reg_contributor):
     draft_reg = DraftRegistrationFactory(branched_from=project, initiator=initiator)
     draft_reg.add_contributor(draft_reg_contributor, WRITE)
     return draft_reg