36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
from http import HTTPStatus
|
|
|
|
from odoo import http
|
|
from odoo.tests import tagged
|
|
from odoo.tests.common import HttpCase, new_test_user
|
|
|
|
|
|
@tagged("-at_install", "post_install")
|
|
class TestVoipController(HttpCase):
|
|
|
|
def test_recording_can_only_be_uploaded_by_owner_of_the_call(self):
|
|
rightful_record_owner = new_test_user(self.env, login="based VoIP user 😤")
|
|
call = self.env["voip.call"].create({
|
|
"phone_number": "0491 577 644",
|
|
"user_id": rightful_record_owner.id,
|
|
})
|
|
evil_uploader = new_test_user(self.env, login="evil uploader 👺")
|
|
|
|
self.authenticate(evil_uploader.login, evil_uploader.password)
|
|
response = self.url_open(
|
|
f"/voip/upload_recording/{call.id}",
|
|
data={"csrf_token": http.Request.csrf_token(self)},
|
|
files={"ufile": ("recording.ogg", b"OggS", "audio/ogg")},
|
|
method="POST",
|
|
)
|
|
self.assertEqual(response.status_code, HTTPStatus.FORBIDDEN)
|
|
|
|
self.authenticate(rightful_record_owner.login, rightful_record_owner.password)
|
|
response = self.url_open(
|
|
f"/voip/upload_recording/{call.id}",
|
|
data={"csrf_token": http.Request.csrf_token(self)},
|
|
files={"ufile": ("recording.ogg", b"OggS", "audio/ogg")},
|
|
method="POST",
|
|
)
|
|
self.assertEqual(response.status_code, HTTPStatus.OK)
|