class TestProviderService(FeedingService):

    NAME = 'test'

    ERRORS = [ProviderError.anpaError(None, None).get_error_description()]

    def _update(self, provider, update):
        return []
 def test_ingest_provider_closed_when_critical_error_raised(self):
     provider_name = "AAP"
     provider = self._get_provider(provider_name)
     self.assertFalse(provider.get("is_closed"))
     provider_service = self._get_provider_service(provider)
     provider_service.provider = provider
     provider_service.close_provider(provider, ProviderError.anpaError())
     provider = self._get_provider(provider_name)
     self.assertTrue(provider.get("is_closed"))
 def test_ingest_provider_closed_when_critical_error_raised(self):
     provider_name = 'AAP'
     provider = self._get_provider(provider_name)
     self.assertFalse(provider.get('is_closed'))
     provider_service = self._get_provider_service(provider)
     provider_service.provider = provider
     provider_service.close_provider(provider, ProviderError.anpaError())
     provider = self._get_provider(provider_name)
     self.assertTrue(provider.get('is_closed'))
Exemplo n.º 4
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service('vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for anpa_category in anpa_categories['items']:
                if anpa_category['is_active'] is True \
                        and item['anpa-category']['qcode'].lower() == anpa_category['value'].lower():
                    item['anpa-category'] = {'qcode': item['anpa-category']['qcode'], 'name': anpa_category['name']}
                    break
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 5
0
 def test_ingest_provider_closed_when_critical_error_raised(self):
     provider_name = 'AAP'
     with self.app.app_context():
         provider = self._get_provider(provider_name)
         self.assertFalse(provider.get('is_closed'))
         provider_service = self._get_provider_service(provider)
         provider_service.provider = provider
         provider_service.close_provider(provider,
                                         ProviderError.anpaError())
         provider = self._get_provider(provider_name)
         self.assertTrue(provider.get('is_closed'))
Exemplo n.º 6
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service("vocabularies").find_one(req=None, _id="categories")
        if anpa_categories:
            for anpa_category in anpa_categories["items"]:
                if (
                    anpa_category["is_active"] is True
                    and item["anpa-category"]["qcode"].lower() == anpa_category["value"].lower()
                ):
                    item["anpa-category"] = {"qcode": item["anpa-category"]["qcode"], "name": anpa_category["name"]}
                    break
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 7
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service('vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for item_category in item['anpa_category']:
                for anpa_category in anpa_categories['items']:
                    if anpa_category['is_active'] is True \
                            and item_category['qcode'].lower() == anpa_category['qcode'].lower():
                        item_category['name'] = anpa_category['name']
                        # make the case of the qcode match what we hold in our dictionary
                        item_category['qcode'] = anpa_category['qcode']
                        break
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 8
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service('vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for item_category in item['anpa_category']:
                for anpa_category in anpa_categories['items']:
                    if anpa_category['is_active'] is True \
                            and item_category['qcode'].lower() == anpa_category['qcode'].lower():
                        item_category['name'] = anpa_category['name']
                        # make the case of the qcode match what we hold in our dictionary
                        item_category['qcode'] = anpa_category['qcode']
                        break
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 9
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service(
            'vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for anpa_category in anpa_categories['items']:
                if anpa_category['is_active'] is True \
                        and item['anpa-category']['qcode'].lower() == anpa_category['value'].lower():
                    item['anpa-category'] = {
                        'qcode': item['anpa-category']['qcode'],
                        'name': anpa_category['name']
                    }
                    break
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 10
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service('vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for item_category in item['anpa_category']:
                mapped_category = [c for c in anpa_categories['items'] if
                                   c['is_active'] is True and item_category['qcode'].lower() == c['qcode'].lower()]
                # if the category is not known to the system remove it from the item
                if len(mapped_category) == 0:
                    item['anpa_category'].remove(item_category)
                else:
                    item_category['name'] = mapped_category[0]['name']
                    # make the case of the qcode match what we hold in our dictionary
                    item_category['qcode'] = mapped_category[0]['qcode']
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 11
0
 def test_raise_anpaError(self):
     with assert_raises(ProviderError) as error_context:
         try:
             ex = Exception("Testing anpaError")
             raise ex
         except Exception:
             raise ProviderError.anpaError(ex, self.provider)
     exception = error_context.exception
     self.assertTrue(exception.code == 2005)
     self.assertTrue(exception.message == "Anpa category error")
     self.assertIsNotNone(exception.system_exception)
     self.assertEqual(exception.system_exception.args[0], "Testing anpaError")
     self.assertEqual(len(self.mock_logger_handler.messages['error']), 1)
     self.assertEqual(self.mock_logger_handler.messages['error'][0],
                      "ProviderError Error 2005 - Anpa category error: "
                      "Testing anpaError on channel TestProvider")
Exemplo n.º 12
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service('vocabularies').find_one(req=None, _id='categories')
        if anpa_categories:
            for item_category in item['anpa_category']:
                mapped_category = [c for c in anpa_categories['items'] if
                                   c['is_active'] is True and item_category['qcode'].lower() == c['qcode'].lower()]
                # if the category is not known to the system remove it from the item
                if len(mapped_category) == 0:
                    item['anpa_category'].remove(item_category)
                else:
                    item_category['name'] = mapped_category[0]['name']
                    # make the case of the qcode match what we hold in our dictionary
                    item_category['qcode'] = mapped_category[0]['qcode']
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 13
0
 def test_raise_anpaError(self):
     with assert_raises(ProviderError) as error_context:
         try:
             ex = Exception("Testing anpaError")
             raise ex
         except Exception:
             raise ProviderError.anpaError(ex, self.provider)
     exception = error_context.exception
     self.assertTrue(exception.code == 2005)
     self.assertTrue(exception.message == "Anpa category error")
     self.assertIsNotNone(exception.system_exception)
     self.assertEqual(exception.system_exception.args[0], "Testing anpaError")
     self.assertEqual(len(self.mock_logger_handler.messages['error']), 1)
     self.assertEqual(self.mock_logger_handler.messages['error'][0],
                      "ProviderError Error 2005 - Anpa category error: "
                      "Testing anpaError on channel TestProvider")
Exemplo n.º 14
0
def process_anpa_category(item, provider):
    try:
        anpa_categories = superdesk.get_resource_service("vocabularies").find_one(req=None, _id="categories")
        if anpa_categories:
            for item_category in item["anpa_category"]:
                mapped_category = [
                    c
                    for c in anpa_categories["items"]
                    if c["is_active"] is True and item_category["qcode"].lower() == c["qcode"].lower()
                ]
                # if the category is not known to the system remove it from the item
                if len(mapped_category) == 0:
                    item["anpa_category"].remove(item_category)
                else:
                    item_category["name"] = mapped_category[0]["name"]
                    # make the case of the qcode match what we hold in our dictionary
                    item_category["qcode"] = mapped_category[0]["qcode"]
                    item_category["scheme"] = "categories"
    except Exception as ex:
        raise ProviderError.anpaError(ex, provider)
Exemplo n.º 15
0
 def mock_update(provider):
     raise ProviderError.anpaError()
Exemplo n.º 16
0
from superdesk.errors import SuperdeskApiError, ProviderError
from superdesk.io import register_feeding_service, registered_feeding_services
from .tests import setup_providers, teardown_providers
from superdesk.io.feeding_services import FeedingService
from superdesk.io.commands.remove_expired_content import get_expired_items, RemoveExpiredContent
from superdesk.celery_task_utils import mark_task_as_not_running, is_task_running
from test_factory import SuperdeskTestCase


class TestProviderService(FeedingService):

    def _update(self, provider):
        return []


register_feeding_service('test', TestProviderService(), [ProviderError.anpaError(None, None).get_error_description()])


class CeleryTaskRaceTest(SuperdeskTestCase):

    def test_the_second_update_fails_if_already_running(self):
        provider = {'_id': 'abc', 'name': 'test provider', 'update_schedule': {'minutes': 1}}
        removed = mark_task_as_not_running(provider['name'], provider['_id'])
        self.assertFalse(removed)

        failed_to_mark_as_running = is_task_running(provider['name'], provider['_id'], {'minutes': 1})
        self.assertFalse(failed_to_mark_as_running, 'Failed to mark ingest update as running')

        failed_to_mark_as_running = is_task_running(provider['name'], provider['_id'], {'minutes': 1})
        self.assertTrue(failed_to_mark_as_running, 'Ingest update marked as running, possible race condition')
Exemplo n.º 17
0
from superdesk.errors import SuperdeskApiError, ProviderError
from superdesk.io import register_feeding_service, registered_feeding_services
from .tests import setup_providers, teardown_providers
from superdesk.io.feeding_services import FeedingService
from superdesk.io.commands.remove_expired_content import get_expired_items, RemoveExpiredContent
from superdesk.celery_task_utils import mark_task_as_not_running, is_task_running
from test_factory import SuperdeskTestCase


class TestProviderService(FeedingService):

    def _update(self, provider):
        return []


register_feeding_service('test', TestProviderService(), [ProviderError.anpaError(None, None).get_error_description()])


class CeleryTaskRaceTest(SuperdeskTestCase):

    def test_the_second_update_fails_if_already_running(self):
        provider = {'_id': 'abc', 'name': 'test provider', 'update_schedule': {'minutes': 1}}
        removed = mark_task_as_not_running(provider['name'], provider['_id'])
        self.assertFalse(removed)

        failed_to_mark_as_running = is_task_running(provider['name'], provider['_id'], {'minutes': 1})
        self.assertFalse(failed_to_mark_as_running, 'Failed to mark ingest update as running')

        failed_to_mark_as_running = is_task_running(provider['name'], provider['_id'], {'minutes': 1})
        self.assertTrue(failed_to_mark_as_running, 'Ingest update marked as running, possible race condition')
 def mock_update(provider, update):
     raise ProviderError.anpaError()
Exemplo n.º 19
0
from superdesk.io import register_feeding_service, registered_feeding_services
from .tests import setup_providers, teardown_providers
from superdesk.io.feeding_services import FeedingService
from superdesk.io.commands.remove_expired_content import get_expired_items, RemoveExpiredContent
from superdesk.celery_task_utils import mark_task_as_not_running, is_task_running
from test_factory import SuperdeskTestCase


class TestProviderService(FeedingService):
    def _update(self, provider):
        return []


register_feeding_service(
    'test', TestProviderService(),
    [ProviderError.anpaError(None, None).get_error_description()])


class CeleryTaskRaceTest(SuperdeskTestCase):
    def test_the_second_update_fails_if_already_running(self):
        provider = {
            '_id': 'abc',
            'name': 'test provider',
            'update_schedule': {
                'minutes': 1
            }
        }
        removed = mark_task_as_not_running(provider['name'], provider['_id'])
        self.assertFalse(removed)

        failed_to_mark_as_running = is_task_running(provider['name'],