Skip to content
Snippets Groups Projects
Commit 5e0ffa01 authored by Olivier Levillain's avatar Olivier Levillain
Browse files

New command: list.

For admin users, lists all users.
For other users, only list connected users.
parent 40284266
No related branches found
No related tags found
No related merge requests found
......@@ -55,6 +55,11 @@ class UserDB:
except Exception:
return None
def user_list(self):
result = list(self.users.keys())
result.sort()
return result
def load_userdb_from_content(content):
userdb = UserDB()
......
......@@ -45,5 +45,20 @@ class Server:
else:
return False, "You are not currently logged in"
elif command == "list":
if context.current_user:
logins = self.users.user_list()
result = []
for l in logins:
relevant_contexts = filter(lambda context: context.check_current_user(l), self.contexts)
connected = list(relevant_contexts) != []
if connected:
result.append("* %s" % l)
elif context.current_user['admin']:
result.append(" %s" % l)
return True, "\n".join(result)
else:
return False, "You are not currently logged in"
else:
return False, "Invalid command"
......@@ -74,7 +74,6 @@ def test_whoami():
# Invalid command
def test_invalid_command():
......@@ -85,3 +84,33 @@ def test_invalid_command():
result, answer = s.execute(context, "invalid")
assert result == False
assert answer == "Invalid command"
# List
def test_list_users_from_admin():
c = config.Config()
s = server.Server(c)
context = s.new_context()
result, answer = s.execute(context, "login admin admin")
result, answer = s.execute(context, "list")
assert result == True
assert answer == "* admin\n guest"
def test_list_users_from_guest():
c = config.Config()
s = server.Server(c)
context = s.new_context()
result, answer = s.execute(context, "list")
assert result == False
assert answer == "You are not currently logged in"
result, answer = s.execute(context, "login guest guest")
result, answer = s.execute(context, "list")
assert result == True
assert answer == "* guest"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment