def test_download_feed_invalid_date(self):
     feed_req_obj = Feed(FeedType.ITEM.value, FeedScope.BOOTSTRAP.value, '220', 'EBAY_US', 'Bearer v^1 ...',
                         download_location='../tests/test-data/', feed_date='2019-02-01')
     get_response = feed_req_obj.get()
     self.assertEquals(get_response.status_code, FAILURE_CODE)
     self.assertIsNotNone(get_response.message)
     self.assertIsNotNone(get_response.file_path, 'file_path is None in the response')
 def test_default_values(self):
     feed_req_obj = Feed(None, None, '220', 'EBAY_US', 'v^1 ...')
     self.assertEquals(feed_req_obj.feed_type, FeedType.ITEM.value)
     self.assertEquals(feed_req_obj.feed_scope, FeedScope.DAILY.value)
     self.assertTrue(feed_req_obj.token.startswith('Bearer'), 'Bearer is missing from token')
     self.assertEquals(feed_req_obj.feed_date, get_formatted_date(feed_req_obj.feed_type))
     self.assertEquals(feed_req_obj.environment, Environment.PRODUCTION.value)
     self.assertEquals(feed_req_obj.download_location, DEFAULT_DOWNLOAD_LOCATION)
     self.assertEquals(feed_req_obj.file_format, FileFormat.GZIP.value)
 def test_download_feed_daily_multiple_calls(self):
     feed_req_obj = Feed(FeedType.ITEM.value, FeedScope.BOOTSTRAP.value, self.test_category_2,
                         self.test_marketplace, self.test_token, download_location='../tests/test-data/')
     get_response = feed_req_obj.get()
     # store the file path for clean up
     self.file_paths.append(get_response.file_path)
     # assert the result
     self.assertEquals(get_response.status_code, SUCCESS_CODE)
     self.assertIsNotNone(get_response.message)
     self.assertIsNotNone(get_response.file_path, 'file has not been created')
     self.assertTrue(isfile(get_response.file_path), 'file_path is not pointing to a file. file_path: %s'
                     % get_response.file_path)
     # check the file size and name
     self.assertTrue(getsize(get_response.file_path) > PROD_CHUNK_SIZE, 'feed file is less than %s. file_path: %s'
                     % (PROD_CHUNK_SIZE, get_response.file_path))
     self.assertTrue(FeedPrefix.BOOTSTRAP.value in get_response.file_path,
                     'feed file name does not have %s in it. file_path: %s'
                     % (FeedPrefix.BOOTSTRAP.value, get_response.file_path))
     file_dir, file_name = split(abspath(get_response.file_path))
     self.assertEquals(abspath(feed_req_obj.download_location), file_dir)
 def test_download_feed_daily(self):
     test_date = get_formatted_date(FeedType.ITEM, -4)
     feed_req_obj = Feed(FeedType.ITEM.value, FeedScope.DAILY.value, self.test_category_1,
                         self.test_marketplace, self.test_token, download_location='../tests/test-data/',
                         feed_date=test_date)
     get_response = feed_req_obj.get()
     # store the file path for clean up
     self.file_paths.append(get_response.file_path)
     # assert the result
     self.assertEquals(get_response.status_code, SUCCESS_CODE)
     self.assertIsNotNone(get_response.message)
     self.assertIsNotNone(get_response.file_path, 'file_path is None')
     self.assertTrue(isfile(get_response.file_path), 'file_path is not pointing to a file. file_path: %s'
                     % get_response.file_path)
     # check the file size and name
     self.assertTrue(getsize(get_response.file_path) > 0, 'feed file is empty. file_path: %s'
                     % get_response.file_path)
     self.assertTrue(FeedPrefix.DAILY.value in get_response.file_path,
                     'feed file name does not have %s in it. file_path: %s' %
                     (FeedPrefix.DAILY.value, get_response.file_path))
     file_dir, file_name = split(abspath(get_response.file_path))
     self.assertEquals(abspath(feed_req_obj.download_location), file_dir)
 def __create_requests(self, token):
     if ConfigField.REQUESTS.value not in self.__config_json_obj:
         raise ConfigError('No \"%s\" field exists in the config file %s' %
                           (str(ConfigField.REQUESTS), self.file_path))
     for req in self.__config_json_obj[ConfigField.REQUESTS.value]:
         feed_obj = None
         feed_field = req.get(ConfigField.FEED_REQUEST.value)
         if feed_field:
             feed_obj = Feed(
                 feed_field.get(FeedField.TYPE.value),
                 feed_field.get(FeedField.SCOPE.value),
                 feed_field.get(FeedField.CATEGORY_ID.value),
                 feed_field.get(FeedField.MARKETPLACE_ID.value), token,
                 feed_field.get(FeedField.DATE.value),
                 feed_field.get(FeedField.ENVIRONMENT.value),
                 feed_field.get(FeedField.DOWNLOAD_LOCATION.value),
                 feed_field.get(FeedField.FILE_FORMAT.value))
         filter_request_obj = None
         filter_field = req.get(ConfigField.FILTER_REQUEST.value)
         if filter_field:
             filter_request_obj = FeedFilterRequest(
                 str(filter_field.get(FilterField.INPUT_FILE_PATH.value)),
                 filter_field.get(FilterField.ITEM_IDS.value),
                 filter_field.get(FilterField.LEAF_CATEGORY_IDS.value),
                 filter_field.get(FilterField.SELLER_NAMES.value),
                 filter_field.get(FilterField.GTINS.value),
                 filter_field.get(FilterField.EPIDS.value),
                 filter_field.get(FilterField.PRICE_LOWER_LIMIT.value),
                 filter_field.get(FilterField.PRICE_UPPER_LIMIT.value),
                 filter_field.get(
                     FilterField.ITEM_LOCATION_COUNTRIES.value),
                 filter_field.get(FilterField.INFERRED_EPIDS.value),
                 filter_field.get(FilterField.ANY_QUERY.value),
                 filter_field.get(FilterField.FILE_FORMAT.value))
         config_request_obj = ConfigRequest(feed_obj, filter_request_obj)
         self.requests.append(config_request_obj)
Exemplo n.º 6
0
start = time.time()
if args.filteronly:
    # create the filtered file
    feed_filter_obj = FeedFilterRequest(args.downloadlocation, args.itemf,
                                        args.lf, args.sellerf, args.gtinf,
                                        args.epidf, args.pricelf, args.priceuf,
                                        args.locf, args.iepidf, args.qf,
                                        args.format)
    filter_response = feed_filter_obj.filter()
    if filter_response.status_code != SUCCESS_CODE:
        print(filter_response.message)

else:
    # download the feed file if --filteronly option is not set
    feed_obj = Feed(FeedType.ITEM.value, args.scope, args.c1, args.mkt,
                    args.token, args.dt, args.env, args.downloadlocation,
                    args.format)
    get_response = feed_obj.get()
    if get_response.status_code != SUCCESS_CODE:
        logger.error(
            'Exception in downloading feed. Cannot proceed\nFile path: %s\n Error message: %s\n',
            get_response.file_path, get_response.message)
    else:
        # create the filtered file
        feed_filter_obj = FeedFilterRequest(get_response.file_path, args.itemf,
                                            args.lf, args.sellerf, args.gtinf,
                                            args.epidf, args.pricelf,
                                            args.priceuf, args.locf,
                                            args.iepidf, args.qf, args.format)
        filter_response = feed_filter_obj.filter()
        if filter_response.status_code != SUCCESS_CODE:
 def test_none_token(self):
     feed_req_obj = Feed(FeedType.ITEM.value, FeedScope.BOOTSTRAP.value, '220', 'EBAY_US', None)
     get_response = feed_req_obj.get()
     self.assertEquals(get_response.status_code, FAILURE_CODE)
     self.assertIsNotNone(get_response.message)
     self.assertIsNone(get_response.file_path, 'file_path is not None in the response')
from feed.feed_request import Feed

feed_obj = Feed(feed_type='item',
                feed_scope='ALL_ACTIVE',
                category_id='6000',
                marketplace_id='EBAY_US',
                token='none',
                environment='PRODUCTION')
feed_obj.get()