def test_extract_content_assignment_direct(self, ex_mock): post = MockObjects.get_generic_mock_post() post.url = 'https://imgur.com/fb2yRj0.jpg' ie = ImgurExtractor(post, MockObjects.get_blank_user()) ie.extract_content() ex_mock.assert_called()
def test_extract_content_assignment_direct_mislinked( self, img_mock, ex_mock): ie = ImgurExtractor(self.get_direct_post_mislinked(), MockObjects.get_blank_user()) ie.extract_content() ex_mock.assert_called()
def test_imgur_does_not_exist_error(self, img_mock): img_mock.get_image.side_effect = ImgurClientError(status_code=404, error_message='error') ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Content does not exist' in failed_post.status) self.assertFalse(len(ie.failed_extracts_to_save) > 0)
def test_imgur_over_capacity_error(self, img_mock): img_mock.get_image.side_effect = ImgurClientError(status_code=500, error_message='Over capacity') ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('over capacity' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_failed_to_locate_general(self, img_mock): img_mock.get_image.side_effect = ImgurClientError(status_code=403, error_message='error') img_mock.credits = {'ClientRemaining': 900} ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Failed to locate content' in failed_post.status) self.assertFalse(len(ie.failed_extracts_to_save) > 0)
def test_imgur_no_credit_error(self, img_mock): img_mock.get_image.side_effect = ImgurClientError(status_code=403, error_message='error') img_mock.credits = {'ClientRemaining': 0} ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Not enough imgur credits to extract post' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_rate_limit_exceeded_credit_dict_is_null(self, img_mock): img_mock.get_image.side_effect = ImgurClientError(status_code=429, error_message='error') img_mock.credits = {'UserRemaining': None} ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('rate limit exceeded' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_does_not_exist_error(self, img_mock): img_mock.side_effect = ImgurError(status_code=404) extractor = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) extractor.extract_content() failed_post = extractor.failed_extract_posts[0] self.assertEqual("Content does not exist.", failed_post.status) self.assertFalse(len(extractor.failed_extracts_to_save) > 0)
def test_imgur_client_connection_error_unknown(self, img_mock): img_mock.side_effect = ImgurError(status_code=900) ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Unknown Imgur connection error' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_down_error(self, img_mock): img_mock.side_effect = ImgurError(status_code=500) ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Imgur is currently down' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_rate_limit_exceeded_error_no_remaining_credits(self, img_mock): TIME = 600000 img_mock.get_image.side_effect = ImgurClientError(status_code=429, error_message='error') img_mock.credits = {'UserRemaining': 0, 'UserReset': TIME} ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertTrue('Out of user credits' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0) self.assertTrue(ImgurUtils.credit_time_limit == TIME)
def test_imgur_failed_to_locate_403_error(self, img_mock): img_mock.side_effect = ImgurError(status_code=403) ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] print(failed_post.status) self.assertEqual('Forbidden', failed_post.status) self.assertEqual(0, len(ie.failed_extracts_to_save))
def test_imgur_rate_limit_exceeded_error(self, img_mock, credits_mock): img_mock.side_effect = ImgurError(status_code=429) credits_mock.return_value = 0 ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() failed_post = ie.failed_extract_posts[0] self.assertEqual('Out of user credits', failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_imgur_runtime_unknown_error(self, img_mock): img_mock.side_effect = RuntimeError() ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() self.assertEqual(1, len(ie.failed_extract_posts)) failed_post = ie.failed_extract_posts[0] print(failed_post.status) self.assertEqual('Failed to extract content', failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_multiple_imgur_rate_limit_exceeded_with_timeout_dict( self, img_mock): img_mock.get_image.side_effect = ImgurClientError( status_code=429, error_message='error') img_mock.credits = {'UserRemaining': None} increment = Const.TIMEOUT_INCREMENT ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() self.assertEqual(ExtractorUtils.time_limit_dict[type(ie).__name__], increment) increment += Const.TIMEOUT_INCREMENT ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() self.assertEqual(ExtractorUtils.time_limit_dict[type(ie).__name__], increment) increment += Const.TIMEOUT_INCREMENT ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() self.assertEqual(ExtractorUtils.time_limit_dict[type(ie).__name__], increment)
def test_extract_content_assignment_single(self, ex_mock): ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_content() ex_mock.assert_called()