[Zope3-checkins] SVN: Zope3/trunk/src/zope/app/authentication/browser/ Added a test to lock down searching with PAU's that have prefixes.

Garrett Smith garrett at mojave-corp.com
Fri Jul 29 19:01:36 EDT 2005


Log message for revision 37579:
  Added a test to lock down searching with PAU's that have prefixes.

Changed:
  U   Zope3/trunk/src/zope/app/authentication/browser/ftests.py
  A   Zope3/trunk/src/zope/app/authentication/browser/pau_prefix_and_searching.txt

-=-
Modified: Zope3/trunk/src/zope/app/authentication/browser/ftests.py
===================================================================
--- Zope3/trunk/src/zope/app/authentication/browser/ftests.py	2005-07-29 22:23:02 UTC (rev 37578)
+++ Zope3/trunk/src/zope/app/authentication/browser/ftests.py	2005-07-29 23:01:36 UTC (rev 37579)
@@ -34,7 +34,7 @@
 class FunkTest(functional.BrowserTestCase):
 
     def test_copypaste_duplicated_id_object(self):
-        
+
         root = self.getRootFolder()
 
         # Create a principal Folder
@@ -47,7 +47,7 @@
         directlyProvides(principal, IInternalPrincipal)
 
         pf['p1'] = principal
-        
+
         transaction.commit()
         self.assertEqual(len(pf.keys()), 1)
         #raise str([x for x in pf.keys()])
@@ -86,7 +86,7 @@
         directlyProvides(principal, IInternalPrincipal)
 
         pf['p1'] = principal
-        
+
         transaction.commit()
         self.assertEqual(len(pf.keys()), 1)
         #raise str([x for x in pf.keys()])
@@ -110,11 +110,12 @@
         else:
             # test failed !
             self.asserEqual(1, 0)
