1+ using Refresh . Database . Models . Authentication ;
2+ using Refresh . Database . Models . Users ;
3+ using RefreshTests . GameServer . Extensions ;
4+ using Refresh . Interfaces . APIv3 . Endpoints . DataTypes . Request . Authentication ;
5+ using Refresh . Common . Helpers ;
6+ using System . Security . Cryptography ;
7+ using Refresh . Interfaces . Game . Types . UserData ;
8+ using Refresh . Interfaces . APIv3 . Endpoints . DataTypes . Response . Admin ;
9+ using Refresh . Interfaces . APIv3 . Endpoints . ApiTypes ;
10+ using Refresh . Common . Extensions ;
11+
12+ namespace RefreshTests . GameServer . Tests . ApiV3 ;
13+
14+ public class AdminUserManagementApiTests : GameServerTest
15+ {
16+ [ Test ]
17+ public async Task ResetsUsersPasswordByUuidAndName ( )
18+ {
19+ using TestContext context = this . GetServer ( ) ;
20+ GameUser mod = context . CreateUser ( role : GameUserRole . Moderator ) ;
21+ HttpClient client = context . GetAuthenticatedClient ( TokenType . Api , mod ) ;
22+
23+ GameUser player1 = context . CreateUser ( role : GameUserRole . User ) ;
24+ ApiResetPasswordRequest request = new ( )
25+ {
26+ PasswordSha512 = HexHelper . BytesToHexString ( SHA512 . HashData ( "poo"u8 ) )
27+ } ;
28+ HttpResponseMessage response = await client . PutAsync ( $ "/api/v3/admin/users/uuid/{ player1 . UserId } /resetPassword", new StringContent ( request . AsJson ( ) ) ) ;
29+ Assert . That ( response . IsSuccessStatusCode , Is . True ) ;
30+
31+ context . Database . Refresh ( ) ;
32+ GameUser ? updated1 = context . Database . GetUserByObjectId ( player1 . UserId ) ;
33+ Assert . That ( updated1 , Is . Not . Null ) ;
34+ Assert . That ( updated1 ! . ShouldResetPassword , Is . True ) ;
35+
36+ GameUser player2 = context . CreateUser ( role : GameUserRole . User ) ;
37+ request = new ( )
38+ {
39+ PasswordSha512 = HexHelper . BytesToHexString ( SHA512 . HashData ( "poo"u8 ) )
40+ } ;
41+ response = await client . PutAsync ( $ "/api/v3/admin/users/uuid/{ player2 . UserId } /resetPassword", new StringContent ( request . AsJson ( ) ) ) ;
42+ Assert . That ( response . IsSuccessStatusCode , Is . True ) ;
43+
44+ context . Database . Refresh ( ) ;
45+ GameUser ? updated2 = context . Database . GetUserByObjectId ( player2 . UserId ) ;
46+ Assert . That ( updated2 , Is . Not . Null ) ;
47+ Assert . That ( updated2 ! . ShouldResetPassword , Is . True ) ;
48+
49+ GameUser player3 = context . CreateUser ( role : GameUserRole . User ) ;
50+ request = new ( )
51+ {
52+ PasswordSha512 = HexHelper . BytesToHexString ( SHA512 . HashData ( "poo"u8 ) )
53+ } ;
54+ response = await client . PutAsync ( $ "/api/v3/admin/users/uuid/{ player3 . UserId } /resetPassword", new StringContent ( request . AsJson ( ) ) ) ;
55+ Assert . That ( response . IsSuccessStatusCode , Is . True ) ;
56+
57+ context . Database . Refresh ( ) ;
58+ GameUser ? updated3 = context . Database . GetUserByObjectId ( player3 . UserId ) ;
59+ Assert . That ( updated3 , Is . Not . Null ) ;
60+ Assert . That ( updated3 ! . ShouldResetPassword , Is . True ) ;
61+ }
62+
63+ [ Test ]
64+ public async Task GetsAndResetsUserPlanetsByUuidAndName ( )
65+ {
66+ using TestContext context = this . GetServer ( ) ;
67+ GameUser mod = context . CreateUser ( role : GameUserRole . Moderator ) ;
68+ HttpClient client = context . GetAuthenticatedClient ( TokenType . Api , mod ) ;
69+ GameUser player = context . CreateUser ( role : GameUserRole . User ) ;
70+
71+ // UUID
72+ context . Database . UpdateUserData ( player , new SerializedUpdateData ( )
73+ {
74+ PlanetsHash = "lol"
75+ } , TokenGame . LittleBigPlanet2 ) ;
76+
77+ ApiResponse < ApiAdminUserPlanetsResponse > ? planetResponse = client . GetData < ApiAdminUserPlanetsResponse > ( $ "/api/v3/admin/users/uuid/{ player . UserId } /planets") ;
78+ Assert . That ( planetResponse ? . Data , Is . Not . Null ) ;
79+ Assert . That ( planetResponse ! . Data ! . Lbp2PlanetsHash , Is . EqualTo ( "lol" ) ) ;
80+
81+ HttpResponseMessage resetResponse = await client . DeleteAsync ( $ "/api/v3/admin/users/uuid/{ player . UserId } /planets") ;
82+ Assert . That ( resetResponse . IsSuccessStatusCode , Is . True ) ;
83+
84+ context . Database . Refresh ( ) ;
85+
86+ GameUser ? updated = context . Database . GetUserByObjectId ( player . UserId ) ;
87+ Assert . That ( updated , Is . Not . Null ) ;
88+ Assert . That ( updated ! . Lbp2PlanetsHash . IsBlankHash ( ) , Is . True ) ;
89+
90+ // name
91+ context . Database . UpdateUserData ( updated , new SerializedUpdateData ( )
92+ {
93+ PlanetsHash = "lol"
94+ } , TokenGame . LittleBigPlanet3 ) ;
95+
96+ context . Database . Refresh ( ) ;
97+
98+ planetResponse = client . GetData < ApiAdminUserPlanetsResponse > ( $ "/api/v3/admin/users/name/{ updated . Username } /planets") ;
99+ Assert . That ( planetResponse ? . Data , Is . Not . Null ) ;
100+ Assert . That ( planetResponse ! . Data ! . Lbp3PlanetsHash , Is . EqualTo ( "lol" ) ) ;
101+
102+ resetResponse = await client . DeleteAsync ( $ "/api/v3/admin/users/name/{ updated . Username } /planets") ;
103+ Assert . That ( resetResponse . IsSuccessStatusCode , Is . True ) ;
104+
105+ context . Database . Refresh ( ) ;
106+
107+ updated = context . Database . GetUserByObjectId ( updated . UserId ) ;
108+ Assert . That ( updated , Is . Not . Null ) ;
109+ Assert . That ( updated ! . Lbp3PlanetsHash . IsBlankHash ( ) , Is . True ) ;
110+
111+ // username
112+ context . Database . UpdateUserData ( updated , new SerializedUpdateData ( )
113+ {
114+ PlanetsHash = "lol"
115+ } , TokenGame . LittleBigPlanetVita ) ;
116+
117+ context . Database . Refresh ( ) ;
118+
119+ planetResponse = client . GetData < ApiAdminUserPlanetsResponse > ( $ "/api/v3/admin/users/username/{ updated . Username } /planets") ;
120+ Assert . That ( planetResponse ? . Data , Is . Not . Null ) ;
121+ Assert . That ( planetResponse ! . Data ! . VitaPlanetsHash , Is . EqualTo ( "lol" ) ) ;
122+
123+ resetResponse = await client . DeleteAsync ( $ "/api/v3/admin/users/username/{ updated . Username } /planets") ;
124+ Assert . That ( resetResponse . IsSuccessStatusCode , Is . True ) ;
125+
126+ context . Database . Refresh ( ) ;
127+
128+ updated = context . Database . GetUserByObjectId ( updated . UserId ) ;
129+ Assert . That ( updated , Is . Not . Null ) ;
130+ Assert . That ( updated ! . VitaPlanetsHash . IsBlankHash ( ) , Is . True ) ;
131+ }
132+ }
0 commit comments