Since [1] non-image documents uploaded in web editor were stored as received in base64 without being decoded. This led to downloading them as they were stored in base64. After this commit uploaded documents are base64-decoded before being stored. Steps to reproduce: - edit a web page - drop a "Text - Image" snippet - replace the image - upload a document (PDF, TXT...) - save page - download document => received document was base64-encoded [1]: https://github.com/odoo/odoo/commit/6b8752604898bf2b583b7f5334e35f6a1583595e task-2782269 closes odoo/odoo#86812 X-original-commit: b0218b8ff50c7cea2a018d20a62e63510bfdd01e Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.tools.json import scriptsafe as json_safe
|
|
|
|
import odoo.tests
|
|
from odoo.tests.common import HttpCase
|
|
|
|
|
|
@odoo.tests.tagged('-at_install', 'post_install')
|
|
class TestController(HttpCase):
|
|
def test_01_upload_document(self):
|
|
self.authenticate('admin', 'admin')
|
|
# Upload document.
|
|
response = self.url_open(
|
|
'/web_editor/attachment/add_data',
|
|
headers={'Content-Type': 'application/json'},
|
|
data=json_safe.dumps({'params': {
|
|
'name': 'test.txt',
|
|
'data': 'SGVsbG8gd29ybGQ=', # base64 Hello world
|
|
'is_image': False,
|
|
}})
|
|
).json()
|
|
self.assertFalse('error' in response, 'Upload failed: %s' % response.get('error', {}).get('message'))
|
|
attachment_id = response['result']['id']
|
|
checksum = response['result']['checksum']
|
|
# Download document and check content.
|
|
response = self.url_open(
|
|
'/web/content/%s?unique=%s&download=true' % (attachment_id, checksum)
|
|
)
|
|
self.assertEqual(200, response.status_code, 'Expect response')
|
|
self.assertEqual(b'Hello world', response.content, 'Expect raw content')
|