Skip to content

Commit f3b0bcc

Browse files
committed
Get mock interface working better with Identity.UW.
1 parent 84b007b commit f3b0bcc

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

tests/test_mock.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ def flick_mock_flag(monkeypatch):
88

99

1010
def test_login_redirect():
11-
expected = ('mock-login?return_to=%2F&force_authn=False'
11+
expected = ('/mock-login?return_to=%2F&force_authn=False'
1212
'&idp=urn%3Amace%3Aincommon%3Awashington.edu')
1313
assert uw_saml2.login_redirect() == expected
1414

1515

1616
def test_process_response():
17-
post = {'idp': 'urn:mace:incommon:washington.edu', 'foo': 'bar'}
17+
post = {'idp': 'urn:mace:incommon:washington.edu',
18+
'remote_user': 'javerage@washington.edu', 'uwnetid': 'javerage'}
1819
expected = {'two_factor': False, **post}
1920
assert uw_saml2.process_response(post) == expected
2021

uw_saml2/mock.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import urllib.parse
2+
from .idp import uw, federated
3+
MOCK_LOGIN_URL = '/mock-login'
24

35

46
class SamlAuthenticator:
@@ -10,7 +12,7 @@ def __init__(self, request, old_settings, *args, **kwargs):
1012
def login(self, **kwargs):
1113
kwargs['idp'] = self.idp
1214
qs = urllib.parse.urlencode(kwargs)
13-
return f'mock-login?{qs}'
15+
return f'{MOCK_LOGIN_URL}?{qs}'
1416

1517
def process_response(self):
1618
idp = self.request['post_data'].get('idp')
@@ -20,8 +22,16 @@ def process_response(self):
2022

2123
def get_attributes(self):
2224
"""Just reflect what's posted right back."""
23-
items = self.request['post_data'].items()
24-
return dict((key, [value]) for key, value in items)
25+
post = self.request['post_data']
26+
remote_user = post.get('remote_user', '')
27+
attributes = {}
28+
if post.get('idp') == uw.UwIdp.entity_id:
29+
uwnetid = remote_user.split('@washington.edu')[0]
30+
attributes['uwnetid'] = [uwnetid]
31+
elif post.get('idp') == federated.CollegenetIdp.entity_id:
32+
attributes['collegenet_userid'] = [remote_user]
33+
attributes.update((key, [value]) for key, value in post.items())
34+
return attributes
2535

2636
def get_errors(self):
2737
return self.errors

0 commit comments

Comments
 (0)