Skip to content
Commits on Source (20)
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") == ""
gms_url=http://localhost:8082/gms/ws/jwt gms_url=http://localhost:8082/gms
client_id=gms_cli client_id=gms_cli
client_secret=gms client_secret=gms
rap_url=http://localhost/rap-ia2 rap_url=http://localhost/rap-ia2
...@@ -20,6 +20,11 @@ ...@@ -20,6 +20,11 @@
<artifactId>gms-client</artifactId> <artifactId>gms-client</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>gms-cli</finalName> <finalName>gms-cli</finalName>
......
...@@ -2,7 +2,9 @@ package it.inaf.ia2.gms.cli; ...@@ -2,7 +2,9 @@ package it.inaf.ia2.gms.cli;
import it.inaf.ia2.client.ClientException; import it.inaf.ia2.client.ClientException;
import it.inaf.ia2.gms.client.GmsClient; 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.Permission;
import it.inaf.ia2.gms.client.model.UserPermission;
import it.inaf.ia2.rap.client.ClientCredentialsRapClient; import it.inaf.ia2.rap.client.ClientCredentialsRapClient;
import it.inaf.ia2.rap.client.RapClient; import it.inaf.ia2.rap.client.RapClient;
import it.inaf.ia2.rap.data.AccessTokenResponse; import it.inaf.ia2.rap.data.AccessTokenResponse;
...@@ -74,6 +76,10 @@ public class CLI { ...@@ -74,6 +76,10 @@ public class CLI {
} }
argIndex++; argIndex++;
} }
if (!commandParsed) {
displayUsage();
}
} }
private String getNextArg() { private String getNextArg() {
...@@ -159,6 +165,16 @@ public class CLI { ...@@ -159,6 +165,16 @@ public class CLI {
private void parseCommand() { private void parseCommand() {
switch (args[argIndex]) { 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": case "create-group":
boolean leaf = false; boolean leaf = false;
if (argIndex + 2 < args.length) { if (argIndex + 2 < args.length) {
...@@ -167,10 +183,31 @@ public class CLI { ...@@ -167,10 +183,31 @@ public class CLI {
client.createGroup(args[argIndex + 1], leaf); client.createGroup(args[argIndex + 1], leaf);
System.out.println("Group created"); System.out.println("Group created");
break; 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": case "delete-group":
client.deleteGroup(args[argIndex + 1]); client.deleteGroup(getNextArg());
System.out.println("Group deleted"); System.out.println("Group deleted");
break; 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": case "add-member":
if (argIndex + 2 >= args.length) { if (argIndex + 2 >= args.length) {
displayUsage(); displayUsage();
...@@ -185,6 +222,11 @@ public class CLI { ...@@ -185,6 +222,11 @@ public class CLI {
client.removeMember(args[argIndex + 1], args[argIndex + 2]); client.removeMember(args[argIndex + 1], args[argIndex + 2]);
System.out.println("Member removed"); System.out.println("Member removed");
break; break;
case "get-user-permissions":
for (UserPermission up : client.getUserPermissions(getNextArg())) {
System.out.println(up.getGroup() + " " + up.getPermission());
}
break;
case "set-permission": case "set-permission":
if (argIndex + 3 >= args.length) { if (argIndex + 3 >= args.length) {
displayUsage(); displayUsage();
...@@ -230,8 +272,12 @@ public class CLI { ...@@ -230,8 +272,12 @@ public class CLI {
+ " [--rap-url <url>]\n" + " [--rap-url <url>]\n"
+ " [--client-id <id>]\n" + " [--client-id <id>]\n"
+ " [--client-secret <secret>]\n" + " [--client-secret <secret>]\n"
+ " list-groups [<name1.name2.name3>]\n"
+ " create-group <name1.name2.name3> [<leaf>]\n" + " create-group <name1.name2.name3> [<leaf>]\n"
+ " delete-group <name1.name2.name3>\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" + " add-member <name1.name2.name3> <user_id>\n"
+ " remove-member <name1.name2.name3> <user_id>\n" + " remove-member <name1.name2.name3> <user_id>\n"
+ " set-permission <name1.name2.name3> <user_id> <permission>\n" + " set-permission <name1.name2.name3> <user_id> <permission>\n"
......
...@@ -98,8 +98,8 @@ public class GmsClient extends BaseClient { ...@@ -98,8 +98,8 @@ public class GmsClient extends BaseClient {
}).orElse(super.getInvalidStatusCodeExceptionMessage(request, response)); }).orElse(super.getInvalidStatusCodeExceptionMessage(request, response));
} }
public List<String> listGroups(String prefix) { public List<String> listGroups(String prefix, boolean recursive) {
return new ListGroupsCall(this).listGroups(prefix); return new ListGroupsCall(this).listGroups(prefix, recursive);
} }
public List<String> getUserGroups(String userId) { public List<String> getUserGroups(String userId) {
......
...@@ -2,9 +2,11 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,9 +2,11 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers; import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class AddMemberCall extends BaseCall<GmsClient> { public class AddMemberCall extends BaseCall<GmsClient> {
...@@ -14,15 +16,18 @@ public class AddMemberCall extends BaseCall<GmsClient> { ...@@ -14,15 +16,18 @@ public class AddMemberCall extends BaseCall<GmsClient> {
public boolean addMember(String completeGroupName, String userId) { public boolean addMember(String completeGroupName, String userId) {
String endpoint = "ws/jwt/membership"; String endpoint = "membership";
if (completeGroupName != null && !completeGroupName.isBlank()) {
endpoint += "/" + completeGroupName; if (completeGroupName == null) {
completeGroupName = "";
} }
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.POST(BodyPublishers.ofString("user_id=" + userId)) .POST(BodyPublishers.ofString(
"group=" + URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId))
.build(); .build();
return client.call(groupsRequest, BodyHandlers.ofInputStream(), 200, res -> true); return client.call(groupsRequest, BodyHandlers.ofInputStream(), 200, res -> true);
......
...@@ -3,10 +3,12 @@ package it.inaf.ia2.gms.client.call; ...@@ -3,10 +3,12 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import it.inaf.ia2.gms.client.model.Permission; import it.inaf.ia2.gms.client.model.Permission;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublisher; import java.net.http.HttpRequest.BodyPublisher;
import java.net.http.HttpRequest.BodyPublishers; import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class AddPermissionCall extends BaseCall<GmsClient> { public class AddPermissionCall extends BaseCall<GmsClient> {
...@@ -16,13 +18,15 @@ public class AddPermissionCall extends BaseCall<GmsClient> { ...@@ -16,13 +18,15 @@ public class AddPermissionCall extends BaseCall<GmsClient> {
public String addPermission(String completeGroupName, String userId, Permission permission) { public String addPermission(String completeGroupName, String userId, Permission permission) {
String endpoint = "ws/jwt/permission"; String endpoint = "permission";
if (completeGroupName != null && !completeGroupName.isBlank()) {
endpoint += "/" + completeGroupName; if (completeGroupName == null) {
completeGroupName = "";
} }
BodyPublisher requestBody = BodyPublishers.ofString( BodyPublisher requestBody = BodyPublishers.ofString(
"user_id=" + userId + "&permission=" + permission); "group=" + URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId + "&permission=" + permission);
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -2,9 +2,11 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,9 +2,11 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers; import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class CreateGroupCall extends BaseCall<GmsClient> { public class CreateGroupCall extends BaseCall<GmsClient> {
...@@ -14,10 +16,12 @@ public class CreateGroupCall extends BaseCall<GmsClient> { ...@@ -14,10 +16,12 @@ public class CreateGroupCall extends BaseCall<GmsClient> {
public boolean createGroup(String completeGroupName, boolean leaf) { public boolean createGroup(String completeGroupName, boolean leaf) {
HttpRequest groupsRequest = client.newRequest("ws/jwt/" + completeGroupName) HttpRequest groupsRequest = client.newRequest("group")
.header("Accept", "text/plain") .header("Accept", "text/plain")
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.POST(BodyPublishers.ofString("leaf=" + leaf)) .POST(BodyPublishers.ofString(
"name=" + URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&leaf=" + leaf))
.build(); .build();
return client.call(groupsRequest, BodyHandlers.ofInputStream(), 201, res -> true); return client.call(groupsRequest, BodyHandlers.ofInputStream(), 201, res -> true);
......
...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class DeleteGroupCall extends BaseCall<GmsClient> { public class DeleteGroupCall extends BaseCall<GmsClient> {
...@@ -13,7 +15,8 @@ public class DeleteGroupCall extends BaseCall<GmsClient> { ...@@ -13,7 +15,8 @@ public class DeleteGroupCall extends BaseCall<GmsClient> {
public boolean deleteGroup(String completeGroupName) { public boolean deleteGroup(String completeGroupName) {
HttpRequest groupsRequest = client.newRequest("ws/jwt/" + completeGroupName) HttpRequest groupsRequest = client.newRequest("group?name="
+ URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8))
.header("Accept", "text/plain") .header("Accept", "text/plain")
.DELETE() .DELETE()
.build(); .build();
......
...@@ -4,8 +4,10 @@ import it.inaf.ia2.client.BaseCall; ...@@ -4,8 +4,10 @@ import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import it.inaf.ia2.gms.client.model.GroupPermission; import it.inaf.ia2.gms.client.model.GroupPermission;
import it.inaf.ia2.gms.client.model.Permission; import it.inaf.ia2.gms.client.model.Permission;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
...@@ -16,12 +18,11 @@ public class GetGroupPermissionsCall extends BaseCall<GmsClient> { ...@@ -16,12 +18,11 @@ public class GetGroupPermissionsCall extends BaseCall<GmsClient> {
super(client); super(client);
} }
public List<GroupPermission> getGroupPermissions(String groupId) { public List<GroupPermission> getGroupPermissions(String groupName) {
List<GroupPermission> groupPermissions = new ArrayList<>(); List<GroupPermission> groupPermissions = new ArrayList<>();
String endpoint = "ws/jwt/permission"; String endpoint = "permission?group=" + URLEncoder.encode(groupName, StandardCharsets.UTF_8);
endpoint += "/" + groupId;
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
...@@ -48,15 +50,17 @@ public class GetUserGroupsCall extends BaseCall<GmsClient> { ...@@ -48,15 +50,17 @@ public class GetUserGroupsCall extends BaseCall<GmsClient> {
}); });
} }
public List<String> getUserGroups(String userId, String prefix) { public List<String> getUserGroups(String userId, String groupName) {
List<String> groups = new ArrayList<>(); List<String> groups = new ArrayList<>();
String endpoint = "ws/jwt/membership"; if (groupName == null) {
if (prefix != null && !prefix.isBlank()) { groupName = "";
endpoint += "/" + prefix;
} }
endpoint += "?user_id=" + userId;
String endpoint = "membership?group="
+ URLEncoder.encode(groupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId;
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -20,8 +20,7 @@ public class GetUserPermissionsCall extends BaseCall<GmsClient> { ...@@ -20,8 +20,7 @@ public class GetUserPermissionsCall extends BaseCall<GmsClient> {
List<UserPermission> userPermissions = new ArrayList<>(); List<UserPermission> userPermissions = new ArrayList<>();
String endpoint = "ws/jwt/permission"; String endpoint = "permission?user_id=" + userId;
endpoint += "?user_id=" + userId;
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
...@@ -16,18 +18,21 @@ public class ListGroupsCall extends BaseCall<GmsClient> { ...@@ -16,18 +18,21 @@ public class ListGroupsCall extends BaseCall<GmsClient> {
/** /**
* Returns the list of the groups in a given parent group (if the user has * Returns the list of the groups in a given parent group (if the user has
* the privileges to see that information). The prefix is removed by the * the privileges to see that information). The parent group name is removed
* service. * by the service.
*/ */
public List<String> listGroups(String prefix) { public List<String> listGroups(String parentGroup, boolean recursive) {
List<String> groups = new ArrayList<>(); List<String> groups = new ArrayList<>();
String uri = "ws/jwt/list"; if (parentGroup == null) {
if (prefix != null && !prefix.isBlank()) { parentGroup = "";
uri += "/" + prefix;
} }
String uri = "groups?parent="
+ URLEncoder.encode(parentGroup, StandardCharsets.UTF_8)
+ "&recursive=" + recursive;
HttpRequest groupsRequest = client.newRequest(uri) HttpRequest groupsRequest = client.newRequest(uri)
.header("Accept", "text/plain") .header("Accept", "text/plain")
.GET() .GET()
......
...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class RemoveMemberCall extends BaseCall<GmsClient> { public class RemoveMemberCall extends BaseCall<GmsClient> {
...@@ -13,11 +15,13 @@ public class RemoveMemberCall extends BaseCall<GmsClient> { ...@@ -13,11 +15,13 @@ public class RemoveMemberCall extends BaseCall<GmsClient> {
public boolean removeMember(String completeGroupName, String userId) { public boolean removeMember(String completeGroupName, String userId) {
String endpoint = "ws/jwt/membership"; if (completeGroupName == null) {
if (completeGroupName != null && !completeGroupName.isBlank()) { completeGroupName = "";
endpoint += "/" + completeGroupName;
} }
endpoint += "?user_id=" + userId;
String endpoint = "membership?group="
+ URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId;
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -2,8 +2,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class RemovePermissionCall extends BaseCall<GmsClient> { public class RemovePermissionCall extends BaseCall<GmsClient> {
...@@ -13,11 +15,13 @@ public class RemovePermissionCall extends BaseCall<GmsClient> { ...@@ -13,11 +15,13 @@ public class RemovePermissionCall extends BaseCall<GmsClient> {
public boolean removePermission(String completeGroupName, String userId) { public boolean removePermission(String completeGroupName, String userId) {
String endpoint = "ws/jwt/permission"; if (completeGroupName == null) {
if (completeGroupName != null && !completeGroupName.isBlank()) { completeGroupName = "";
endpoint += "/" + completeGroupName;
} }
endpoint += "?user_id=" + userId;
String endpoint = "permission?group="
+ URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId;
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest(endpoint)
.header("Accept", "text/plain") .header("Accept", "text/plain")
......
...@@ -3,8 +3,10 @@ package it.inaf.ia2.gms.client.call; ...@@ -3,8 +3,10 @@ package it.inaf.ia2.gms.client.call;
import it.inaf.ia2.client.BaseCall; import it.inaf.ia2.client.BaseCall;
import it.inaf.ia2.gms.client.GmsClient; import it.inaf.ia2.gms.client.GmsClient;
import it.inaf.ia2.gms.client.model.Permission; import it.inaf.ia2.gms.client.model.Permission;
import java.net.URLEncoder;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse.BodyHandlers; import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
public class SetPermissionCall extends BaseCall<GmsClient> { public class SetPermissionCall extends BaseCall<GmsClient> {
...@@ -14,15 +16,15 @@ public class SetPermissionCall extends BaseCall<GmsClient> { ...@@ -14,15 +16,15 @@ public class SetPermissionCall extends BaseCall<GmsClient> {
public String setPermission(String completeGroupName, String userId, Permission permission) { public String setPermission(String completeGroupName, String userId, Permission permission) {
String endpoint = "ws/jwt/permission"; if (completeGroupName == null) {
if (completeGroupName != null && !completeGroupName.isBlank()) { completeGroupName = "";
endpoint += "/" + completeGroupName;
} }
HttpRequest.BodyPublisher requestBody = HttpRequest.BodyPublishers.ofString( HttpRequest.BodyPublisher requestBody = HttpRequest.BodyPublishers.ofString(
"user_id=" + userId + "&permission=" + permission); "group=" + URLEncoder.encode(completeGroupName, StandardCharsets.UTF_8)
+ "&user_id=" + userId + "&permission=" + permission);
HttpRequest groupsRequest = client.newRequest(endpoint) HttpRequest groupsRequest = client.newRequest("permission")
.header("Accept", "text/plain") .header("Accept", "text/plain")
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.PUT(requestBody) .PUT(requestBody)
......
...@@ -28,6 +28,6 @@ public class AddMemberTest extends BaseGmsClientTest { ...@@ -28,6 +28,6 @@ public class AddMemberTest extends BaseGmsClientTest {
when(httpClient.sendAsync(any(), any())).thenReturn(response); when(httpClient.sendAsync(any(), any())).thenReturn(response);
gmsClient.addMember("LBT.INAF", "user"); gmsClient.addMember("LBT.INAF", "user");
verify(httpClient, times(1)).sendAsync(endpointEq("POST", "ws/jwt/membership/LBT.INAF"), any()); verify(httpClient, times(1)).sendAsync(endpointEq("POST", "membership"), any());
} }
} }
...@@ -29,6 +29,6 @@ public class AddPermissionTest extends BaseGmsClientTest { ...@@ -29,6 +29,6 @@ public class AddPermissionTest extends BaseGmsClientTest {
when(httpClient.sendAsync(any(), any())).thenReturn(response); when(httpClient.sendAsync(any(), any())).thenReturn(response);
gmsClient.addPermission("LBT.INAF", "user", Permission.ADMIN); gmsClient.addPermission("LBT.INAF", "user", Permission.ADMIN);
verify(httpClient, times(1)).sendAsync(endpointEq("POST", "ws/jwt/permission/LBT.INAF"), any()); verify(httpClient, times(1)).sendAsync(endpointEq("POST", "permission"), any());
} }
} }
...@@ -28,6 +28,6 @@ public class CreateGroupTest extends BaseGmsClientTest { ...@@ -28,6 +28,6 @@ public class CreateGroupTest extends BaseGmsClientTest {
when(httpClient.sendAsync(any(), any())).thenReturn(response); when(httpClient.sendAsync(any(), any())).thenReturn(response);
gmsClient.createGroup("LBT.INAF", false); gmsClient.createGroup("LBT.INAF", false);
verify(httpClient, times(1)).sendAsync(endpointEq("POST", "ws/jwt/LBT.INAF"), any()); verify(httpClient, times(1)).sendAsync(endpointEq("POST", "group"), any());
} }
} }
...@@ -28,6 +28,6 @@ public class DeleteGroupTest extends BaseGmsClientTest { ...@@ -28,6 +28,6 @@ public class DeleteGroupTest extends BaseGmsClientTest {
when(httpClient.sendAsync(any(), any())).thenReturn(response); when(httpClient.sendAsync(any(), any())).thenReturn(response);
gmsClient.deleteGroup("LBT.INAF"); gmsClient.deleteGroup("LBT.INAF");
verify(httpClient, times(1)).sendAsync(endpointEq("DELETE", "ws/jwt/LBT.INAF"), any()); verify(httpClient, times(1)).sendAsync(endpointEq("DELETE", "group?name=LBT.INAF"), any());
} }
} }