def test_github_creators_metadata(m_ljv1t, m_get_contributors, m_get_owner, defaults, contribs, owner, output): """Test 'creators' metadata fetching from GitHub.""" m_get_contributors.return_value = contribs m_get_owner.return_value = owner release = MagicMock() release.event.user_id = 1 release.event.payload['repository']['id'] = 1 zgh = ZenodoGitHubRelease(release) zgh.defaults = defaults zgh.gh.api = None zgh.extra_metadata = {} zgh.metadata m_ljv1t.assert_called_with({'metadata': {'creators': output}})
def test_github_publish(zgh_meta, db, users, dummy_location, deposit_metadata): """Test basic GitHub payload.""" gh3mock = MagicMock() gh3mock.api.session.get().raw = BytesIO(b'foobar') gh3mock.account.user.email = '*****@*****.**' release = MagicMock() release.event.user_id = 1 release.event.payload['release']['author']['id'] = 1 release.event.payload['foo']['bar']['baz'] = 1 release.event.payload['repository']['id'] = 1 zgh = ZenodoGitHubRelease(release) zgh.gh = gh3mock zgh.release = dict(author=dict(id=1)) zgh.metadata = deposit_metadata zgh.files = (('foobar.txt', None), ) zgh.publish() expected_sip_agent = { 'email': '*****@*****.**', '$schema': 'http://zenodo.org/schemas/sipstore/' 'agent-githubclient-v1.0.0.json', 'user_id': 1, 'github_id': 1, } gh_sip = SIP.query.one() assert gh_sip.agent == expected_sip_agent
def test_github_creators_metadata(mocker, defaults, contribs, owner, output): """Test 'creators' metadata fetching from GitHub.""" m_ljv1t = mocker.patch( 'zenodo.modules.github.api.legacyjson_v1_translator') m_get_contributors = mocker.patch( 'zenodo.modules.github.api.get_contributors') m_citation_metadata = mocker.patch( 'invenio_github.api.GitHubRelease.citation_metadata') m_citation_metadata.return_value = {} m_get_owner = mocker.patch('zenodo.modules.github.api.get_owner') m_get_contributors.return_value = contribs m_get_owner.return_value = owner release = MagicMock() release.event.user_id = 1 release.event.payload['repository']['id'] = 1 zgh = ZenodoGitHubRelease(release) zgh.defaults = defaults zgh.gh.api = None zgh.extra_metadata = {} zgh.metadata m_ljv1t.assert_called_with({'metadata': {'creators': output}})
def test_github_publish(datacite_mock, zgh_meta, db, users, location, deposit_metadata): """Test basic GitHub payload.""" data = b'foobar' resp = Mock() resp.headers = {'Content-Length': len(data)} resp.raw = BytesIO(b'foobar') resp.status_code = 200 gh3mock = MagicMock() gh3mock.api.session.get = Mock(return_value=resp) gh3mock.account.user.email = '*****@*****.**' release = MagicMock() release.event.user_id = 1 release.event.payload['release']['author']['id'] = 1 release.event.payload['foo']['bar']['baz'] = 1 release.event.payload['repository']['id'] = 1 zgh = ZenodoGitHubRelease(release) zgh.gh = gh3mock zgh.release = dict(author=dict(id=1)) zgh.metadata = deposit_metadata zgh.files = (('foobar.txt', None), ) zgh.model.repository.releases.filter_by().count.return_value = 0 datacite_task_mock = MagicMock() # We have to make the call to the task synchronous datacite_task_mock.delay = datacite_register.apply with patch('zenodo.modules.deposit.tasks.datacite_register', new=datacite_task_mock): zgh.publish() # datacite should be called twice - for regular DOI and Concept DOI assert datacite_mock().metadata_post.call_count == 2 datacite_mock().doi_post.assert_any_call( '10.5072/zenodo.1', 'https://zenodo.org/record/1') datacite_mock().doi_post.assert_any_call( '10.5072/zenodo.2', 'https://zenodo.org/record/2') expected_sip_agent = { 'email': '*****@*****.**', '$schema': 'http://zenodo.org/schemas/sipstore/' 'agent-githubclient-v1.0.0.json', 'user_id': 1, 'github_id': 1, } gh_sip = SIP.query.one() assert gh_sip.agent == expected_sip_agent