diff --git a/auth_oidc/demo/local_keycloak.xml b/auth_oidc/demo/local_keycloak.xml
index 92588dc952..8ba8183e8b 100644
--- a/auth_oidc/demo/local_keycloak.xml
+++ b/auth_oidc/demo/local_keycloak.xml
@@ -22,4 +22,9 @@
token['name'] == 'test'
+
+
+
+ 'erp_manager' in token['groups']
+
diff --git a/auth_oidc/tests/test_auth_oidc_auth_code.py b/auth_oidc/tests/test_auth_oidc_auth_code.py
index fbfdf87e06..8115898cc5 100644
--- a/auth_oidc/tests/test_auth_oidc_auth_code.py
+++ b/auth_oidc/tests/test_auth_oidc_auth_code.py
@@ -14,6 +14,7 @@
import odoo
from odoo.exceptions import AccessDenied, ValidationError
+from odoo.fields import Command
from odoo.tests import common
from odoo.addons.website.tools import MockRequest as _MockRequest
@@ -149,6 +150,44 @@ def test_login(self):
self.assertEqual(token, "42")
self.assertEqual(login, user.login)
+ @responses.activate
+ def test_manager_login(self):
+ """Test that login works and assigns the user to a manager group"""
+ user = self._prepare_login_test_user()
+ self._prepare_login_test_responses(
+ id_token_body={"user_id": user.login, "groups": ["erp_manager"]}
+ )
+
+ params = {"state": json.dumps({})}
+ with MockRequest(self.env):
+ db, login, token = self.env["res.users"].auth_oauth(
+ self.provider_rec.id,
+ params,
+ )
+ self.assertTrue(user.has_group("base.group_erp_manager"))
+
+ @responses.activate
+ def test_ex_manager_login(self):
+ """Test that login works and de-assigns the user from a manager group"""
+ user = self._prepare_login_test_user()
+ # Make them a manager
+ user.write(
+ {"groups_id": [Command.link(self.env.ref("base.group_erp_manager").id)]}
+ )
+ self.assertTrue(user.has_group("base.group_erp_manager"))
+
+ self._prepare_login_test_responses(
+ id_token_body={"user_id": user.login, "groups": ["not_erp_manager"]}
+ )
+
+ params = {"state": json.dumps({})}
+ with MockRequest(self.env):
+ db, login, token = self.env["res.users"].auth_oauth(
+ self.provider_rec.id,
+ params,
+ )
+ self.assertFalse(user.has_group("base.group_erp_manager"))
+
@responses.activate
def test_login_without_kid(self):
"""Test that login works when ID Token has no kid in header"""