예제 #1
0
 def test_create_identifiers_not_exists(self):
     identifier = self.node._id
     url = furl.furl('https://ezid.cdlib.org/id')
     doi = settings.EZID_FORMAT.format(namespace=settings.DOI_NAMESPACE, guid=identifier)
     url.path.segments.append(doi)
     httpretty.register_uri(
         httpretty.PUT,
         url.url,
         body=to_anvl({
             'success': '{doi}osf.io/{ident} | {ark}osf.io/{ident}'.format(
                 doi=settings.DOI_NAMESPACE,
                 ark=settings.ARK_NAMESPACE,
                 ident=identifier,
             ),
         }),
         status=201,
         priority=1,
     )
     res = self.app.post(
         self.node.api_url_for('node_identifiers_post'),
         auth=self.user.auth,
     )
     self.node.reload()
     assert_equal(
         res.json['doi'],
         self.node.get_identifier_value('doi')
     )
     assert_equal(
         res.json['ark'],
         self.node.get_identifier_value('ark')
     )
     assert_equal(res.status_code, 201)
예제 #2
0
 def test_create_identifiers_exists(self):
     identifier = self.node._id
     doi = settings.EZID_FORMAT.format(namespace=settings.DOI_NAMESPACE, guid=identifier)
     url = furl.furl('https://ezid.cdlib.org/id')
     url.path.segments.append(doi)
     httpretty.register_uri(
         httpretty.PUT,
         url.url,
         body='identifier already exists',
         status=400,
     )
     httpretty.register_uri(
         httpretty.GET,
         url.url,
         body=to_anvl({
             'success': doi,
         }),
         status=200,
     )
     res = self.app.post(
         self.node.api_url_for('node_identifiers_post'),
         auth=self.user.auth,
     )
     self.node.reload()
     assert_equal(
         res.json['doi'],
         self.node.get_identifier_value('doi')
     )
     assert_equal(
         res.json['ark'],
         self.node.get_identifier_value('ark')
     )
     assert_equal(res.status_code, 201)
예제 #3
0
 def test_create_identifiers_exists_ezid(self):
     guid = self.registration._id
     doi = settings.DOI_FORMAT.format(prefix=settings.EZID_DOI_NAMESPACE, guid=guid).replace('doi:', '')
     url = furl.furl(self.client.base_url)
     url.path.segments += ['id', doi]
     responses.add(
         responses.Response(
             responses.PUT,
             url.url,
             body='identifier already exists',
             status=400,
         )
     )
     responses.add(
         responses.Response(
             responses.GET,
             url.url,
             body=to_anvl({
                 'success': doi,
             }),
             status=200,
         )
     )
     with mock.patch('osf.models.Registration.get_doi_client') as mock_get_doi:
         mock_get_doi.return_value = self.client
         res = self.app.post(
                 self.registration.api_url_for('node_identifiers_post'),
                 auth=self.user.auth,
         )
     self.registration.reload()
     assert_equal(
         res.json['doi'],
         self.registration.get_identifier_value('doi')
     )
     assert_equal(res.status_code, 201)
예제 #4
0
 def update_identifier(self, object, category):
     metadata = self.build_metadata(object)
     status = self.get_status(object)
     metadata['_status'] = status
     identifier = self.build_doi(object)
     resp = self._make_request(
         'POST',
         self._build_url('id', identifier),
         data=utils.to_anvl(metadata or {}),
         expects=(200, ),
     )
     return utils.from_anvl(resp.content)
예제 #5
0
파일: ezid.py 프로젝트: erinspace/osf.io
 def update_identifier(self, object, category):
     if not waffle.switch_is_active(EZID_SWITCH):
         logger.info('ezid waffle switch is off. Doing nothing...')
         return None
     metadata = self.build_metadata(object)
     status = self.get_status(object)
     metadata['_status'] = status
     identifier = self.build_doi(object)
     resp = self._make_request(
         'POST',
         self._build_url('id', identifier),
         data=utils.to_anvl(metadata or {}),
         expects=(200, ),
     )
     return utils.from_anvl(resp.content)
예제 #6
0
파일: ezid.py 프로젝트: aaxelb/osf.io
 def update_identifier(self, object, category):
     if not waffle.switch_is_active(features.EZID_SWITCH):
         logger.info('ezid waffle switch is off. Doing nothing...')
         return None
     metadata = self.build_metadata(object)
     status = self.get_status(object)
     metadata['_status'] = status
     identifier = self.build_doi(object)
     resp = self._make_request(
         'POST',
         self._build_url('id', identifier),
         data=utils.to_anvl(metadata or {}),
         expects=(200, ),
     )
     return utils.from_anvl(resp.content)
예제 #7
0
 def create_identifier(self, object, category):
     if category in ['doi', 'ark']:
         metadata = self.build_metadata(object)
         doi = self.build_doi(object)
         resp = requests.request(
             'PUT',
             self._build_url('id', doi),
             data=utils.to_anvl(metadata or {}),
         )
         if resp.status_code != 201:
             if 'identifier already exists' in resp.content:
                 raise exceptions.IdentifierAlreadyExists()
             else:
                 raise exceptions.ClientResponseError(resp)
         resp = utils.from_anvl(resp.content)
         return dict(
             [each.strip('/') for each in pair.strip().split(':')]
             for pair in resp['success'].split('|')
         )
     else:
         raise NotImplementedError('Create identifier method is not supported for category {}'.format(category))