61 lines
2.4 KiB
Python
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)
|