Files
enterprise-addons/databases_auth/tests/test_project_project.py
T

51 lines
2.0 KiB
Python

from unittest.mock import patch
from odoo.tests import Like, tagged
from odoo.tests.common import users
from odoo.addons.databases.tests.test_project_project import TestProjectProject
@tagged('-at_install', 'post_install')
class TestDatabasesAuthConnect(TestProjectProject):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env['ir.config_parameter'].sudo().set_param('databases.saas_single_sign_on', str(True))
cls.database.database_name = 'anotherdb'
cls.database.database_api_login = 'someuser'
cls.database.database_api_key = 'key'
@users('[email protected]')
def test_action_database_connect_saas_sso_first_time(self):
action = self.database.with_user(self.env.user).action_database_connect()
self.assertEqual(action, {
'type': 'ir.actions.act_url',
'url': Like(
'https://accounts.odoo.com/oauth2/auth?'
'response_type=token&'
'client_id=...&'
'redirect_uri=...databases...auth...&'
'scope=userinfo&'
'state=...'
),
'target': 'new',
})
@users('[email protected]')
@patch('odoo.addons.databases.api.OdooDatabaseApi.set_user_oauth')
@patch('requests.sessions.Session.request')
def test_action_database_connect_saas_sso_already_set(self, mock_request, mock_odoo_database_api):
mock_request.return_value.status_code = 200
mock_request.return_value.json.return_value = 'the_database_uuid'
self.env.user.databases_sso_uid = '42'
action = self.database.with_user(self.env.user).action_database_connect()
mock_odoo_database_api.assert_called_once() # Ensure we try to setup a smooth connection for the user
mock_request.assert_called_once()
self.assertEqual(action, {
'type': 'ir.actions.act_url',
'url': 'https://www.odoo.com/my/databases/connect/the_database_uuid',
'target': 'new',
})