From 9d860e5eaec921dd8b2bf5686b1414332a24d423 Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Fri, 19 Mar 2021 16:48:59 +0100 Subject: [PATCH] CLI improvements --- e2e/cli_test.py | 32 +++++++++++++ gms-client/gms-cli/gms.properties | 2 +- gms-client/gms-cli/pom.xml | 5 ++ .../main/java/it/inaf/ia2/gms/cli/CLI.java | 48 ++++++++++++++++++- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 e2e/cli_test.py diff --git a/e2e/cli_test.py b/e2e/cli_test.py new file mode 100644 index 0000000..ddfe220 --- /dev/null +++ b/e2e/cli_test.py @@ -0,0 +1,32 @@ +import os + +base_cmd = "java -jar ~/code/ia2-gms/gms-client/gms-cli/target/gms-cli.jar --token-file ~/Downloads/token.txt --config-file ~/code/ia2-gms/gms-client/gms-cli/gms.properties " + +def exec(cmd): + result = os.popen(base_cmd + cmd).read() + print(result) + return result + +assert exec("create-group test false") == "Group created\n" +assert exec("create-group test.test2 true") == "Group created\n" +assert exec("list-groups test") == "test2\n" + +assert exec("add-member test.test2 2386") == "Member added\n" +assert exec("add-permission test.test2 2386 VIEW_MEMBERS") == "Permission added\n" +exec("get-user-permissions 2386") +assert exec("get-group-permissions test.test2") == "2386 VIEW_MEMBERS\n" +exec("get-member-email-addresses test.test2 VIEW_MEMBERS") + +exec("get-user-groups 2386") + +assert exec("set-permission test.test2 2386 ADMIN") == "Permission changed\n" +assert exec("get-group-permissions test.test2") == "2386 ADMIN\n" + +assert exec("delete-permission test.test2 2386") == "Permission removed\n" +assert exec("get-group-permissions test.test2") == "" + +exec("remove-member test.test2 2386") +exec("get-member-email-addresses test.test2 VIEW_MEMBERS") == "" + +exec("delete-group test.test2") +assert exec("list-groups test") == "" diff --git a/gms-client/gms-cli/gms.properties b/gms-client/gms-cli/gms.properties index b7f4928..52e6b83 100644 --- a/gms-client/gms-cli/gms.properties +++ b/gms-client/gms-cli/gms.properties @@ -1,4 +1,4 @@ -gms_url=http://localhost:8082/gms/ws/jwt +gms_url=http://localhost:8082/gms client_id=gms_cli client_secret=gms rap_url=http://localhost/rap-ia2 diff --git a/gms-client/gms-cli/pom.xml b/gms-client/gms-cli/pom.xml index 26e78d8..378db0b 100644 --- a/gms-client/gms-cli/pom.xml +++ b/gms-client/gms-cli/pom.xml @@ -20,6 +20,11 @@ <artifactId>gms-client</artifactId> <version>1.0-SNAPSHOT</version> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.7.5</version> + </dependency> </dependencies> <build> <finalName>gms-cli</finalName> diff --git a/gms-client/gms-cli/src/main/java/it/inaf/ia2/gms/cli/CLI.java b/gms-client/gms-cli/src/main/java/it/inaf/ia2/gms/cli/CLI.java index 87fa8be..b096b20 100644 --- a/gms-client/gms-cli/src/main/java/it/inaf/ia2/gms/cli/CLI.java +++ b/gms-client/gms-cli/src/main/java/it/inaf/ia2/gms/cli/CLI.java @@ -2,7 +2,9 @@ package it.inaf.ia2.gms.cli; import it.inaf.ia2.client.ClientException; import it.inaf.ia2.gms.client.GmsClient; +import it.inaf.ia2.gms.client.model.GroupPermission; import it.inaf.ia2.gms.client.model.Permission; +import it.inaf.ia2.gms.client.model.UserPermission; import it.inaf.ia2.rap.client.ClientCredentialsRapClient; import it.inaf.ia2.rap.client.RapClient; import it.inaf.ia2.rap.data.AccessTokenResponse; @@ -74,6 +76,10 @@ public class CLI { } argIndex++; } + + if (!commandParsed) { + displayUsage(); + } } private String getNextArg() { @@ -159,6 +165,16 @@ public class CLI { private void parseCommand() { switch (args[argIndex]) { + case "list-groups": { + String parent = ""; + if (args.length == argIndex + 2) { + parent = args[argIndex + 1]; + } + for (String group : client.listGroups(parent, false)) { + System.out.println(group); + } + break; + } case "create-group": boolean leaf = false; if (argIndex + 2 < args.length) { @@ -167,10 +183,31 @@ public class CLI { client.createGroup(args[argIndex + 1], leaf); System.out.println("Group created"); break; + case "get-group-permissions": { + String parent = ""; + if (args.length == argIndex + 2) { + parent = args[argIndex + 1]; + } + for (GroupPermission gp : client.getGroupPermissions(parent)) { + System.out.println(gp.getUserId() + " " + gp.getPermission()); + } + break; + } case "delete-group": - client.deleteGroup(args[argIndex + 1]); + client.deleteGroup(getNextArg()); System.out.println("Group deleted"); break; + case "get-user-groups": { + String userId = getNextArg(); + String parent = ""; + if (args.length == argIndex + 2) { + parent = args[argIndex + 1]; + } + for (String group : client.getUserGroups(userId, parent)) { + System.out.println(group); + } + break; + } case "add-member": if (argIndex + 2 >= args.length) { displayUsage(); @@ -185,6 +222,11 @@ public class CLI { client.removeMember(args[argIndex + 1], args[argIndex + 2]); System.out.println("Member removed"); break; + case "get-user-permissions": + for (UserPermission up : client.getUserPermissions(getNextArg())) { + System.out.println(up.getGroup() + " " + up.getPermission()); + } + break; case "set-permission": if (argIndex + 3 >= args.length) { displayUsage(); @@ -230,8 +272,12 @@ public class CLI { + " [--rap-url <url>]\n" + " [--client-id <id>]\n" + " [--client-secret <secret>]\n" + + " list-groups [<name1.name2.name3>]\n" + " create-group <name1.name2.name3> [<leaf>]\n" + " delete-group <name1.name2.name3>\n" + + " get-user-groups <user_id> [<name1.name2.name3>]\n" + + " get-group-permissions [<name1.name2.name3>]\n" + + " get-user-permissions <user_id>\n" + " add-member <name1.name2.name3> <user_id>\n" + " remove-member <name1.name2.name3> <user_id>\n" + " set-permission <name1.name2.name3> <user_id> <permission>\n" -- GitLab