srv = self.servers[idp]
try:
- results = self.get_form_data(page, "login_form", [])
+ results = self.get_form_data(page, "login_form", ["name", "value"])
action_url = results[0]
method = results[1]
+ names = results[2]
+ values = results[3]
if action_url is None:
raise Exception
except Exception: # pylint: disable=broad-except
referer = page.make_referer()
headers = {'referer': referer}
- payload = {'login_name': srv['user'],
- 'login_password': srv['pwd']}
+ payload = {}
+ for i in range(0, len(names)):
+ payload[names[i]] = values[i]
+
+ # replace known values
+ payload['login_name'] = srv['user']
+ payload['login_password'] = srv['pwd']
return [method, self.new_url(referer, action_url),
{'headers': headers, 'data': payload}]
page.expected_value('//div[@id="welcome"]/p/text()',
'Welcome %s!' % srv['user'])
- def add_sp_metadata(self, idp, sp):
+ def get_sp_metadata(self, idp, sp):
idpsrv = self.servers[idp]
idpuri = idpsrv['baseuri']
+
spuri = self.servers[sp]['baseuri']
+ return (idpuri, requests.get('%s/saml2/metadata' % spuri))
+
+ def add_sp_metadata(self, idp, sp):
+ idpsrv = self.servers[idp]
+ (idpuri, m) = self.get_sp_metadata(idp, sp)
url = '%s/%s/admin/providers/saml2/admin/new' % (idpuri, idp)
+ metafile = {'metafile': m.content}
headers = {'referer': url}
payload = {'name': sp}
- m = requests.get('%s/saml2/metadata' % spuri)
- metafile = {'metafile': m.content}
r = idpsrv['session'].post(url, headers=headers,
data=payload, files=metafile)
if r.status_code != 200: