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_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_extract_direct_unknown_ext(self, ): post = MockObjects.get_generic_mock_post() post.url = 'https://i.imgur.com/fb2yRj0.foo' ie = ImgurExtractor(post, MockObjects.get_blank_user()) ie.extract_direct_link() failed_post = ie.failed_extract_posts[0] self.assertTrue('Unrecognized extension' in failed_post.status)
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_album(self, img_mock): img_mock.get_album_images.return_value = [MockClientResponse(link=url) for url in self.url_extract_dict['ALBUM']] ie = ImgurExtractor(self.get_album_post(), MockObjects.get_blank_user()) ie.extract_album() self.assertTrue(self.check_img_album_output(ie.extracted_content)) self.assertTrue(len(ie.failed_extract_posts) == 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_extract_question(self): post = MockObjects.get_generic_mock_post() post.url = 'https://imgur.com/fb2yRj0.jpg?1' ie = ImgurExtractor(post, MockObjects.get_blank_user()) ie.extract_direct_link() content = ie.extracted_content[0] self.assertEqual('https://imgur.com/fb2yRj0.jpg', content.url)
def test_extract_album(self, img_mock): print(img_mock) img_mock.return_value = self.url_extract_dict['ALBUM'] ie = ImgurExtractor(self.get_album_post(), MockObjects.get_blank_user()) ie.extract_album() img_mock.assert_called_with('Bi63r') self.assertTrue(self.check_img_album_output(ie.extracted_content)) self.assertTrue(len(ie.failed_extract_posts) == 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_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_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_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_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_extract_single_base(self, img_mock): img_mock.get_image.return_value = MockClientResponse(link=self.url_extract_dict['SINGLE']) ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) ie.extract_single() content = ie.extracted_content[0] self.assertEqual(self.url_extract_dict['SINGLE'], content.url) self.assertEqual('Picture(s)', content.post_title) self.assertEqual('Pics', content.subreddit) self.assertEqual(1521473630, content.date_created) self.assertEqual('C:/Users/Gorgoth/Downloads/JohnEveryman/fb2yRj0.jpg', content.filename) self.assertTrue(len(ie.failed_extract_posts) == 0)
def test_extract_direct_gif_mislinked(self, img_mock): img_mock.get_image.return_value = MockClientResponse(link=self.make_gif_url(self.url_extract_dict['SINGLE']), animated=True) ie = ImgurExtractor(self.get_direct_post_mislinked_gif(), MockObjects.get_blank_user()) ie.extract_direct_link() content = ie.extracted_content[0] self.assertEqual('Picture(s)', content.post_title) self.assertEqual('Pics', content.subreddit) self.assertEqual('.mp4', content.file_ext) self.assertEqual(1521473630, content.date_created) self.assertEqual('C:/Users/Gorgoth/Downloads/JohnEveryman/fb2yRj0gif.mp4', content.filename) self.assertTrue(len(ie.failed_extract_posts) == 0)
def test_imgur_client_unknown_error_on_setup(self, img_mock, util_mock): img_mock.side_effect = RuntimeError() ie = ImgurExtractor(self.get_single_post(), MockObjects.get_blank_user()) failed_post = ie.failed_extract_posts[0] self.assertTrue('Failed to connect to imgur.com' in failed_post.status) self.assertTrue(len(ie.failed_extracts_to_save) > 0)
def test_extract_direct_gif(self): post = MockObjects.get_generic_mock_post() post.url = 'https://i.imgur.com/mOlfhY3.gif' ie = ImgurExtractor(post, MockObjects.get_blank_user()) ie.extract_direct_link() content = ie.extracted_content[0] self.assertEqual('https://i.imgur.com/mOlfhY3.mp4', content.url) self.assertEqual('Picture(s)', content.post_title) self.assertEqual('Pics', content.subreddit) self.assertEqual('.mp4', content.file_ext) self.assertEqual(1521473630, content.date_created) self.assertEqual('C:/Users/Gorgoth/Downloads/JohnEveryman/mOlfhY3.mp4', content.make_filename()) self.assertTrue(len(ie.failed_extract_posts) == 0)
def test_extract_single(self, img_mock): post = MockObjects.get_generic_mock_post() post.url = 'https://imgur.com/fb2yRj0' img_mock.return_value = 'https://i.imgur.com/fb2yRj0.jpg' ie = ImgurExtractor(post, MockObjects.get_blank_user()) ie.extract_single() content = ie.extracted_content[0] img_mock.assert_called_with('fb2yRj0') self.assertEqual(self.url_extract_dict['SINGLE'], content.url) self.assertEqual('Picture(s)', content.post_title) self.assertEqual('Pics', content.subreddit) self.assertEqual(1521473630, content.date_created) self.assertEqual('C:/Users/Gorgoth/Downloads/JohnEveryman/fb2yRj0.jpg', content.make_filename()) self.assertTrue(len(ie.failed_extract_posts) == 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_direct_mislinked_unknown_ext(self, img_mock): ie = ImgurExtractor(self.get_direct_post_mislinked_unknown_ext(), MockObjects.get_blank_user()) ie.extract_direct_link() failed_post = ie.failed_extract_posts[0] self.assertTrue('Unrecognized extension' in failed_post.status)
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()