-            
+
 def test_suite():
     return unittest.TestSuite((
         functional.FunctionalDocFileSuite('principalfolder.txt'),
         functional.FunctionalDocFileSuite('groupfolder.txt'),
+        functional.FunctionalDocFileSuite('pau_prefix_and_searching.txt'),
         functional.FunctionalDocFileSuite(
             'group_searching_with_empty_string.txt'),
         functional.FunctionalDocFileSuite('special-groups.txt'),

Added: Zope3/trunk/src/zope/app/authentication/browser/pau_prefix_and_searching.txt
===================================================================
--- Zope3/trunk/src/zope/app/authentication/browser/pau_prefix_and_searching.txt	2005-07-29 22:23:02 UTC (rev 37578)
+++ Zope3/trunk/src/zope/app/authentication/browser/pau_prefix_and_searching.txt	2005-07-29 23:01:36 UTC (rev 37579)
@@ -0,0 +1,332 @@
+================================
+Using a PAU Prefix and Searching
+================================
+
+This test confirms that both principals and groups can be searched for in
+PAUs that have prefixes.
+
+First we'll create a PAU with a prefix of 'pau1_' and and register:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/+/AddPluggableAuthentication.html%3D HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 372
+  ... Content-Type: multipart/form-data; boundary=---------------------------318183180122653
+  ...
+  ... -----------------------------318183180122653
+  ... Content-Disposition: form-data; name="field.prefix"
+  ...
+  ... pau1_
+  ... -----------------------------318183180122653
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------318183180122653
+  ... Content-Disposition: form-data; name="add_input_name"
+  ...
+  ... PAU1
+  ... -----------------------------318183180122653--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/addRegistration.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 591
+  ... Content-Type: multipart/form-data; boundary=---------------------------516441125097
+  ...
+  ... -----------------------------516441125097
+  ... Content-Disposition: form-data; name="field.status"
+  ...
+  ... Active
+  ... -----------------------------516441125097
+  ... Content-Disposition: form-data; name="field.status-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------516441125097
+  ... Content-Disposition: form-data; name="field.permission"
+  ...
+  ...
+  ... -----------------------------516441125097
+  ... Content-Disposition: form-data; name="field.permission-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------516441125097
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------516441125097--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+Next we'll create and register a principal folder:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/+/AddPrincipalFolder.html%3D HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 374
+  ... Content-Type: multipart/form-data; boundary=---------------------------266241536215161
+  ...
+  ... -----------------------------266241536215161
+  ... Content-Disposition: form-data; name="field.prefix"
+  ...
+  ... users_
+  ... -----------------------------266241536215161
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------266241536215161
+  ... Content-Disposition: form-data; name="add_input_name"
+  ...
+  ... Users
+  ... -----------------------------266241536215161--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/Users/addRegistration.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 701
+  ... Content-Type: multipart/form-data; boundary=---------------------------1293260033248
+  ...
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="field.name"
+  ...
+  ... Users
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="field.status"
+  ...
+  ... Active
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="field.status-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="field.permission"
+  ...
+  ...
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="field.permission-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------1293260033248
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------1293260033248--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+and add a principal that we'll later search for:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/Users/+/AddPrincipalInformation.html%3D HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 686
+  ... Content-Type: multipart/form-data; boundary=---------------------------300171485226567
+  ...
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="field.login"
+  ...
+  ... bob
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="field.password"
+  ...
+  ... bob
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="field.title"
+  ...
+  ... Bob
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="field.description"
+  ...
+  ...
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------300171485226567
+  ... Content-Disposition: form-data; name="add_input_name"
+  ...
+  ...
+  ... -----------------------------300171485226567--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+Next, we'll add and register a group folder:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/+/AddGroupFolder.html%3D HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 372
+  ... Content-Type: multipart/form-data; boundary=---------------------------17420126702455
+  ...
+  ... -----------------------------17420126702455
+  ... Content-Disposition: form-data; name="field.prefix"
+  ...
+  ... groups_
+  ... -----------------------------17420126702455
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------17420126702455
+  ... Content-Disposition: form-data; name="add_input_name"
+  ...
+  ... Groups
+  ... -----------------------------17420126702455--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/Groups/addRegistration.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 709
+  ... Content-Type: multipart/form-data; boundary=---------------------------27244279644818
+  ...
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="field.name"
+  ...
+  ... Groups
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="field.status"
+  ...
+  ... Active
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="field.status-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="field.permission"
+  ...
+  ...
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="field.permission-empty-marker"
+  ...
+  ... 1
+  ... -----------------------------27244279644818
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------27244279644818--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+and add a group to search for:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/Groups/+/AddGroupInformation.html%3D HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 485
+  ... Content-Type: multipart/form-data; boundary=---------------------------323081358415654
+  ...
+  ... -----------------------------323081358415654
+  ... Content-Disposition: form-data; name="field.title"
+  ...
+  ... Nice People
+  ... -----------------------------323081358415654
+  ... Content-Disposition: form-data; name="field.description"
+  ...
+  ...
+  ... -----------------------------323081358415654
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Add
+  ... -----------------------------323081358415654
+  ... Content-Disposition: form-data; name="add_input_name"
+  ...
+  ... nice
+  ... -----------------------------323081358415654--
+  ... """)
+  HTTP/1.1 303 See Other
+  ...
+
+Since we're only searching in this test, we won't bother to add anyone to the
+group.
+
+Before we search, we need to register the two authenticator plugins with the
+PAU:
+
+  >>> print http(r"""
+  ... POST /++etc++site/default/PAU1/@@configure.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 888
+  ... Content-Type: multipart/form-data; boundary=---------------------------610310492754
+  ...
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.credentialsPlugins-empty-marker"
+  ...
+  ...
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.authenticatorPlugins.to"
+  ...
+  ... Groups
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.authenticatorPlugins.to"
+  ...
+  ... Users
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.authenticatorPlugins-empty-marker"
+  ...
+  ...
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
+  ...
+  ... Change
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.authenticatorPlugins"
+  ...
+  ... Groups
+  ... -----------------------------610310492754
+  ... Content-Disposition: form-data; name="field.authenticatorPlugins"
+  ...
+  ... Users
+  ... -----------------------------610310492754--
+  ... """)
+  HTTP/1.1 200 Ok
+  ...
+
+Now we'll use the 'grant' interface of the root folder to search for all of
+the available groups:
+
+  >>> print http(r"""
+  ... POST /@@grant.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 191
+  ... Content-Type: application/x-www-form-urlencoded
+  ... 
+  ... field.principal.displayed=y&field.principal.MC5Hcm91cHM_.field.search=&field.principal.MC5Hcm91cHM_.search=Search&field.principal.MC5Vc2Vycw__.field.search=&field.principal.MQ__.searchstring=""")
+  HTTP/1.1 200 Ok
+  ...
+  <select name="field.principal.MC5Hcm91cHM_.selection">
+  <option value="cGF1MV9ncm91cHNfbmljZQ__">Nice People</option>
+  </select>
+  ...
+
+Note in the results that the dropdown box (i.e. the select element) has the
+single group 'Nice People' that we added earlier.
+
+Next, we'll use the same 'grant' interface to search for all of the available
+principals:
+
+  >>> print http(r"""
+  ... POST /@@grant.html HTTP/1.1
+  ... Authorization: Basic bWdyOm1ncnB3
+  ... Content-Length: 255
+  ... Content-Type: application/x-www-form-urlencoded
+  ... 
+  ... field.principal.displayed=y&field.principal.MC5Hcm91cHM_.field.search=&field.principal.MC5Hcm91cHM_.selection=cGF1MV9ncm91cHNfbmljZQ__&field.principal.MC5Vc2Vycw__.field.search=&field.principal.MC5Vc2Vycw__.search=Search&field.principal.MQ__.searchstring=""")
+  HTTP/1.1 200 Ok
+  ...
+  <select name="field.principal.MC5Vc2Vycw__.selection">
+  <option value="cGF1MV91c2Vyc18x">Bob</option>
+  </select>
+  ...
+
+Note here the dropdown contains Bob, the principal we added earlier.


Property changes on: Zope3/trunk/src/zope/app/authentication/browser/pau_prefix_and_searching.txt
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Zope3-Checkins mailing list