Skip to content

Commit 8105907

Browse files
committed
test: add JSON de-/serialization for Role/Permission classes
1 parent 821715f commit 8105907

File tree

5 files changed

+477
-23
lines changed

5 files changed

+477
-23
lines changed

src/it/java/io/weaviate/integration/RbacITest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.weaviate.client6.v1.api.rbac.RolesPermission.Scope;
2525
import io.weaviate.client6.v1.api.rbac.TenantsPermission;
2626
import io.weaviate.client6.v1.api.rbac.UsersPermission;
27+
import io.weaviate.client6.v1.api.rbac.groups.GroupType;
2728
import io.weaviate.client6.v1.api.rbac.roles.UserAssignment;
2829
import io.weaviate.client6.v1.api.rbac.users.DbUser;
2930
import io.weaviate.client6.v1.api.rbac.users.User;
@@ -69,7 +70,7 @@ public void test_roles_Lifecycle() throws IOException {
6970
Permission.roles(VIEWER_ROLE, Scope.MATCH, RolesPermission.Action.CREATE),
7071
Permission.collections(myCollection, CollectionsPermission.Action.CREATE),
7172
Permission.data(myCollection, DataPermission.Action.UPDATE),
72-
Permission.groups("my-group", "oidc", GroupsPermission.Action.READ),
73+
Permission.groups("my-group", GroupType.OIDC, GroupsPermission.Action.READ),
7374
Permission.tenants(myCollection, "my-tenant", TenantsPermission.Action.DELETE),
7475
Permission.users("my-user", UsersPermission.Action.READ),
7576
Permission.replicate(myCollection, "my-shard", ReplicatePermission.Action.READ),

src/main/java/io/weaviate/client6/v1/api/rbac/GroupsPermission.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55

66
import com.google.gson.annotations.SerializedName;
77

8+
import io.weaviate.client6.v1.api.rbac.groups.GroupType;
9+
810
public record GroupsPermission(
911
@SerializedName("group") String groupId,
10-
@SerializedName("groupType") String groupType,
12+
@SerializedName("groupType") GroupType groupType,
1113
@SerializedName("actions") List<Action> actions) implements Permission {
1214

13-
public GroupsPermission(String groupId, String groupType, Action... actions) {
15+
public GroupsPermission(String groupId, GroupType groupType, Action... actions) {
1416
this(groupId, groupType, Arrays.asList(actions));
1517
}
1618

src/main/java/io/weaviate/client6/v1/api/rbac/Permission.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import io.weaviate.client6.v1.api.rbac.NodesPermission.Verbosity;
2424
import io.weaviate.client6.v1.api.rbac.RolesPermission.Scope;
25+
import io.weaviate.client6.v1.api.rbac.groups.GroupType;
2526
import io.weaviate.client6.v1.internal.json.JsonEnum;
2627

2728
public interface Permission {
@@ -106,7 +107,7 @@ public static DataPermission data(String collection, DataPermission.Action... ac
106107
/**
107108
* Create permissions for managing RBAC groups.
108109
*/
109-
public static GroupsPermission groups(String groupId, String groupType, GroupsPermission.Action... actions) {
110+
public static GroupsPermission groups(String groupId, GroupType groupType, GroupsPermission.Action... actions) {
110111
checkDeprecation(actions);
111112
return new GroupsPermission(groupId, groupType, actions);
112113
}
@@ -147,9 +148,9 @@ public static TenantsPermission tenants(String collection, String tenant, Tenant
147148
/**
148149
* Create {@link UsersPermission}.
149150
*/
150-
public static UsersPermission users(String user, UsersPermission.Action... actions) {
151+
public static UsersPermission users(String userId, UsersPermission.Action... actions) {
151152
checkDeprecation(actions);
152-
return new UsersPermission(user, actions);
153+
return new UsersPermission(userId, actions);
153154
}
154155

155156
/**
@@ -243,24 +244,24 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
243244

244245
@Override
245246
public void write(JsonWriter out, Permission value) throws IOException {
246-
out.beginObject();
247-
248-
if (!value.actions().isEmpty()) {
249-
// User might not have provided any actions by mistake
250-
var action = (RbacAction<?>) value.actions().get(0);
247+
for (RbacAction<?> action : value.actions()) {
248+
out.beginObject();
249+
// User might not have provided many actions by mistake
251250
out.name("action");
252251
out.value(action.jsonValue());
253-
}
254252

255-
if (value.self() != null) {
256-
var permission = writeAdapter.toJsonTree((T) value.self());
257-
// Some permission types do not have a body
258-
permission.getAsJsonObject().remove("actions");
259-
out.name(value._kind().jsonValue());
260-
Streams.write(permission, out);
261-
}
253+
if (value.self() != null) {
254+
var permission = writeAdapter.toJsonTree((T) value.self());
255+
permission.getAsJsonObject().remove("actions");
262256

263-
out.endObject();
257+
// Some permission types do not have a body
258+
if (!permission.getAsJsonObject().keySet().isEmpty()) {
259+
out.name(value._kind().jsonValue());
260+
Streams.write(permission, out);
261+
}
262+
}
263+
out.endObject();
264+
}
264265
}
265266

266267
@Override

src/main/java/io/weaviate/client6/v1/api/rbac/UsersPermission.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import com.google.gson.annotations.SerializedName;
77

88
public record UsersPermission(
9-
@SerializedName("users") String user,
9+
@SerializedName("users") String userId,
1010
@SerializedName("actions") List<Action> actions) implements Permission {
1111

12-
public UsersPermission(String user, Action... actions) {
13-
this(user, Arrays.asList(actions));
12+
public UsersPermission(String userId, Action... actions) {
13+
this(userId, Arrays.asList(actions));
1414
}
1515

1616
@Override

0 commit comments

Comments
 (0)