summaryrefslogtreecommitdiffstats
path: root/tests/test_ipaserver/httptest.py
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-06-06 14:38:08 +0200
committerRob Crittenden <rcritten@redhat.com>2012-06-11 23:07:03 -0400
commitd1e695b5d0323167d37eee340718eb5e65138716 (patch)
treeeca31d880051605493df2f6f09cba6730c8f33f0 /tests/test_ipaserver/httptest.py
parent34a1dee93420805ba48fbe077b4e2a8cea351151 (diff)
downloadfreeipa-d1e695b5d0323167d37eee340718eb5e65138716.tar.gz
freeipa-d1e695b5d0323167d37eee340718eb5e65138716.tar.xz
freeipa-d1e695b5d0323167d37eee340718eb5e65138716.zip
Password change capability for form-based auth
IPA server web form-based authentication allows logins for users which for some reason cannot use Kerberos authentication. However, when a password for such users expires, they are unable change the password via web interface. This patch adds a new WSGI script attached to URL /ipa/session/change_password which can be accessed without authentication and which provides password change capability for web services. The actual password change in the script is processed by LDAP password change command. Password result is passed both in the resulting HTML page, but also in HTTP headers for easier parsing in web services: X-IPA-Pwchange-Result: {ok, invalid-password, policy-error, error} (optional) X-IPA-Pwchange-Policy-Error: $policy_error_text https://fedorahosted.org/freeipa/ticket/2276
Diffstat (limited to 'tests/test_ipaserver/httptest.py')
-rw-r--r--tests/test_ipaserver/httptest.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/test_ipaserver/httptest.py b/tests/test_ipaserver/httptest.py
new file mode 100644
index 000000000..7f1b5b136
--- /dev/null
+++ b/tests/test_ipaserver/httptest.py
@@ -0,0 +1,52 @@
+# Authors:
+# Martin Kosek <mkosek@redhat.com>
+#
+# Copyright (C) 2012 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+Base class for HTTP request tests
+"""
+
+import urllib
+import httplib
+
+from ipalib import api
+
+class Unauthorized_HTTP_test(object):
+ """
+ Base class for simple HTTP request tests executed against URI
+ with no required authorization
+ """
+ app_uri = ''
+ host = api.env.host
+ content_type = 'application/x-www-form-urlencoded'
+
+ def send_request(self, method='POST', params=None):
+ """
+ Send a request to HTTP server
+
+ :param key When not None, overrides default app_uri
+ """
+ if params is not None:
+ params = urllib.urlencode(params, True)
+ url = 'https://' + self.host + self.app_uri
+
+ headers = {'Content-Type' : self.content_type,
+ 'Referer' : url}
+
+ conn = httplib.HTTPSConnection(self.host)
+ conn.request(method, self.app_uri, params, headers)
+ return conn.getresponse()