Skip to content

Commit c6d8a9e

Browse files
committed
Update for user create changes
1 parent b125f79 commit c6d8a9e

File tree

3 files changed

+104
-10
lines changed

3 files changed

+104
-10
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package net.luckperms.rest.model;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
import java.util.Set;
6+
import java.util.UUID;
7+
8+
public class PlayerSaveResult extends AbstractModel {
9+
private final Set<Outcome> outcomes;
10+
private final String previousUsername; // nullable
11+
private final Set<UUID> otherUniqueIds; // nullable
12+
13+
public PlayerSaveResult(Set<Outcome> outcomes, String previousUsername, Set<UUID> otherUniqueIds) {
14+
this.outcomes = outcomes;
15+
this.previousUsername = previousUsername;
16+
this.otherUniqueIds = otherUniqueIds;
17+
}
18+
19+
public Set<Outcome> outcomes() {
20+
return this.outcomes;
21+
}
22+
23+
public String previousUsername() {
24+
return this.previousUsername;
25+
}
26+
27+
public Set<UUID> otherUniqueIds() {
28+
return this.otherUniqueIds;
29+
}
30+
31+
public enum Outcome {
32+
33+
@SerializedName("clean_insert")
34+
CLEAN_INSERT,
35+
36+
@SerializedName("no_change")
37+
NO_CHANGE,
38+
39+
@SerializedName("username_updated")
40+
USERNAME_UPDATED,
41+
42+
@SerializedName("other_unique_ids_present_for_username")
43+
OTHER_UNIQUE_IDS_PRESENT_FOR_USERNAME,
44+
}
45+
46+
}

src/main/java/net/luckperms/rest/service/UserService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import net.luckperms.rest.model.Node;
3232
import net.luckperms.rest.model.PermissionCheckRequest;
3333
import net.luckperms.rest.model.PermissionCheckResult;
34+
import net.luckperms.rest.model.PlayerSaveResult;
3435
import net.luckperms.rest.model.PromotionResult;
3536
import net.luckperms.rest.model.TemporaryNodeMergeStrategy;
3637
import net.luckperms.rest.model.TrackRequest;
@@ -59,7 +60,7 @@ public interface UserService {
5960
Call<Set<UUID>> list();
6061

6162
@POST("/user")
62-
Call<User> create(@Body CreateUserRequest req);
63+
Call<PlayerSaveResult> create(@Body CreateUserRequest req);
6364

6465
@GET("/user/lookup")
6566
Call<UserLookupResult> lookup(@Query("username") String username);

src/test/java/me/lucko/luckperms/rest/UserServiceTest.java

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import net.luckperms.rest.model.Node;
3333
import net.luckperms.rest.model.PermissionCheckRequest;
3434
import net.luckperms.rest.model.PermissionCheckResult;
35+
import net.luckperms.rest.model.PlayerSaveResult;
3536
import net.luckperms.rest.model.QueryOptions;
3637
import net.luckperms.rest.model.TemporaryNodeMergeStrategy;
3738
import net.luckperms.rest.model.UpdateUserRequest;
@@ -65,20 +66,16 @@ public void testUserCrud() throws IOException {
6566
String username = randomUsername();
6667

6768
// create
68-
Response<User> createResp = client.users().create(new CreateUserRequest(uuid, username)).execute();
69+
Response<PlayerSaveResult> createResp = client.users().create(new CreateUserRequest(uuid, username)).execute();
6970
assertTrue(createResp.isSuccessful());
70-
User user = createResp.body();
71-
assertNotNull(user);
72-
assertEquals(uuid, user.uniqueId());
73-
assertEquals(username, user.username());
74-
75-
// create - already exists
76-
assertEquals(409, client.users().create(new CreateUserRequest(uuid, username)).execute().code());
71+
assertEquals(201, createResp.code());
72+
PlayerSaveResult result = createResp.body();
73+
assertNotNull(result);
7774

7875
// read
7976
Response<User> readResp = client.users().get(uuid).execute();
8077
assertTrue(readResp.isSuccessful());
81-
user = readResp.body();
78+
User user = readResp.body();
8279
assertNotNull(user);
8380
assertEquals(uuid, user.uniqueId());
8481
assertEquals(username, user.username());
@@ -92,6 +89,56 @@ public void testUserCrud() throws IOException {
9289
assertTrue(deleteResp.isSuccessful());
9390
}
9491

92+
@Test
93+
public void testUserCreate() throws IOException {
94+
LuckPermsClient client = createClient();
95+
96+
UUID uuid = UUID.randomUUID();
97+
String username = randomUsername();
98+
99+
// create - clean insert
100+
Response<PlayerSaveResult> createResp1 = client.users().create(new CreateUserRequest(uuid, username)).execute();
101+
assertTrue(createResp1.isSuccessful());
102+
assertEquals(201, createResp1.code());
103+
PlayerSaveResult result1 = createResp1.body();
104+
assertNotNull(result1);
105+
assertEquals(ImmutableSet.of(PlayerSaveResult.Outcome.CLEAN_INSERT), result1.outcomes());
106+
assertNull(result1.previousUsername());
107+
assertNull(result1.otherUniqueIds());
108+
109+
// create - no change
110+
Response<PlayerSaveResult> createResp2 = client.users().create(new CreateUserRequest(uuid, username)).execute();
111+
assertTrue(createResp2.isSuccessful());
112+
assertEquals(200, createResp2.code());
113+
PlayerSaveResult result2 = createResp2.body();
114+
assertNotNull(result2);
115+
assertEquals(ImmutableSet.of(PlayerSaveResult.Outcome.NO_CHANGE), result2.outcomes());
116+
assertNull(result2.previousUsername());
117+
assertNull(result2.otherUniqueIds());
118+
119+
// create - changed username
120+
String otherUsername = randomUsername();
121+
Response<PlayerSaveResult> createResp3 = client.users().create(new CreateUserRequest(uuid, otherUsername)).execute();
122+
assertTrue(createResp3.isSuccessful());
123+
assertEquals(200, createResp3.code());
124+
PlayerSaveResult result3 = createResp3.body();
125+
assertNotNull(result3);
126+
assertEquals(ImmutableSet.of(PlayerSaveResult.Outcome.USERNAME_UPDATED), result3.outcomes());
127+
assertEquals(username, result3.previousUsername());
128+
assertNull(result3.otherUniqueIds());
129+
130+
// create - changed uuid
131+
UUID otherUuid = UUID.randomUUID();
132+
Response<PlayerSaveResult> createResp4 = client.users().create(new CreateUserRequest(otherUuid, otherUsername)).execute();
133+
assertTrue(createResp4.isSuccessful());
134+
assertEquals(201, createResp4.code());
135+
PlayerSaveResult result4 = createResp4.body();
136+
assertNotNull(result4);
137+
assertEquals(ImmutableSet.of(PlayerSaveResult.Outcome.CLEAN_INSERT, PlayerSaveResult.Outcome.OTHER_UNIQUE_IDS_PRESENT_FOR_USERNAME), result4.outcomes());
138+
assertNull(result4.previousUsername());
139+
assertEquals(ImmutableSet.of(uuid), result4.otherUniqueIds());
140+
}
141+
95142
@Test
96143
public void testUserList() throws IOException {
97144
LuckPermsClient client = createClient();

0 commit comments

Comments
 (0)