Ejemplo n.º 1
0
    def test_convert_png_data_url_to_binary_raises_if_prefix_is_missing(
            self) -> None:
        image_data_url = urllib.parse.quote(base64.b64encode(b'test123'))

        self.assertRaisesRegexp(  # type: ignore[no-untyped-call]
            Exception, 'The given string does not represent a PNG data URL.',
            lambda: utils.convert_png_data_url_to_binary(image_data_url))
Ejemplo n.º 2
0
    def test_convert_png_data_url_to_binary(self) -> None:
        image_data_url = '%s%s' % (utils.PNG_DATA_URL_PREFIX,
                                   urllib.parse.quote(
                                       base64.b64encode(b'test123')))

        self.assertEqual(utils.convert_png_data_url_to_binary(image_data_url),
                         b'test123')
Ejemplo n.º 3
0
    def get(self):
        """Handles GET requests."""
        # Retrieve user data.
        user_takeout_object = takeout_service.export_data_for_user(
            self.user_id)
        user_data = user_takeout_object.user_data
        user_images = user_takeout_object.user_images

        # Ensure that the exported data does not contain a user ID.
        user_data_json_string = json.dumps(user_data)
        if re.search(feconf.USER_ID_REGEX, user_data_json_string):
            logging.error(
                '[TAKEOUT] User ID found in the JSON generated for user %s'
                % self.user_id)
            user_data_json_string = (
                'There was an error while exporting ' +
                'data. Please contact %s to export your data.'
                % feconf.ADMIN_EMAIL_ADDRESS)
            user_images = []

        # Create zip file.
        temp_file = io.BytesIO()
        with zipfile.ZipFile(
            temp_file, mode='w', compression=zipfile.ZIP_DEFLATED
        ) as zfile:
            zfile.writestr('oppia_takeout_data.json', user_data_json_string)
            for image in user_images:
                decoded_png = utils.convert_png_data_url_to_binary(
                    image.b64_image_data)
                zfile.writestr('images/' + image.image_export_path, decoded_png)

        # Render file for download.
        self.render_downloadable_file(
            temp_file, 'oppia_takeout_data.zip', 'text/plain')
Ejemplo n.º 4
0
    def test_convert_png_data_url_to_binary(self) -> None:
        image_data_url = '%s%s' % (utils.PNG_DATA_URL_PREFIX,
                                   python_utils.url_quote(
                                       base64.b64encode(b'test123'))
                                   )  # type: ignore[no-untyped-call]

        self.assertEqual(utils.convert_png_data_url_to_binary(image_data_url),
                         b'test123')
Ejemplo n.º 5
0
 def test_convert_png_data_url_to_binary_with_incorrect_prefix(
         self) -> None:
     with self.assertRaisesRegexp(  # type: ignore[no-untyped-call]
             Exception,
             'The given string does not represent a PNG data URL'):
         utils.convert_png_data_url_to_binary('data:image/jpg;base64,')