Skip to content

Commit

Permalink
Fix AttributeError: 'Authorization' object has no attribute 'log' (#660)
Browse files Browse the repository at this point in the history
  • Loading branch information
MetRonnie authored Jan 15, 2025
1 parent 94ff043 commit 693c897
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
1 change: 1 addition & 0 deletions changes.d/660.fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed crash when starting the UI Server if a user has invalid groups in their profile.
2 changes: 1 addition & 1 deletion cylc/uiserver/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ def set_auth(self) -> Authorization:
getpass.getuser(),
user_auth,
site_auth,
self.log,
log=self.log,
)

def initialize_templates(self):
Expand Down
6 changes: 3 additions & 3 deletions cylc/uiserver/authorise.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,12 @@ def __init__(
log,
):
self.owner_user_name: str = owner_user_name
self.owner_user_groups: List[str] = self._get_groups(
self.owner_user_name
)
self.log = log
self.owner_auth_conf: dict = owner_auth_conf
self.site_auth_config: dict = site_auth_conf
self.owner_user_groups: List[str] = self._get_groups(
self.owner_user_name
)
self.owner_dict = self.build_owner_site_auth_conf()

# lru_cache this method - see flake8-bugbear B019
Expand Down
20 changes: 20 additions & 0 deletions cylc/uiserver/tests/test_authorise.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import inspect
import logging
from types import SimpleNamespace
from unittest.mock import Mock, patch
Expand Down Expand Up @@ -476,3 +477,22 @@ def test_empty_list_in_config():
auth_obj = Authorization('me', {}, {'*': {'me': {'default': []}}}, LOG)
with pytest.raises(Exception, match='Error in site config'):
auth_obj.return_site_auth_defaults_for_access_user('me', ['x'])


def test_Authorization_logging(monkeypatch: pytest.MonkeyPatch):
"""Test logging doesn't fall over spectacularly during __init__()."""
# Patch all methods to call self.log:
for name, method in inspect.getmembers(
Authorization, predicate=inspect.isfunction
):
if (
not name.startswith('__') and
inspect.signature(method).parameters.get('self')
):
monkeypatch.setattr(
Authorization,
name,
lambda self, *a, **k: self.log.info('foo'),
)
# Test:
Authorization('brian', {}, {}, log=Mock())

0 comments on commit 693c897

Please sign in to comment.