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
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)
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
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
def project(self, user, contrib): # Overrides TestNodeContributorUpdate draft = DraftRegistrationFactory(creator=user) draft.add_contributor(contrib, permissions=permissions.WRITE, visible=True, save=True) return draft
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
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
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
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
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
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
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