Test admin account restrictions
authorJeremy Stanley <fungi@yuggoth.org>
Mon, 28 Dec 2015 13:13:09 +0000 (13:13 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Mon, 28 Dec 2015 13:13:09 +0000 (13:13 +0000)
Add an admin session in the functional tests, and confirm that an
admin can see a restricted function in the help output while a
non-admin cannot see it. Further confirm that an admin command
behaves as an unknown command when a non-admin attempts to call it.

bin/test

index 9c57829..6311dc5 100755 (executable)
--- a/bin/test
+++ b/bin/test
@@ -124,15 +124,6 @@ test_actor_disappears = (
     (0, "You suddenly wonder where .* went\.", ""),
 )
 
-test_account0_teardown = (
-    (0, "> ", "quit"),
-    (0, "What would you like to do?", "d"),
-    (0, "Whom would you like to delete?", ""),
-    (0, "What would you like to do?", "p"),
-    (0, "permanently delete your account?", "y"),
-    (0, "Disconnecting...", ""),
-)
-
 test_account1_teardown = (
     (1, "What would you like to do?", "d"),
     (1, "Whom would you like to delete?", ""),
@@ -141,6 +132,30 @@ test_account1_teardown = (
     (1, "Disconnecting...", ""),
 )
 
+test_admin_setup = (
+    (2, "Identify yourself:", "testadmin"),
+    (2, "Enter your choice:", "n"),
+    (2, "Enter a new password for \"testadmin\":", "Test789"),
+    (2, "Enter the same new password again:", "Test789"),
+    (2, "What would you like to do\?", "c"),
+    (2, "Pick a birth gender for your new avatar:", "m"),
+    (2, "Choose a name for him:", "1"),
+    (2, "What would you like to do?", "a"),
+    (2, "Whom would you like to awaken?", ""),
+)
+
+test_admin_restriction = (
+    (0, "> ", "help halt"),
+    (0, "That is not an available command\.", "halt"),
+    (0, '(not sure what "halt" means|Arglebargle, glop-glyf)', ""),
+)
+
+test_admin_help = (
+    (2, "> ", "help"),
+    (2, "halt.*Shut down the world\.", "help halt"),
+    (2, "This will save all active accounts", ""),
+)
+
 dialogue = (
     (test_account0_setup, "first account setup"),
     (test_account1_setup, "second account setup"),
@@ -152,12 +167,14 @@ dialogue = (
     (test_chat_mode, "chat mode"),
     (test_movement, "movement"),
     (test_actor_disappears, "actor spontaneous disappearance"),
-    (test_account0_teardown, "first account teardown"),
     (test_account1_teardown, "second account teardown"),
+    (test_admin_setup, "admin account setup"),
+    (test_admin_restriction, "restricted admin commands"),
+    (test_admin_help, "admin help"),
 )
 
-captures = ["", ""]
-lusers = [telnetlib.Telnet(), telnetlib.Telnet()]
+captures = ["", "", ""]
+lusers = [telnetlib.Telnet(), telnetlib.Telnet(), telnetlib.Telnet()]
 success = True
 start = time.time()
 for luser in lusers: