From 779e35a08e0d724ffacb7864e0cb490464bc892e Mon Sep 17 00:00:00 2001 From: Max Erenberg Date: Sat, 10 Sep 2022 15:53:14 -0400 Subject: [PATCH] fix shadowExpire deserialization --- README.md | 2 +- ceod/model/User.py | 5 +++-- tests/ceod/api/test_members.py | 7 +++---- tests/ceod/model/test_user.py | 1 - 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index be4b8d7..cbe61eb 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,7 @@ kinit # Make the request curl --negotiate -u : --service-name ceod --delegation always \ -d '{"uid":"test_1","cn":"Test One","given_name":"Test","sn":"One","program":"Math","terms":["s2021"]}' \ - -X POST https://phosphoric-acid:9987/api/members + -X POST https://phosphoric-acid.csclub.uwaterloo.ca:9987/api/members ``` ## Packaging diff --git a/ceod/model/User.py b/ceod/model/User.py index fda039b..1fc19a6 100644 --- a/ceod/model/User.py +++ b/ceod/model/User.py @@ -86,7 +86,6 @@ class User: 'is_club': self.is_club(), 'is_club_rep': self.is_club_rep, 'program': self.program or 'Unknown', - 'shadowExpire': self.shadowExpire, } if self.sn and self.given_name: data['sn'] = self.sn @@ -103,6 +102,8 @@ class User: data['mail_local_addresses'] = self.mail_local_addresses if get_forwarding_addresses: data['forwarding_addresses'] = self.get_forwarding_addresses() + if self.shadowExpire: + data['shadow_expire'] = self.shadowExpire return data def __repr__(self) -> str: @@ -169,7 +170,7 @@ class User: is_club_rep=attrs.get('isClubRep', [False])[0], is_club=('club' in attrs['objectClass']), is_member_or_club_rep=('member' in attrs['objectClass']), - shadowExpire=attrs.get('shadowExpire'), + shadowExpire=attrs.get('shadowExpire', [None])[0], ldap3_entry=entry, ) diff --git a/tests/ceod/api/test_members.py b/tests/ceod/api/test_members.py index 8417cc6..8998a6a 100644 --- a/tests/ceod/api/test_members.py +++ b/tests/ceod/api/test_members.py @@ -72,7 +72,6 @@ def test_api_create_user(cfg, create_user_resp, mock_mail_server): "mail_local_addresses": ["test1@csclub.internal"], "forwarding_addresses": ['test1@uwaterloo.internal'], "password": "krb5", - "shadowExpire": None, }}, ] assert data == expected @@ -285,14 +284,14 @@ def test_expire(client, new_user, term_attr, ldap_conn): assert (data == [uid]) == should_expire _, user = client.get(f'/api/members/{uid}') - assert user['shadowExpire'] is None + assert 'shadow_expire' not in user status, data = client.post('/api/members/expire') assert status == 200 assert (data == [uid]) == should_expire _, user = client.get(f'/api/members/{uid}') - assert (user['shadowExpire'] is not None) == should_expire + assert (user.get('shadow_expire') == 1) == should_expire if not should_expire: continue @@ -302,7 +301,7 @@ def test_expire(client, new_user, term_attr, ldap_conn): assert status == 200 _, user = client.get(f'/api/members/{uid}') - assert user['shadowExpire'] is None + assert 'shadow_expire' not in user reset_terms() diff --git a/tests/ceod/model/test_user.py b/tests/ceod/model/test_user.py index b06ec3c..38f6661 100644 --- a/tests/ceod/model/test_user.py +++ b/tests/ceod/model/test_user.py @@ -173,7 +173,6 @@ def test_user_to_dict(cfg): 'home_directory': user.home_directory, 'is_club': False, 'is_club_rep': False, - 'shadowExpire': None, } assert user.to_dict() == expected