本文整理汇总了Python中tests.factories.PreprintFactory类的典型用法代码示例。如果您正苦于以下问题:Python PreprintFactory类的具体用法?Python PreprintFactory怎么用?Python PreprintFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PreprintFactory类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_read_write_user_already_a_preprint
def test_read_write_user_already_a_preprint(self):
assert_in(self.other_user, self.public_project.contributors)
preprint = PreprintFactory(creator=self.user)
preprint.add_contributor(self.other_user, permissions=[permissions.DEFAULT_CONTRIBUTOR_PERMISSIONS], save=True)
file_one_preprint = test_utils.create_test_file(preprint, self.user, 'openupthatwindow.pdf')
already_preprint_payload = build_preprint_create_payload(preprint._id, self.subject._id, file_one_preprint._id)
res = self.app.post_json_api(self.url, already_preprint_payload, auth=self.other_user.auth, expect_errors=True)
assert_equal(res.status_code, 403)
开发者ID:alexschiller,项目名称:osf.io,代码行数:11,代码来源:test_preprint_list.py
示例2: TestPreprintFactory
class TestPreprintFactory(OsfTestCase):
def setUp(self):
super(TestPreprintFactory, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(user=self.user)
self.preprint = PreprintFactory(creator=self.user)
self.preprint.save()
def test_is_preprint(self):
assert_true(self.preprint.node.is_preprint)
def test_preprint_is_public(self):
assert_true(self.preprint.node.is_public)
开发者ID:cslzchen,项目名称:osf.io,代码行数:14,代码来源:test_preprints.py
示例3: setUp
def setUp(self):
super(TestSetPreprintFile, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(user=self.user)
self.read_write_user = AuthUserFactory()
self.read_write_user_auth = Auth(user=self.read_write_user)
self.project = ProjectFactory(creator=self.user)
self.file = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/panda.txt',
name='panda.txt',
materialized_path='/panda.txt')
self.file.save()
self.file_two = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/pandapanda.txt',
name='pandapanda.txt',
materialized_path='/pandapanda.txt')
self.file_two.save()
self.project.add_contributor(self.read_write_user, permissions=[permissions.WRITE])
self.project.save()
self.preprint = PreprintFactory(project=self.project, finish=False)
开发者ID:cslzchen,项目名称:osf.io,代码行数:29,代码来源:test_preprints.py
示例4: setUp
def setUp(self):
super(TestPreprintUpdateLicense, self).setUp()
ensure_licenses()
self.admin_contributor = AuthUserFactory()
self.rw_contributor = AuthUserFactory()
self.read_contributor = AuthUserFactory()
self.non_contributor = AuthUserFactory()
self.preprint_provider = PreprintProviderFactory()
self.preprint = PreprintFactory(creator=self.admin_contributor, provider=self.preprint_provider)
self.preprint.node.add_contributor(self.rw_contributor, auth=Auth(self.admin_contributor))
self.preprint.node.add_contributor(self.read_contributor, auth=Auth(self.admin_contributor), permissions=['read'])
self.preprint.node.save()
self.cc0_license = NodeLicense.find_one(Q('name', 'eq', 'CC0 1.0 Universal'))
self.mit_license = NodeLicense.find_one(Q('name', 'eq', 'MIT License'))
self.no_license = NodeLicense.find_one(Q('name', 'eq', 'No license'))
self.preprint_provider.licenses_acceptable = [self.cc0_license, self.no_license]
self.preprint_provider.save()
self.url = '/{}preprints/{}/'.format(API_BASE, self.preprint._id)
开发者ID:baylee-d,项目名称:osf.io,代码行数:25,代码来源:test_preprint_detail.py
示例5: setUp
def setUp(self):
super(TestNodePreprintList, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(self.user)
self.preprint = PreprintFactory(creator=self.user, is_published=False)
self.url = '/{}nodes/{}/preprints/'.format(API_BASE, self.preprint.node._id)
开发者ID:baylee-d,项目名称:osf.io,代码行数:8,代码来源:test_node_preprints.py
示例6: setUp
def setUp(self):
super(TestPreprintUpdate, self).setUp()
self.user = AuthUserFactory()
self.preprint = PreprintFactory(creator=self.user)
self.url = '/{}preprints/{}/'.format(API_BASE, self.preprint._id)
self.subject = SubjectFactory()
开发者ID:monikagrabowska,项目名称:osf.io,代码行数:8,代码来源:test_preprint_detail.py
示例7: TestNodePreprintList
class TestNodePreprintList(ApiTestCase):
def setUp(self):
super(TestNodePreprintList, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(self.user)
self.preprint = PreprintFactory(creator=self.user, is_published=False)
self.url = '/{}nodes/{}/preprints/'.format(API_BASE, self.preprint.node._id)
def test_user_can_see_own_unpublished_preprint(self):
res = self.app.get(self.url, auth=self.user.auth, expect_errors=True)
assert_equal(res.status_code, 200)
assert_equal(res.json['data'][0]['id'], self.preprint._id)
def test_other_user_can_see_unpublished_preprint_on_public_node(self):
noncontrib = AuthUserFactory()
self.preprint.node.set_privacy('public')
res = self.app.get(self.url, auth=noncontrib.auth)
assert_equal(res.status_code, 200)
assert_equal(res.json['data'][0]['id'], self.preprint._id)
def test_other_user_cannot_see_unpublished_preprint_on_private_node(self):
noncontrib = AuthUserFactory()
res = self.app.get(self.url, auth=noncontrib.auth, expect_errors=True)
assert_equal(res.status_code, 403)
def test_user_can_see_own_published_preprint(self):
self.preprint.set_published(True, auth=self.auth)
res = self.app.get(self.url, auth=self.user.auth)
assert_equal(res.status_code, 200)
assert_equal(res.json['data'][0]['id'], self.preprint._id)
def test_other_user_can_see_published_preprint_on_public_node(self):
self.preprint.set_published(True, auth=self.auth)
noncontrib = AuthUserFactory()
res = self.app.get(self.url, auth=noncontrib.auth)
assert_equal(res.status_code, 200)
assert_equal(res.json['data'][0]['id'], self.preprint._id)
开发者ID:baylee-d,项目名称:osf.io,代码行数:44,代码来源:test_node_preprints.py
示例8: setUp
def setUp(self):
super(TestPreprintFiltering, self).setUp()
self.user = AuthUserFactory()
self.provider = PreprintProviderFactory(name='wwe')
self.preprint = PreprintFactory(creator=self.user, providers=[self.provider])
self.preprint.add_tag('nature boy', Auth(self.user), save=False)
self.preprint.add_tag('ric flair', Auth(self.user), save=False)
self.preprint.save()
self.provider_two = PreprintProviderFactory(name='wcw')
self.preprint_two = PreprintFactory(creator=self.user, filename='woo.txt', providers=[self.provider_two])
self.preprint_two.add_tag('nature boy', Auth(self.user), save=False)
self.preprint_two.add_tag('woo', Auth(self.user), save=False)
self.preprint_two.save()
self.preprint_three = PreprintFactory(creator=self.user, filename='stonecold.txt', providers=[self.provider])
self.preprint_three.add_tag('stone', Auth(self.user), save=False)
self.preprint_two.add_tag('cold', Auth(self.user), save=False)
self.preprint_three.save()
开发者ID:alexschiller,项目名称:osf.io,代码行数:20,代码来源:test_preprint_list.py
示例9: TestOnPreprintUpdatedTask
class TestOnPreprintUpdatedTask(OsfTestCase):
def setUp(self):
super(TestOnPreprintUpdatedTask, self).setUp()
self.preprint = PreprintFactory()
def test_format_preprint(self):
res = format_preprint(self.preprint)
types = [gn['@type'] for gn in res]
subject_names = [x['text'] for hier in self.preprint.get_subjects() for x in hier]
contribs = {}
for i, user in enumerate(self.preprint.node.contributors):
contribs.update({i: user})
for type_ in ['throughlinks', 'throughsubjects', 'throughidentifiers', 'preprint', 'subject', 'person', 'link', 'contributor', 'identifier', 'person']:
assert type_ in types
for graph_node in res:
if graph_node['@type'] == 'throughlinks':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'creative_work', 'link']))
if graph_node['@type'] == 'throughsubjects':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'creative_work', 'subject']))
if graph_node['@type'] == 'throughidentifiers':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'identifier', 'person']))
if graph_node['@type'] == 'preprint':
assert_equal(set(graph_node.keys()), set([
'@id', '@type', 'contributors', 'title', 'tags',
'date_published', 'date_updated', 'description',
'institutions', 'is_deleted', 'links', 'subjects',
]))
assert_equal(graph_node['date_published'], self.preprint.date_published.isoformat())
assert_equal(graph_node['date_updated'], self.preprint.date_modified.isoformat())
assert_equal(graph_node['description'], self.preprint.node.description)
assert_equal(graph_node['is_deleted'], self.preprint.node.is_deleted)
assert_equal(graph_node['title'], self.preprint.node.title)
if graph_node['@type'] == 'subject':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'name']))
assert_in(graph_node['name'], subject_names)
if graph_node['@type'] == 'person':
assert_equal(set(graph_node.keys()), set([
'@id', '@type', 'additional_name', 'affiliations',
'family_name', 'given_name', 'identifiers', 'suffix'
]))
if graph_node['@type'] == 'link':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'type', 'url']))
if graph_node['@type'] == 'contributor':
assert_equal(set(graph_node.keys()), set([
'@id', '@type', 'bibliographic', 'cited_name',
'creative_work', 'order_cited', 'person'
]))
user = contribs[graph_node['order_cited']]
assert_equal(graph_node['cited_name'], user.fullname)
assert_equal(graph_node['bibliographic'], bool(user._id in self.preprint.node.visible_contributor_ids))
if graph_node['@type'] == 'identifier':
assert_equal(set(graph_node.keys()), set(['@id', '@type', 'base_url', 'url']))
开发者ID:cslzchen,项目名称:osf.io,代码行数:54,代码来源:test_preprints.py
示例10: setUp
def setUp(self):
super(TestPreprintRelationshipPreprintProvider, self).setUp()
self.user = AuthUserFactory()
self.read_write_user = AuthUserFactory()
self.preprint = PreprintFactory(creator=self.user, providers=None)
self.preprint.add_contributor(self.read_write_user)
self.preprint.save()
self.preprint_provider_one = PreprintProviderFactory()
self.preprint_provider_two = PreprintProviderFactory()
self.preprint_preprint_providers_url = self.create_url(self.preprint._id)
开发者ID:monikagrabowska,项目名称:osf.io,代码行数:13,代码来源:test_preprint_relationship_preprint_provider.py
示例11: setUp
def setUp(self):
super(TestOnPreprintUpdatedTask, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(user=self.user)
self.preprint = PreprintFactory()
self.preprint.node.add_tag('preprint', self.auth, save=False)
self.preprint.node.add_tag('spoderman', self.auth, save=False)
self.preprint.node.add_unregistered_contributor('BoJack Horseman', '[email protected]', Auth(self.preprint.node.creator))
self.preprint.node.add_contributor(self.user, visible=False)
self.preprint.node.save()
self.preprint.node.creator.given_name = 'ZZYZ'
self.preprint.node.creator.save()
self.preprint.set_subjects([[SubjectFactory()._id]], auth=Auth(self.preprint.node.creator), save=False)
开发者ID:chrisseto,项目名称:osf.io,代码行数:16,代码来源:test_preprints.py
示例12: TestPreprintProviders
class TestPreprintProviders(OsfTestCase):
def setUp(self):
super(TestPreprintProviders, self).setUp()
self.preprint = PreprintFactory(providers=[])
self.provider = PreprintProviderFactory(name='WWEArxiv')
def test_add_provider(self):
assert_not_equal(self.preprint.provider, self.provider)
self.preprint.provider = self.provider
self.preprint.save()
self.preprint.reload()
assert_equal(self.preprint.provider, self.provider)
def test_remove_provider(self):
self.preprint.provider = None
self.preprint.save()
self.preprint.reload()
assert_equal(self.preprint.provider, None)
开发者ID:cslzchen,项目名称:osf.io,代码行数:21,代码来源:test_preprints.py
示例13: TestPreprintProviders
class TestPreprintProviders(OsfTestCase):
def setUp(self):
super(TestPreprintProviders, self).setUp()
self.preprint = PreprintFactory(providers=[])
self.provider = PreprintProviderFactory(name='WWEArxiv')
def test_add_provider(self):
assert_equal(self.preprint.preprint_providers, [])
self.preprint.add_preprint_provider(self.provider, user=self.preprint.creator, save=True)
assert_items_equal(self.preprint.preprint_providers, [self.provider])
def test_remove_provider(self):
self.preprint.add_preprint_provider(self.provider, user=self.preprint.creator, save=True)
assert_items_equal(self.preprint.preprint_providers, [self.provider])
self.preprint.remove_preprint_provider(self.provider, user=self.preprint.creator, save=True)
assert_equal(self.preprint.preprint_providers, [])
开发者ID:monikagrabowska,项目名称:osf.io,代码行数:21,代码来源:test_preprints.py
示例14: TestPreprintFiltering
class TestPreprintFiltering(ApiTestCase):
def setUp(self):
super(TestPreprintFiltering, self).setUp()
self.user = AuthUserFactory()
self.provider = PreprintProviderFactory(name='wwe')
self.preprint = PreprintFactory(creator=self.user, providers=[self.provider])
self.preprint.add_tag('nature boy', Auth(self.user), save=False)
self.preprint.add_tag('ric flair', Auth(self.user), save=False)
self.preprint.save()
self.provider_two = PreprintProviderFactory(name='wcw')
self.preprint_two = PreprintFactory(creator=self.user, filename='woo.txt', providers=[self.provider_two])
self.preprint_two.add_tag('nature boy', Auth(self.user), save=False)
self.preprint_two.add_tag('woo', Auth(self.user), save=False)
self.preprint_two.save()
self.preprint_three = PreprintFactory(creator=self.user, filename='stonecold.txt', providers=[self.provider])
self.preprint_three.add_tag('stone', Auth(self.user), save=False)
self.preprint_two.add_tag('cold', Auth(self.user), save=False)
self.preprint_three.save()
def tearDown(self):
super(TestPreprintFiltering, self).tearDown()
Node.remove()
def test_filtering_tags(self):
# both preprint and preprint_two have nature boy
url = '/{}preprints/?filter[tags]={}'.format(API_BASE, 'nature boy')
res = self.app.get(url, auth=self.user.auth)
reg_json = res.json['data']
ids = [each['id'] for each in reg_json]
assert_in(self.preprint._id, ids)
assert_in(self.preprint_two._id, ids)
assert_not_in(self.preprint_three._id, ids)
# filtering two tags
# preprint has both tags; preprint_two only has one
url = '/{}preprints/?filter[tags]={}&filter[tags]={}'.format(API_BASE, 'nature boy', 'ric flair')
res = self.app.get(url, auth=self.user.auth)
reg_json = res.json['data']
ids = [each['id'] for each in reg_json]
assert_in(self.preprint._id, ids)
assert_not_in(self.preprint_two._id, ids)
assert_not_in(self.preprint_three._id, ids)
def test_filter_by_doi(self):
url = '/{}preprints/?filter[doi]={}'.format(API_BASE, self.preprint.preprint_doi)
res = self.app.get(url, auth=self.user.auth)
data = res.json['data']
assert_equal(len(data), 1)
for result in data:
assert_equal(self.preprint._id, result['id'])
开发者ID:alexschiller,项目名称:osf.io,代码行数:60,代码来源:test_preprint_list.py
示例15: TestPreprintRelationshipPreprintProvider
class TestPreprintRelationshipPreprintProvider(ApiTestCase):
def setUp(self):
super(TestPreprintRelationshipPreprintProvider, self).setUp()
self.user = AuthUserFactory()
self.read_write_user = AuthUserFactory()
self.preprint = PreprintFactory(creator=self.user, providers=None)
self.preprint.add_contributor(self.read_write_user)
self.preprint.save()
self.preprint_provider_one = PreprintProviderFactory()
self.preprint_provider_two = PreprintProviderFactory()
self.preprint_preprint_providers_url = self.create_url(self.preprint._id)
def create_url(self, preprint_id):
return '/{0}preprints/{1}/relationships/preprint_providers/'.format(API_BASE, preprint_id)
def create_payload(self, *preprint_provider_ids):
data = []
for provider_id in preprint_provider_ids:
data.append({'type': 'preprint_providers', 'id': provider_id})
return {'data': data}
def test_add_preprint_providers(self):
assert_equal(self.preprint.preprint_providers, None)
res = self.app.post_json_api(
self.preprint_preprint_providers_url,
self.create_payload(self.preprint_provider_one._id, self.preprint_provider_two._id),
auth=self.user.auth
)
assert_equal(res.status_code, 201)
# check the relationship
self.preprint.reload()
assert_in(self.preprint_provider_one, self.preprint.preprint_providers)
assert_in(self.preprint_provider_two, self.preprint.preprint_providers)
def test_add_through_patch_one_provider_while_removing_other(self):
self.preprint.preprint_providers = [self.preprint_provider_one]
self.preprint.save()
assert_in(self.preprint_provider_one, self.preprint.preprint_providers)
assert_not_in(self.preprint_provider_two, self.preprint.preprint_providers)
res = self.app.patch_json_api(
self.preprint_preprint_providers_url,
self.create_payload(self.preprint_provider_two._id),
auth=self.user.auth
)
assert_equal(res.status_code, 200)
self.preprint.reload()
assert_not_in(self.preprint_provider_one, self.preprint.preprint_providers)
assert_in(self.preprint_provider_two, self.preprint.preprint_providers)
def test_add_through_post_to_preprint_with_provider(self):
self.preprint.preprint_providers = [self.preprint_provider_one]
self.preprint.save()
assert_in(self.preprint_provider_one, self.preprint.preprint_providers)
assert_not_in(self.preprint_provider_two, self.preprint.preprint_providers)
res = self.app.post_json_api(
self.preprint_preprint_providers_url,
self.create_payload(self.preprint_provider_two._id),
auth=self.user.auth
)
assert_equal(res.status_code, 201)
self.preprint.reload()
assert_in(self.preprint_provider_one, self.preprint.preprint_providers)
assert_in(self.preprint_provider_two, self.preprint.preprint_providers)
def test_add_provider_with_no_permissions(self):
new_user = AuthUserFactory()
new_user.save()
res = self.app.post_json_api(
self.preprint_preprint_providers_url,
self.create_payload(self.preprint_provider_one._id),
auth=new_user.auth,
expect_errors=True,
)
assert_equal(res.status_code, 403)
def test_delete_nothing(self):
res = self.app.delete_json_api(
self.preprint_preprint_providers_url,
self.create_payload(),
auth=self.user.auth
)
assert_equal(res.status_code, 204)
def test_remove_providers(self):
self.preprint.preprint_providers = [self.preprint_provider_one]
self.preprint.save()
#.........这里部分代码省略.........
开发者ID:monikagrabowska,项目名称:osf.io,代码行数:101,代码来源:test_preprint_relationship_preprint_provider.py
示例16: TestPreprintServicePermissions
class TestPreprintServicePermissions(OsfTestCase):
def setUp(self):
super(TestPreprintServicePermissions, self).setUp()
self.user = AuthUserFactory()
self.write_contrib = AuthUserFactory()
self.project = ProjectFactory(creator=self.user)
self.project.add_contributor(self.write_contrib, permissions=[permissions.WRITE])
self.preprint = PreprintFactory(project=self.project, is_published=False)
def test_nonadmin_cannot_set_subjects(self):
initial_subjects = self.preprint.subjects
with assert_raises(PermissionsError):
self.preprint.set_subjects([[SubjectFactory()._id]], auth=Auth(self.write_contrib), save=True)
self.preprint.reload()
assert_equal(initial_subjects, self.preprint.subjects)
def test_nonadmin_cannot_set_file(self):
initial_file = self.preprint.primary_file
file = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/panda.txt',
name='panda.txt',
materialized_path='/panda.txt')
file.save()
with assert_raises(PermissionsError):
self.preprint.set_primary_file(file, auth=Auth(self.write_contrib), save=True)
self.preprint.reload()
self.preprint.node.reload()
assert_equal(initial_file._id, self.preprint.primary_file._id)
def test_nonadmin_cannot_publish(self):
assert_false(self.preprint.is_published)
with assert_raises(PermissionsError):
self.preprint.set_published(True, auth=Auth(self.write_contrib), save=True)
assert_false(self.preprint.is_published)
def test_admin_can_set_subjects(self):
initial_subjects = self.preprint.subjects
self.preprint.set_subjects([[SubjectFactory()._id]], auth=Auth(self.user), save=True)
self.preprint.reload()
assert_not_equal(initial_subjects, self.preprint.subjects)
def test_admin_can_set_file(self):
initial_file = self.preprint.primary_file
file = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/panda.txt',
name='panda.txt',
materialized_path='/panda.txt')
file.save()
self.preprint.set_primary_file(file, auth=Auth(self.user), save=True)
self.preprint.reload()
self.preprint.node.reload()
assert_not_equal(initial_file._id, self.preprint.primary_file._id)
assert_equal(file._id, self.preprint.primary_file._id)
def test_admin_can_publish(self):
assert_false(self.preprint.is_published)
self.preprint.set_published(True, auth=Auth(self.user), save=True)
assert_true(self.preprint.is_published)
def test_admin_cannot_unpublish(self):
assert_false(self.preprint.is_published)
self.preprint.set_published(True, auth=Auth(self.user), save=True)
assert_true(self.preprint.is_published)
with assert_raises(ValueError) as e:
self.preprint.set_published(False, auth=Auth(self.user), save=True)
assert_in('Cannot unpublish', e.exception.message)
开发者ID:cslzchen,项目名称:osf.io,代码行数:86,代码来源:test_preprints.py
示例17: create_fake_project
def create_fake_project(creator, n_users, privacy, n_components, name, n_tags, presentation_name, is_registration, is_preprint, preprint_providers):
auth = Auth(user=creator)
project_title = name if name else fake.science_sentence()
if is_preprint:
providers_to_add = []
if preprint_providers:
providers = preprint_providers.split(',')
for provider in providers:
try:
preprint_provider = models.PreprintProvider.find_one(Q('_id', 'eq', provider))
except NoResultsFound:
preprint_provider = PreprintProviderFactory(name=provider)
providers_to_add.append(preprint_provider)
privacy = 'public'
project = PreprintFactory(title=project_title, description=fake.science_paragraph(), creator=creator, providers=providers_to_add)
elif is_registration:
project = RegistrationFactory(title=project_title, description=fake.science_paragraph(), creator=creator)
else:
project = ProjectFactory(title=project_title, description=fake.science_paragraph(), creator=creator)
project.set_privacy(privacy)
for _ in range(n_users):
contrib = create_fake_user()
project.add_contributor(contrib, auth=auth)
if isinstance(n_components, int):
for _ in range(n_components):
NodeFactory(project=project, title=fake.science_sentence(), description=fake.science_paragraph(),
creator=creator)
elif isinstance(n_components, list):
render_generations_from_node_structure_list(project, creator, n_components)
for _ in range(n_tags):
project.add_tag(fake.science_word(), auth=auth)
if presentation_name is not None:
project.add_tag(presentation_name, auth=auth)
project.add_tag('poster', auth=auth)
project.save()
logger.info('Created project: {0}'.format(project.title))
return project
开发者ID:monikagrabowska,项目名称:osf.io,代码行数:38,代码来源:create_fakes.py
示例18: TestSetPreprintFile
class TestSetPreprintFile(OsfTestCase):
def setUp(self):
super(TestSetPreprintFile, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(user=self.user)
self.read_write_user = AuthUserFactory()
self.read_write_user_auth = Auth(user=self.read_write_user)
self.project = ProjectFactory(creator=self.user)
self.file = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/panda.txt',
name='panda.txt',
materialized_path='/panda.txt')
self.file.save()
self.file_two = OsfStorageFile.create(
is_file=True,
node=self.project,
path='/pandapanda.txt',
name='pandapanda.txt',
materialized_path='/pandapanda.txt')
self.file_two.save()
self.project.add_contributor(self.read_write_user, permissions=[permissions.WRITE])
self.project.save()
self.preprint = PreprintFactory(project=self.project, finish=False)
@assert_logs(NodeLog.MADE_PUBLIC, 'project')
@assert_logs(NodeLog.PREPRINT_INITIATED, 'project', -2)
def test_is_preprint_property_new_file_to_published(self):
assert_false(self.project.is_preprint)
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
self.project.reload()
assert_false(self.project.is_preprint)
with assert_raises(ValueError):
self.preprint.set_published(True, auth=self.auth, save=True)
self.preprint.provider = PreprintProviderFactory()
self.preprint.set_subjects([[SubjectFactory()._id]], auth=self.auth, save=True)
self.project.reload()
assert_false(self.project.is_preprint)
self.preprint.set_published(True, auth=self.auth, save=True)
self.project.reload()
assert_true(self.project.is_preprint)
def test_project_made_public(self):
assert_false(self.project.is_public)
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
assert_false(self.project.is_public)
with assert_raises(ValueError):
self.preprint.set_published(True, auth=self.auth, save=True)
self.preprint.provider = PreprintProviderFactory()
self.preprint.set_subjects([[SubjectFactory()._id]], auth=self.auth, save=True)
self.project.reload()
assert_false(self.project.is_public)
self.preprint.set_published(True, auth=self.auth, save=True)
self.project.reload()
assert_true(self.project.is_public)
def test_add_primary_file(self):
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
assert_equal(self.project.preprint_file, self.file)
assert_equal(type(self.project.preprint_file), type(self.file.stored_object))
@assert_logs(NodeLog.PREPRINT_FILE_UPDATED, 'project')
def test_change_primary_file(self):
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
assert_equal(self.project.preprint_file, self.file)
self.preprint.set_primary_file(self.file_two, auth=self.auth, save=True)
assert_equal(self.project.preprint_file._id, self.file_two._id)
def test_add_invalid_file(self):
with assert_raises(AttributeError):
self.preprint.set_primary_file('inatlanta', auth=self.auth, save=True)
def test_preprint_created_date(self):
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
assert_equal(self.project.preprint_file._id, self.file._id)
assert(self.preprint.date_created)
assert_not_equal(self.project.date_created, self.preprint.date_created)
def test_non_admin_update_file(self):
self.preprint.set_primary_file(self.file, auth=self.auth, save=True)
assert_equal(self.project.preprint_file._id, self.file._id)
with assert_raises(PermissionsError):
self.preprint.set_primary_file(self.file_two, auth=self.read_write_user_auth, save=True)
assert_equal(self.project.preprint_file._id, self.file._id)
开发者ID:cslzchen,项目名称:osf.io,代码行数:95,代码来源:test_preprints.py
示例19: TestPreprintUpdateLicense
class TestPreprintUpdateLicense(ApiTestCase):
def setUp(self):
super(TestPreprintUpdateLicense, self).setUp()
ensure_licenses()
self.admin_contributor = AuthUserFactory()
self.rw_contributor = AuthUserFactory()
self.read_contributor = AuthUserFactory()
self.non_contributor = AuthUserFactory()
self.preprint_provider = PreprintProviderFactory()
self.preprint = PreprintFactory(creator=self.admin_contributor, provider=self.preprint_provider)
self.preprint.node.add_contributor(self.rw_contributor, auth=Auth(self.admin_contributor))
self.preprint.node.add_contributor(self.read_contributor, auth=Auth(self.admin_contributor), permissions=['read'])
self.preprint.node.save()
self.cc0_license = NodeLicense.find_one(Q('name', 'eq', 'CC0 1.0 Universal'))
self.mit_license = NodeLicense.find_one(Q('name', 'eq', 'MIT License'))
self.no_license = NodeLicense.find_one(Q('name', 'eq', 'No license'))
self.preprint_provider.licenses_acceptable = [self.cc0_license, self.no_license]
self.preprint_provider.save()
self.url = '/{}preprints/{}/'.format(API_BASE, self.preprint._id)
def make_payload(self, node_id, license_id=None, license_year=None, copyright_holders=None):
attributes = {}
if license_year and copyright_holders:
attributes = {
'license_record': {
'year': license_year,
'copyright_holders': copyright_holders
}
}
elif license_year:
attributes = {
'license_record': {
'year': license_year
}
}
elif copyright_holders:
attributes = {
'license_record': {
'copyright_holders': copyright_holders
}
}
return {
'data': {
'id': node_id,
'attributes': attributes,
'relationships': {
'license': {
'data': {
'type': 'licenses',
'id': license_id
}
}
}
}
} if license_id else {
'data': {
'id': node_id,
'attributes': attributes
}
}
def make_request(self, url, data, auth=None, expect_errors=False):
return self.app.patch_json_api(url, data, auth=auth, expect_errors=expect_errors)
def test_admin_can_update_license(self):
data = self.make_payload(
node_id=self.preprint._id,
license_id=self.cc0_license._id
)
assert_equal(self.preprint.license, None)
res = self.make_request(self.url, data, auth=self.admin_contributor.auth)
assert_equal(res.status_code, 200)
self.preprint.reload()
assert_equal(self.preprint.license.node_license, self.cc0_license)
assert_equal(self.preprint.license.year, None)
assert_equal(self.preprint.license.copyright_holders, [])
# check logs
log = self.preprint.node.logs[-1]
assert_equal(log.action, 'preprint_license_updated')
assert_equal(log.params.get('preprint'), self.preprint._id)
def test_admin_can_update_license_record(self):
data = self.make_payload(
node_id=self.preprint._id,
license_id=self.no_license._id,
license_year='2015',
#.........这里部分代码省略.........
开发者ID:baylee-d,项目名称:osf.io,代码行数:101,代码来源:test_preprint_detail.py
示例20: TestOnPreprintUpdatedTask
class TestOnPreprintUpdatedTask(OsfTestCase):
def setUp(self):
super(TestOnPreprintUpdatedTask, self).setUp()
self.user = AuthUserFactory()
self.auth = Auth(user=self.user)
self.preprint = PreprintFactory()
self.preprint.node.add_tag('preprint', self.auth, save=False)
self.preprint.node.add_tag('spoderman', self.auth, save=False)
self.preprint.node.add_unregistered_contributor('BoJack Horseman', '[email protected]', Auth(self.preprint.node.creator))
self.preprint.node.add_contributor(self.user, visible=False)
self.preprint.node.save()
self.preprint.node.creator.given_name = 'ZZYZ'
self.preprint.node.creator.save()
self.preprint.set_subjects([[SubjectFactory()._id]], auth=Auth(self.preprint.node.creator), save=False)
def tearDown(self):
handlers.celery_before_request()
super(TestOnPreprintUpdatedTask, self).tearDown()
def test_format_preprint(self):
res = format_preprint(self.preprint)
assert set(gn['@type'] for gn in res) == {'creator', 'contributor', 'throughsubjects', 'subject', 'throughtags', 'tag', 'workidentifier', 'agentidentifier', 'person', 'preprint'}
nodes = dict(enumerate(res))
preprint = nodes.pop(next(k for k, v in nodes.items() if v['@type'] == 'preprint'))
assert preprint['title'] == self.preprint.node.title
assert preprint['description'] == self.preprint.node.description
assert preprint['is_deleted'] == (not self.preprint.is_published or not self.preprint.node.is_public or self.preprint.node.is_preprint_orphan)
assert preprint['date_updated'] == self.preprint.date_modified.isoformat()
assert preprint['date_published'] == self.preprint.date_published.isoformat()
tags = [nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'tag']
through_tags = [nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'throughtags']
assert sorted(tag['@id'] for tag in tags) == sorted(tt['tag']['@id'] for tt in through_tags)
assert sorted(tag['name'] for tag in tags) == ['preprint', 'spoderman']
subjects = [nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'subject']
through_subjects = [nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'throughsubjects']
assert sorted(subject['@id'] for subject in subjects) == sorted(tt['subject']['@id'] for tt in through_subjects)
assert sorted(subject['name'] for subject in subjects) == ['Example Subject #1']
people = sorted([nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'person'], key=lambda x: x['given_name'])
assert people == [{
'@id': people[0]['@id'],
'@type': 'person',
'given_name': u'BoJack',
'family_name': u'Horseman',
}, {
'@id': people[1]['@id'],
'@type': 'person',
'given_name': self.user.given_name,
'family_name': self.user.family_name,
}, {
'@id': people[2]['@id'],
'@type': 'person',
'given_name': self.preprint.node.creator.given_name,
'family_name': self.preprint.node.creator.family_name,
}]
creators = sorted([nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'creator'], key=lambda x: x['order_cited'])
assert creators == [{
'@id': creators[0]['@id'],
'@type': 'creator',
'order_cited': 0,
'cited_as': self.preprint.node.creator.fullname,
'agent': {'@id': people[2]['@id'], '@type': 'person'},
'creative_work': {'@id': preprint['@id'], '@type': preprint['@type']},
}, {
'@id': creators[1]['@id'],
'@type': 'creator',
'order_cited': 1,
'cited_as': 'BoJack Horseman',
'agent': {'@id': people[0]['@id'], '@type': 'person'},
'creative_work': {'@id': preprint['@id'], '@type': preprint['@type']},
}]
contributors = [nodes.pop(k) for k, v in nodes.items() if v['@type'] == 'contributor']
assert contributors == [{
'@id': contributors[0]['@id'],
|
请发表评论