mirror of
https://github.com/bringout/oca-ocb-mail.git
synced 2026-04-23 22:02:03 +02:00
116 lines
5.6 KiB
Python
116 lines
5.6 KiB
Python
from datetime import timedelta
|
|
|
|
from odoo.tests import new_test_user, tagged
|
|
from odoo.exceptions import AccessError, ValidationError
|
|
from odoo.addons.im_livechat.tests.common import TestImLivechatCommon
|
|
from odoo.addons.im_livechat.tests.test_get_operator import TestGetOperator
|
|
from odoo.fields import Command, Datetime
|
|
|
|
|
|
@tagged("-at_install", "post_install")
|
|
class TestImLivechatChannel(TestImLivechatCommon, TestGetOperator):
|
|
def test_user_cant_join_livechat_channel(self):
|
|
bob_user = new_test_user(self.env, "bob_user", groups="base.group_user")
|
|
with self.assertRaises(AccessError):
|
|
self.livechat_channel.with_user(bob_user).action_join()
|
|
|
|
def test_operator_join_leave_livechat_channel(self):
|
|
bob_operator = new_test_user(
|
|
self.env, "bob_user", groups="base.group_user,im_livechat.im_livechat_group_user"
|
|
)
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_join()
|
|
self.assertIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_quit()
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
|
|
def test_leave_livechat_channels_when_operator_access_revoked(self):
|
|
bob_operator = new_test_user(
|
|
self.env, "bob_user", groups="im_livechat.im_livechat_group_user"
|
|
)
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_join()
|
|
self.assertIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_operator_group = self.env.ref("im_livechat.im_livechat_group_user")
|
|
bob_operator.write({
|
|
"group_ids": [Command.unlink(livechat_operator_group.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
bob_operator.write({
|
|
"group_ids": [Command.link(livechat_operator_group.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
|
|
def test_leave_livechat_channels_when_manager_access_revoked(self):
|
|
bob_operator = new_test_user(
|
|
self.env, "bob_user", groups="im_livechat.im_livechat_group_manager"
|
|
)
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_join()
|
|
self.assertIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_manager_group = self.env.ref("im_livechat.im_livechat_group_manager")
|
|
bob_operator.write({
|
|
"group_ids": [Command.unlink(livechat_manager_group.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
bob_operator.write({
|
|
"group_ids": [Command.link(livechat_manager_group.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
|
|
def test_leave_livechat_channels_when_operator_removed_from_group(self):
|
|
bob_operator = new_test_user(
|
|
self.env, "bob_user", groups="im_livechat.im_livechat_group_user"
|
|
)
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_join()
|
|
self.assertIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_operator_group = self.env.ref("im_livechat.im_livechat_group_user")
|
|
livechat_operator_group.write({
|
|
"user_ids": [Command.unlink(bob_operator.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_operator_group.write({
|
|
"user_ids": [Command.link(bob_operator.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
|
|
def test_leave_livechat_channels_when_manager_removed_from_group(self):
|
|
bob_operator = new_test_user(
|
|
self.env, "bob_user", groups="im_livechat.im_livechat_group_manager"
|
|
)
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
self.livechat_channel.with_user(bob_operator).action_join()
|
|
self.assertIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_manager_group = self.env.ref("im_livechat.im_livechat_group_manager")
|
|
livechat_manager_group.write({
|
|
"user_ids": [Command.unlink(bob_operator.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
livechat_manager_group.write({
|
|
"user_ids": [Command.link(bob_operator.id)],
|
|
})
|
|
self.assertNotIn(bob_operator, self.livechat_channel.user_ids)
|
|
|
|
def test_review_link(self):
|
|
with self.assertRaises(ValidationError):
|
|
self.livechat_channel.review_link = "javascript:alert('hello')"
|
|
with self.assertRaises(ValidationError):
|
|
self.livechat_channel.review_link = "https://"
|
|
self.livechat_channel.review_link = "https://www.odoo.com"
|
|
self.assertEqual(self.livechat_channel.review_link, "https://www.odoo.com")
|
|
|
|
def test_ongoing_session_count(self):
|
|
self.authenticate(None, None)
|
|
john = self._create_operator("fr_FR")
|
|
livechat_channel = self.env["im_livechat.channel"].create(
|
|
{"name": "Livechat Channel", "user_ids": [john.id]},
|
|
)
|
|
data = self.make_jsonrpc_request(
|
|
"/im_livechat/get_session",
|
|
{"channel_id": livechat_channel.id},
|
|
)
|
|
channel = self.env["discuss.channel"].browse(data["channel_id"])
|
|
self.assertEqual(livechat_channel.ongoing_session_count, 1)
|
|
channel.livechat_end_dt = Datetime.now() - timedelta(minutes=2)
|
|
self.assertEqual(livechat_channel.ongoing_session_count, 0)
|