def test_orcid_push_triggered_on_create_record_with_multiple_authors_with_allow_push(mock_orcid_push_task, app, raw_record, two_users_with_permission, enable_orcid_push_feature):
    migrate_and_insert_record(raw_record, skip_files=True)

    expected_kwargs_user1 = {
        'kwargs': {
            'orcid': two_users_with_permission[0]['orcid'],
            'rec_id': 1608652,
            'oauth_token': two_users_with_permission[0]['token'],
            'kwargs_to_pusher': {'record_db_version': mock.ANY},
        },
        'queue': 'orcid_push',
    }
    expected_kwargs_user2 = {
        'kwargs': {
            'orcid': two_users_with_permission[1]['orcid'],
            'rec_id': 1608652,
            'oauth_token': two_users_with_permission[1]['token'],
            'kwargs_to_pusher': {'record_db_version': mock.ANY},
        },
        'queue': 'orcid_push',
    }

    mock_orcid_push_task.apply_async.assert_any_call(**expected_kwargs_user1)
    mock_orcid_push_task.apply_async.assert_any_call(**expected_kwargs_user2)
    assert mock_orcid_push_task.apply_async.call_count == 2
def test_orcid_push_triggered_on_create_record_with_allow_push(mocked_Task, app, raw_record, user_with_permission):
    mocked_Task.return_value = mocked_Task
    migrate_and_insert_record(raw_record, skip_files=True)

    expected_kwargs = {
        'kwargs': {
            'orcid': user_with_permission['orcid'],
            'rec_id': 1608652,
            'token': user_with_permission['token'],
        },
        'queue': 'orcid_push',
    }

    mocked_Task.apply_async.assert_called_once_with(**expected_kwargs)
def test_orcid_push_triggered_on_create_record_with_allow_push(mock_orcid_push_task, app, raw_record, user_with_permission, enable_orcid_push_feature):
    migrate_and_insert_record(raw_record, skip_files=True)

    expected_kwargs = {
        'kwargs': {
            'orcid': user_with_permission['orcid'],
            'rec_id': 1608652,
            'oauth_token': user_with_permission['token'],
            'kwargs_to_pusher': {'record_db_version': mock.ANY},
        },
        'queue': 'orcid_push',
    }

    mock_orcid_push_task.apply_async.assert_called_once_with(**expected_kwargs)
Ejemplo n.º 4
0
def test_migrate_and_insert_record_other_exception(mock_logger, isolated_app):
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )
    migrate_and_insert_record(raw_record)

    prod_record = LegacyRecordsMirror.query.filter(LegacyRecordsMirror.recid == 12345).one()
    assert prod_record.valid is False
    assert prod_record.marcxml == raw_record

    assert not mock_logger.error.called
    mock_logger.exception.assert_called_once_with('Migrator Record Insert Error')
Ejemplo n.º 5
0
def test_migrate_and_insert_record_invalid_record(mock_logger, isolated_app):
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )

    migrate_and_insert_record(raw_record)

    prod_record = InspireProdRecords.query.filter(InspireProdRecords.recid == 12345).one()
    assert prod_record.valid is False
    assert prod_record.marcxml == raw_record

    assert mock_logger.error.called
    assert not mock_logger.exception.called
Ejemplo n.º 6
0
def test_migrate_and_insert_record_dojson_error(mock_logger, isolated_app):
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="260" ind1=" " ind2=" ">'
        '    <subfield code="c">Definitely not a date</subfield>'
        '  </datafield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )

    migrate_and_insert_record(raw_record)

    prod_record = InspireProdRecords.query.filter(InspireProdRecords.recid == 12345).one()
    assert prod_record.valid is False
    assert prod_record.marcxml == raw_record

    assert not mock_logger.error.called
    mock_logger.exception.assert_called_once_with('Migrator DoJSON Error')
Ejemplo n.º 7
0
def test_migrate_and_insert_record_valid_record(mock_logger, isolated_app):
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="245" ind1=" " ind2=" ">'
        '    <subfield code="a">On the validity of INSPIRE records</subfield>'
        '  </datafield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>')

    migrate_and_insert_record(raw_record)

    prod_record = LegacyRecordsMirror.query.filter(
        LegacyRecordsMirror.recid == 12345).one()
    assert prod_record.valid is True
    assert prod_record.marcxml == raw_record

    assert not mock_logger.error.called
    assert not mock_logger.exception.called
Ejemplo n.º 8
0
def test_migrate_and_insert_record_valid_record(mock_logger, isolated_app):
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="245" ind1=" " ind2=" ">'
        '    <subfield code="a">On the validity of INSPIRE records</subfield>'
        '  </datafield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )

    migrate_and_insert_record(raw_record)

    prod_record = LegacyRecordsMirror.query.filter(LegacyRecordsMirror.recid == 12345).one()
    assert prod_record.valid is True
    assert prod_record.marcxml == raw_record

    assert not mock_logger.error.called
    assert not mock_logger.exception.called
