Handle the presence of additional form fields
authorSimo Sorce <simo@redhat.com>
Fri, 19 Sep 2014 19:08:52 +0000 (15:08 -0400)
committerPatrick Uiterwijk <puiterwijk@redhat.com>
Wed, 24 Sep 2014 18:29:12 +0000 (20:29 +0200)
For exampe hidden fields which must be preserved and POSTed back to the
action url.

Signed-off-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
tests/helpers/http.py

index 833637f..1d026a7 100755 (executable)
@@ -129,9 +129,11 @@ class HttpSessions(object):
         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
@@ -139,8 +141,13 @@ class HttpSessions(object):
 
         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}]