--- moin-1.6.orig/MoinMoin/_tests/test_user.py	2007-12-01 02:09:09.000000000 +0200
+++ moin-1.6/MoinMoin/_tests/test_user.py	2007-12-04 20:03:37.000000000 +0200
@@ -187,9 +187,117 @@
             self.user = None
             py.test.skip("Can't create test user")
 
+class TestChangeName(object):
+    
+    def setup_method(self, method):
+        # Save original user and cookie
+        self.saved_cookie = self.request.saved_cookie
+        self.saved_user = self.request.user
+
+        # Create anon user for the tests
+        self.request.saved_cookie = ''
+        self.request.user = user.User(self.request)
+
+        # Prevent user list caching - we create and delete users too fast for that.
+        filesys.dcdisable()
+        self.user = None
+        
+    def teardown_method(self, method):
+        """ Run after each test
 
-class TestGroupName(object):
+        Remove user and reset user listing cache.
+        """
+        # Remove user file and user
+        if self.user is not None:
+            try:
+                path = self.user._User__filename()
+                os.remove(path)
+            except OSError:
+                pass
+            del self.user
+
+        # Restore original user
+        self.request.saved_cookie = self.saved_cookie
+        self.request.user = self.saved_user
+
+        # Remove user name to id cache, or next test will fail
+        caching.CacheEntry(self.request, 'user', 'name2id', scope='wiki').remove()
+        try:
+            del self.request.cfg.cache.name2id
+        except:
+            pass
+
+        # Prevent user list caching - we create and delete users too fast for that.
+        filesys.dcdisable
+
+    def testChangeUsername(self):
+        """ Attempt to create a user, then rename it.
+        If we can still login with the old username, the test has failed.
+        """
+
+        # Create test user
+        name = u'__Non Existent User Name__'
+        password = name
+        self.createUser(name, password)
+
+        # Perform login with username
+        oldUser = user.User(self.request, name=name, password=password)
+        
+        # Change username from name to name + xxx
+        self.changeUser(name, password, name + "xxx")
+        
+        # See if we can still login with the old username
+        newUser = user.User(self.request, name=name, password=password)
+        assert not newUser.valid
+
+    def createUser(self, name, password, charset='utf-8'):
+        """ helper to create test user
+
+        charset is used to create user with pre 1.3 password hash
+        """
+        # Hack self.request form to contain the password
+        self.request.form['password'] = [password]
 
+        # Create user
+        self.user = user.User(self.request)
+        self.user.name = name
+        self.user.enc_password = user.encodePassword(password, charset=charset)
+
+        # Validate that we are not modifying existing user data file!
+        if self.user.exists():
+            self.user = None
+            py.test.skip("Test user exists, will not override existing user data file!")
+
+        # Save test user
+        self.user.save()
+
+        # Validate user creation
+        if not self.user.exists():
+            self.user = None
+            py.test.skip("Can't create test user")
+    
+    def changeUser(self, name, password, newname):
+        """ helper to change a username """
+        self.user = user.User(self.request, name=name, password=password)
+        self.user.name = newname
+        self.user.save()
+        cache = caching.CacheEntry(self.request, 'user', 'name2id', scope='wiki', use_pickle=True)
+        cache.remove()
+    
+class TestGroupName(object):
+    def setup_method(self, method):
+        # Save original user and cookie
+        self.saved_cookie = self.request.saved_cookie
+        self.saved_user = self.request.user
+
+        # Create anon user for the tests
+        self.request.saved_cookie = ''
+        self.request.user = user.User(self.request)
+
+        # Prevent user list caching - we create and delete users too fast for that.
+        filesys.dcdisable()
+        self.user = None
+        
     def setUp(self):
         self.config = self.TestConfig(page_group_regex=r'.+Group')
 