Ejemplo n.º 9
0
def test_migrate_and_insert_record_invalid_record_update_regression(
        mock_logger, app):
    # test is not isolated so the models_committed signal fires and the indexer might be called
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="245" ind1=" " ind2=" ">'
        '    <subfield code="a">On the validity of INSPIRE records</subfield>'
        '  </datafield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>')

    migrate_and_insert_record(raw_record)

    db.session.commit()

    raw_record = ('<record>'
                  '  <controlfield tag="001">12345</controlfield>'
                  '  <datafield tag="980" ind1=" " ind2=" ">'
                  '    <subfield code="a">HEP</subfield>'
                  '  </datafield>'
                  '</record>')

    with patch('inspirehep.modules.records.receivers.RecordIndexer'
               ) as mock_indexer:
        migrate_and_insert_record(raw_record)

        prod_record = LegacyRecordsMirror.query.filter(
            LegacyRecordsMirror.recid == 12345).one()
        assert prod_record.valid is False
        assert prod_record.marcxml == raw_record

        assert mock_logger.error.called
        assert not mock_logger.exception.called
        assert not mock_indexer.return_value.index.called
Ejemplo n.º 10
0
def test_migrate_and_insert_record_invalid_record_update_regression(mock_logger, app):
    # test is not isolated so the models_committed signal fires and the indexer might be called
    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="245" ind1=" " ind2=" ">'
        '    <subfield code="a">On the validity of INSPIRE records</subfield>'
        '  </datafield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )

    migrate_and_insert_record(raw_record)

    db.session.commit()

    raw_record = (
        '<record>'
        '  <controlfield tag="001">12345</controlfield>'
        '  <datafield tag="980" ind1=" " ind2=" ">'
        '    <subfield code="a">HEP</subfield>'
        '  </datafield>'
        '</record>'
    )

    with patch('inspirehep.modules.records.receivers.RecordIndexer') as mock_indexer:
        migrate_and_insert_record(raw_record)

        prod_record = LegacyRecordsMirror.query.filter(LegacyRecordsMirror.recid == 12345).one()
        assert prod_record.valid is False
        assert prod_record.marcxml == raw_record

        assert mock_logger.error.called
        assert not mock_logger.exception.called
        assert not mock_indexer.return_value.index.called
def test_orcid_push_triggered_on_create_record_with_multiple_authors_with_allow_push(mocked_Task, app, raw_record, two_users_with_permission):
    mocked_Task.return_value = mocked_Task
    migrate_and_insert_record(raw_record, skip_files=True)

    expected_kwargs_user1 = {
        'kwargs': {
            'orcid': two_users_with_permission[0]['orcid'],
            'rec_id': 1608652,
            'token': two_users_with_permission[0]['token'],
        },
        'queue': 'orcid_push',
    }
    expected_kwargs_user2 = {
        'kwargs': {
            'orcid': two_users_with_permission[1]['orcid'],
            'rec_id': 1608652,
            'token': two_users_with_permission[1]['token'],
        },
        'queue': 'orcid_push',
    }

    mocked_Task.apply_async.assert_any_call(**expected_kwargs_user1)
    mocked_Task.apply_async.assert_any_call(**expected_kwargs_user2)
    assert mocked_Task.apply_async.call_count == 2
def test_orcid_push_not_triggered_on_create_record_no_feat_flag(
        mocked_Task, app, raw_record, user_with_permission):
    migrate_and_insert_record(raw_record, skip_files=True)

    mocked_Task.assert_not_called()
def test_orcid_push_not_triggered_on_create_record_without_token(
        mock_orcid_push_task, app, raw_record, user_without_token):
    migrate_and_insert_record(raw_record, skip_files=True)

    mock_orcid_push_task.assert_not_called()
def record(raw_record):
    with mock.patch('inspirehep.modules.records.receivers.Task') as mocked_Task:
        mocked_Task.return_value = mocked_Task
        _record = migrate_and_insert_record(raw_record, skip_files=True)

    return _record
def test_orcid_push_not_triggered_on_create_record_no_feat_flag(mocked_Task, app, raw_record, user_with_permission):
    migrate_and_insert_record(raw_record, skip_files=True)

    mocked_Task.assert_not_called()
def record(raw_record):
    with mock.patch('inspirehep.modules.orcid.tasks.orcid_push') as mock_orcid_push:
        mock_orcid_push.return_value = mock_orcid_push
        _record = migrate_and_insert_record(raw_record, skip_files=True)

    return _record
def test_orcid_push_not_triggered_on_create_record_without_token(mock_orcid_push_task, app, raw_record, user_without_token):
    migrate_and_insert_record(raw_record, skip_files=True)

    mock_orcid_push_task.assert_not_called()