diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web/tests/test_image.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web/tests/test_image.py')
| -rw-r--r-- | addons/web/tests/test_image.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/addons/web/tests/test_image.py b/addons/web/tests/test_image.py new file mode 100644 index 00000000..161a0645 --- /dev/null +++ b/addons/web/tests/test_image.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import io +import base64 + +from PIL import Image + +from odoo.tests.common import HttpCase, tagged + + +@tagged('-at_install', 'post_install') +class TestImage(HttpCase): + def test_01_content_image_resize_placeholder(self): + """The goal of this test is to make sure the placeholder image is + resized appropriately depending on the given URL parameters.""" + + # CASE: resize placeholder, given size but original ratio is always kept + response = self.url_open('/web/image/0/200x150') + image = Image.open(io.BytesIO(response.content)) + self.assertEqual(image.size, (150, 150)) + + # CASE: resize placeholder to 128 + response = self.url_open('/web/image/fake/0/image_128') + image = Image.open(io.BytesIO(response.content)) + self.assertEqual(image.size, (128, 128)) + + # CASE: resize placeholder to 256 + response = self.url_open('/web/image/fake/0/image_256') + image = Image.open(io.BytesIO(response.content)) + self.assertEqual(image.size, (256, 256)) + + # CASE: resize placeholder to 1024 (but placeholder image is too small) + response = self.url_open('/web/image/fake/0/image_1024') + image = Image.open(io.BytesIO(response.content)) + self.assertEqual(image.size, (256, 256)) + + # CASE: no size found, use placeholder original size + response = self.url_open('/web/image/fake/0/image_no_size') + image = Image.open(io.BytesIO(response.content)) + self.assertEqual(image.size, (256, 256)) + + def test_02_content_image_Etag_304(self): + """This test makes sure that the 304 response is properly returned if the ETag is properly set""" + + attachment = self.env['ir.attachment'].create({ + 'datas': b"R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=", + 'name': 'testEtag.gif', + 'public': True, + 'mimetype': 'image/gif', + }) + response = self.url_open('/web/image/%s' % attachment.id, timeout=None) + self.assertEqual(response.status_code, 200) + self.assertEqual(base64.b64encode(response.content), attachment.datas) + + etag = response.headers.get('ETag') + + response2 = self.url_open('/web/image/%s' % attachment.id, headers={"If-None-Match": etag}) + self.assertEqual(response2.status_code, 304) + self.assertEqual(len(response2.content), 0) |
