chiark / gitweb /
Avoid play.py looping indefinitely.
[disorder] / tests / user.py
index 74f021296181e1d0e71fbb5c8ec7bfecbecf8c4b..ffc1fdca7340e329279b93075ea35d23672ec4a0 100755 (executable)
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 #
 # This file is part of DisOrder.
-# Copyright (C) 2007 Richard Kettlewell
+# Copyright (C) 2007, 2008 Richard Kettlewell
 #
 # 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
@@ -55,8 +55,15 @@ def test():
     users = c.users()
     assert dtest.lists_have_same_contents(users,
                                           ["fred", "root"])
+    print " creating the guest user"
+    dtest.command(["disorder",
+                   "--config", disorder._configfile, "--no-per-user-config",
+                   "--user", "root", "setup-guest"])
+    print " logging in as guest user"
+    gc = disorder.client(user="guest", password="")
+    gc.version()
     print " testing user registration"
-    cs = c.register("joe", "joepass", "joe@nowhere.invalid")
+    cs = gc.register("joe", "joepass", "joe@nowhere.invalid")
     print " confirmation string is %s" % cs
     print " checking unconfirmed user cannot log in"
     jc = disorder.client(user="joe", password="joepass")
@@ -67,10 +74,27 @@ def test():
     except disorder.operationError:
       pass                              # good
     print " confirming user"
-    c.confirm(cs)
+    gc = disorder.client(user="guest", password="")
+    gc.confirm(cs)
     print " checking confirmed user can log in"
     jc = disorder.client(user="joe", password="joepass")
     jc.version()
+    print " checking new user's email address"
+    assert c.userinfo("joe", "email") == "joe@nowhere.invalid"
+    print " checking can change user email address"
+    c.edituser("joe", "email", "joe@another.invalid")
+    assert c.userinfo("joe", "email") == "joe@another.invalid"
+    print " checking bad email address rejected"
+    try:
+      c.edituser("joe", "email", "invalid")
+      print "*** should not be able to set invalid email address ***"
+      assert False
+    except disorder.operationError:
+      pass                              # good
+    assert c.userinfo("joe", "email") == "joe@another.invalid"
+    print " checking removal of email address"
+    c.edituser("joe", "email", "")
+    assert c.userinfo("joe", "email") == None
 
 if __name__ == '__main__':
     dtest.run()