Пример #1
0
    def test_extract_image(self):
        entry_data = MagicMock()
        entry_data.top_image.src = 'http://foo.com/bar/image.jpg'
        expected_url = 'tests/data/downloaded.jpg'

        if os.path.isfile(expected_url):
            os.remove(expected_url)

        # Mock response for downloading.
        image_data = open('tests/data/image.jpg', 'rb').read()
        mock_response = BytesIO(image_data)
        mock_response.headers = {
            'Accept-Ranges': 'bytes',
            'Last-Modified': 'Wed, 05 Sep 2013 08:53:26 GMT',
            'Content-Length': str(len(image_data))
        }
        mock_urlopen = self.create_patch('urllib.request.urlopen',
                                         return_value=mock_response)

        image_url = feed.extract_image(entry_data,
                                       filename='downloaded.jpg',
                                       save_dir='tests/data/')

        self.assertEqual(image_url, expected_url)
        self.assertTrue(os.path.isfile(expected_url))
        self.assertEqual(len(image_data), len(open(expected_url, 'rb').read()))
Пример #2
0
 def open(self, url, data=None):
     self.requested.append(url)
     w = int(re.search(r'width=(\d+)', url, re.IGNORECASE).group(1))
     h = int(re.search(r'height=(\d+)', url, re.IGNORECASE).group(1))
     format = re.search(r'format=image(/|%2F)(\w+)', url, re.IGNORECASE).group(2)
     transparent = re.search(r'transparent=(\w+)', url, re.IGNORECASE)
     transparent = True if transparent and transparent.group(1).lower() == 'true' else False
     result = BytesIO()
     create_debug_img((int(w), int(h)), transparent).save(result, format=format)
     result.seek(0)
     result.headers = {'Content-type': 'image/'+format}
     return result
Пример #3
0
 def open(self, url, data=None):
     self.requested.append(url)
     w = int(re.search(r"width=(\d+)", url, re.IGNORECASE).group(1))
     h = int(re.search(r"height=(\d+)", url, re.IGNORECASE).group(1))
     format = re.search(r"format=image(/|%2F)(\w+)", url, re.IGNORECASE).group(2)
     transparent = re.search(r"transparent=(\w+)", url, re.IGNORECASE)
     transparent = True if transparent and transparent.group(1).lower() == "true" else False
     result = BytesIO()
     create_debug_img((int(w), int(h)), transparent).save(result, format=format)
     result.seek(0)
     result.headers = {"Content-type": "image/" + format}
     return result
Пример #4
0
    def mock_response(self, partial=False):
        """
        Create a mock HTTP response to work with.

        Args:
            | partial (bool)  -- True = only the 'remaining' bytes are sent,
                                 False = all the bytes are sent.
        """
        if partial:
            # Start after the first 12 bytes.
            mock_response = BytesIO(self.data[12:])
        else:
            mock_response = BytesIO(self.data)
        mock_response.headers = {
            'Accept-Ranges': 'bytes',
            'Last-Modified': 'Wed, 05 Sep 2013 08:53:26 GMT',
            'Content-Length': str(self.content_length)
        }
        self.mock_urlopen.return_value = mock_response
        return mock_response
Пример #5
0
    def test_save_from_url(self):
        # Mock out S3/Boto.
        key = MagicMock()
        self.create_patch('argos.util.storage.S3Connection', return_value=MagicMock())
        self.create_patch('argos.util.storage.Key', return_value=key)

        # Mock response for downloading.
        image_data = open('tests/data/image.jpg', 'rb').read()
        mock_response = BytesIO(image_data)
        mock_response.headers = {
            'Accept-Ranges': 'bytes',
            'Last-Modified': 'Wed, 05 Sep 2013 08:53:26 GMT',
            'Content-Length': str(len(image_data))
        }
        mock_urlopen = self.create_patch('urllib.request.urlopen', return_value=mock_response)

        storage.save_from_url('http://someurl.com/image.jpg', 'downloaded.jpg')

        # Get the bytes data that the key was given.
        called_data = key.set_contents_from_file.call_args_list[0][0][0].getvalue()
        self.assertEqual(called_data, image_data)
        self.assertEqual(key.key, 'downloaded.jpg')
Пример #6
0
    def test_extract_image(self):
        entry_data = MagicMock()
        entry_data.top_image.src = 'http://foo.com/bar/image.jpg'
        expected_url = 'tests/data/downloaded.jpg'

        if os.path.isfile(expected_url):
            os.remove(expected_url)

        # Mock response for downloading.
        image_data = open('tests/data/image.jpg', 'rb').read()
        mock_response = BytesIO(image_data)
        mock_response.headers = {
            'Accept-Ranges': 'bytes',
            'Last-Modified': 'Wed, 05 Sep 2013 08:53:26 GMT',
            'Content-Length': str(len(image_data))
        }
        mock_urlopen = self.create_patch('urllib.request.urlopen', return_value=mock_response)

        image_url = feed.extract_image(entry_data, filename='downloaded.jpg', save_dir='tests/data/')

        self.assertEqual(image_url, expected_url)
        self.assertTrue(os.path.isfile(expected_url))
        self.assertEqual(len(image_data), len(open(expected_url, 'rb').read()))
Пример #7
0
 def open(self, url, data=None):
     self.requested.append(url)
     result = BytesIO(b'{}')
     result.seek(0)
     result.headers = {}
     return result