def test_Kibana(self): kibana_log = logdir + '/test_kibana.log' if os.path.exists(kibana_log): os.remove(kibana_log) with patch.object(report.requests, 'post') as post: data = {u'responses': [{u'hits': {u'total': 5}, u'status': 200}]} resp = PropertyMock() resp.text = str(data) resp.json = lambda: data resp.status_code = 200 post.return_value = resp report.num_refused_claims(n_days=1, test=True) report.num_missing_profile(n_days=1, test=True) log = open(logdir + '/test_kibana.log').read() line = 0 for x in log.strip().split('\n'): j = json.loads(x) if line == 0: self.assertEqual( j['message'], u'Number of claims rejected in the last 1 days: 5') if line == 1: self.assertEqual( j['message'], u'Number of missing profile errors in the last 1 days: 5' ) line += 1
def test_create_client(self): data = { "access_token": "foobarbaz", "username": "******", "token_type": "Bearer", "expire_in": "2050-01-01T00:00:00", "refresh_token": "refreshfoo", "scopes": ["api", "execute-query", "store-query"], "client_id": "abcd", "client_secret": "clientsecret", "ratelimit": 1.0 } r = PropertyMock() r.text = str(data) r.json = lambda: data r.status_code = 200 with mock.patch.object(self.app.client, 'get', return_value=r) as client: c = self.app.create_client() self.assertDictContainsSubset( { 'username': u'*****@*****.**', 'scopes': 'api execute-query store-query', 'token': u'foobarbaz', 'client_id': u'abcd', 'client_secret': u'clientsecret', 'expire_in': '2050-01-01T00:00:00+00:00', 'id': 1, 'refresh_token': u'refreshfoo' }, c)
def test_task_check_orcid_updates(self): with patch.object(tasks.requests, 'get') as get, \ patch.object(tasks.task_index_orcid_profile, 'delay') as next_task, \ patch.object(tasks.task_check_orcid_updates, 'apply_async') as recheck_task: #data = open(os.path.join(self.proj_home, 'ADSOrcid/tests/stub_data', '0000-0003-3041-2092.orcid-updates.json'), 'r').read() data = [{ 'orcid_id': '0000-0003-3041-2092', 'updated': str(utils.get_date()) }, { 'orcid_id': '0000-0003-3041-2093', 'updated': str(utils.get_date()) }] r = PropertyMock() r.text = str(data) r.json = lambda: data r.status_code = 200 get.return_value = r tasks.task_check_orcid_updates({}) # could be anything self.assertEqual(next_task.call_args_list[0][0][0]['orcidid'], '0000-0003-3041-2092') self.assertEqual(next_task.call_args_list[1][0][0]['orcidid'], '0000-0003-3041-2093') self.assertEqual(str(recheck_task.call_args_list[0]), "call(args=({u'errcount': 0},), countdown=300)")
def test_task_index_orcid_profile(self): with patch.object(self.app, 'retrieve_orcid') as retrieve_orcid, \ patch.object(tasks.requests, 'get') as get, \ patch.object(self.app, 'get_claims') as get_claims, \ patch.object(self.app, 'insert_claims') as insert_claims, \ patch.object(tasks.task_index_orcid_profile, 'apply_async') as task_index_orcid_profile, \ patch.object(tasks.task_match_claim, 'delay') as next_task: r = PropertyMock() data = { 'bibcode': { 'status': 'some status', 'title': 'some title' } } r.text = str(data) r.json = lambda: data r.status_code = 200 get.return_value = r get_claims.return_value = ( { 'bibcode1': ('Bibcode1', utils.get_date('2017-01-01'), 'provenance', ['id1', 'id2'], ['Stern, D K', 'author two']), 'bibcode2': ('Bibcode2', utils.get_date('2017-01-01'), 'provenance', ['id1', 'id2'], ['author one', 'Stern, D K']), 'bibcode3': ('Bibcode3', utils.get_date('2017-01-01'), 'provenance', ['id1', 'id2'], ['Stern, D K', 'author two']), }, { 'bibcode1': ('Bibcode1', utils.get_date('2017-01-01')), 'bibcode4': ('Bibcode4', utils.get_date('2017-01-01') ), # we have, but orcid no more }, { 'bibcode2': ('Bibcode2', utils.get_date('2017-01-01')), }) insert_claims.return_value = [ { 'status': u'#full-import', 'bibcode': u'', 'created': '2017-05-26T21:29:22.726506+00:00', 'provenance': u'OrcidImporter', 'orcidid': '0000-0003-3041-2092', 'id': None }, { 'status': u'claimed', 'bibcode': 'Bibcode2', 'created': '2017-01-01T00:00:00+00:00', 'provenance': u'provenance', 'orcidid': '0000-0003-3041-2092', 'id': None }, { 'status': u'claimed', 'bibcode': 'Bibcode3', 'created': '2017-01-01T00:00:00+00:00', 'provenance': u'provenance', 'orcidid': '0000-0003-3041-2092', 'id': None }, { 'status': u'removed', 'bibcode': 'Bibcode4', 'created': '2017-05-26T21:29:22.728368+00:00', 'provenance': u'OrcidImporter', 'orcidid': '0000-0003-3041-2092', 'id': None }, { 'status': u'unchanged', 'bibcode': 'Bibcode1', 'created': '2017-01-01T00:00:00+00:00', 'provenance': u'OrcidImporter', 'orcidid': '0000-0003-3041-2092', 'id': None }, ] self.assertFalse(next_task.called) # check authors can be skipped retrieve_orcid.return_value = { 'status': 'blacklisted', 'name': u'Stern, D K', 'facts': { u'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], u'orcid_name': [u'Stern, Daniel'], u'author_norm': [u'Stern, D'], u'name': u'Stern, D K' }, 'orcidid': u'0000-0003-2686-9241', 'id': 1, 'account_id': None, 'updated': utils.get_date('2017-01-01') } tasks.task_index_orcid_profile({'orcidid': '0000-0003-3041-2092'}) self.assertFalse(next_task.called) retrieve_orcid.return_value = { 'status': None, 'name': u'Stern, D K', 'facts': { u'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], u'orcid_name': [u'Stern, Daniel'], u'author_norm': [u'Stern, D'], u'name': u'Stern, D K' }, 'orcidid': u'0000-0003-2686-9241', 'id': 1, 'account_id': None, 'updated': utils.get_date('2017-01-01') } tasks.task_index_orcid_profile({'orcidid': '0000-0003-3041-2092'}) self.assertTrue(next_task.called) self.assertEqual(next_task.call_count, 4) self.assertEqual([(x.bibcode, x.status) for x in insert_claims.call_args[0][0]], [(u'', u'#full-import'), ('Bibcode2', u'claimed'), ('Bibcode3', u'claimed'), ('Bibcode4', u'removed'), ('Bibcode1', u'unchanged')]) self.assertEqual([(x[0][0]['bibcode'], x[0][0]['status']) for x in next_task.call_args_list], [('Bibcode2', u'claimed'), ('Bibcode3', u'claimed'), ('Bibcode4', u'removed'), ('Bibcode1', u'unchanged')]) self.assertEqual( (next_task.call_args_list[0][0][0]['bibcode'], next_task.call_args_list[0][0][0]['author_list']), ('Bibcode2', ['author one', 'Stern, D K'])) self.assertEqual( (next_task.call_args_list[0][0][0]['bibcode'], next_task.call_args_list[0][0][0]['identifiers']), ('Bibcode2', ['id1', 'id2']))
def test_task_match_removed_claim(self): with patch.object(self.app, 'retrieve_record') as retrieve_record, \ patch.object(self.app, 'retrieve_metadata') as retrieve_metadata, \ patch.object(self.app, 'record_claims') as record_claims, \ patch.object(tasks.requests, 'post') as post, \ patch.object(tasks.task_output_results, 'delay') as next_task: retrieve_record.return_value = { 'bibcode': 'BIBCODE22', 'authors': ['Einstein, A', 'Socrates', 'Stern, D K', 'Munger, C'], 'claims': { 'verified': ['-', '-', '-', '-'], 'unverified': ['-', '-', '0000-0003-3041-2092', '-'] } } retrieve_metadata.return_value = { 'identifier': ['id1', 'id2'], u'author_list': ['author one', 'author two', 'Stern, D K', 'author four'] } r = PropertyMock() data = {'BIBCODE22': 'status'} r.text = str(data) r.json = lambda: data r.status_code = 200 post.return_value = r self.assertFalse(next_task.called) tasks.task_match_claim({ 'status': u'removed', 'bibcode': 'BIBCODE22', u'name': u'Stern, D K', 'provenance': u'provenance', u'orcid_name': [u'Stern, Daniel'], u'author_norm': [u'Stern, D'], u'author_status': None, 'orcidid': '0000-0003-3041-2092', u'author': [u'Stern, D', u'Stern, D K', u'Stern, Daniel'], u'author_id': 1, u'account_id': None }) self.assertEqual(('BIBCODE22', { 'verified': ['-', '-', '-', '-'], 'unverified': ['-', '-', '-', '-'] }, ['Einstein, A', 'Socrates', 'Stern, D K', 'Munger, C']), record_claims.call_args[0]) self.assertEqual( { 'bibcode': 'BIBCODE22', 'authors': ['Einstein, A', 'Socrates', 'Stern, D K', 'Munger, C'], 'verified': ['-', '-', '-', '-'], 'unverified': ['-', '-', '-', '-'] }, next_task.call_args[0][0].toJSON())