Files
enterprise-addons/whatsapp/tests/test_whatsapp_api.py
T

61 lines
2.4 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.whatsapp.tests.common import MockIncomingWhatsApp, WhatsAppCommon
from odoo.addons.whatsapp.tools.whatsapp_api import DEFAULT_ENDPOINT, WhatsAppApi
from odoo.tests import tagged
@tagged('wa_message')
class WhatsAppAPI(WhatsAppCommon, MockIncomingWhatsApp):
def test_receive_attachment_with_debug_requests(self):
"""Ensure attachment fetch requests are logged properly when debug logs are enabled."""
doc_id = 'test_doc_id'
doc_info_url = f'{DEFAULT_ENDPOINT}/{doc_id}'
doc_bin_url = 'https://doc.getyadoc.lan'
doc_bin_content = b'\x00\x01\x02Hello\x00World'
doc_info_content = {
"url": doc_bin_url,
"mime_type": "image/jpeg",
"sha256": "dummysha"
}
response_map = {
doc_info_url: {
'content': doc_info_content,
'content_type': 'application/json',
},
doc_bin_url: {
'content': doc_bin_content,
'content_type': 'application/octet-stream',
}
}
self.whatsapp_account.action_debug()
with self.mockWhatsappHTTPResponse(response_map):
response_val = WhatsAppApi(self.whatsapp_account)._get_whatsapp_document(doc_id)
self.assertEqual(response_val, doc_bin_content)
self.assertEqual(len(self._wa_http_requests), 2)
doc_info_log_message = (
"URL: https://graph.facebook.com/v23.0/test_doc_id\n"
"Status Code: 200\n"
f"Response Text: {self._wa_http_requests[0]['response'].content.decode()}"
)
doc_bin_response_repr = (
f"[Binary Content]\n"
f"Content-Type: application/octet-stream\n"
f"Size: {len(doc_bin_content)} bytes\n"
)
doc_bin_log_message = (
f"URL: {doc_bin_url}\n"
f"Status Code: 200\n"
f"Response Text: {doc_bin_response_repr}"
)
doc_bin_log, doc_info_log = self.env['ir.logging'].search([
('name', '=', 'WA Response'),
('path', 'like', f'whatsapp.account,id={self.whatsapp_account.id},name={self.whatsapp_account.name}'),
], limit=2)
self.assertEqual(doc_info_log.message, doc_info_log_message)
self.assertEqual(doc_bin_log.message, doc_bin_log_message)