3232import net .luckperms .rest .model .Node ;
3333import net .luckperms .rest .model .PermissionCheckRequest ;
3434import net .luckperms .rest .model .PermissionCheckResult ;
35+ import net .luckperms .rest .model .PlayerSaveResult ;
3536import net .luckperms .rest .model .QueryOptions ;
3637import net .luckperms .rest .model .TemporaryNodeMergeStrategy ;
3738import 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