22using Refresh . Database . Models . Levels ;
33using Refresh . Interfaces . Game . Endpoints . DataTypes . Request ;
44using Refresh . Database . Models . Authentication ;
5+ using System . Security . Cryptography ;
6+ using Refresh . Core . Extensions ;
7+ using Refresh . Database . Models . Assets ;
58
69namespace RefreshTests . GameServer . Tests . Levels ;
710
@@ -152,4 +155,38 @@ public void LevelUpdateDoesNotChangeUpdateDateWhenRootUnchanged()
152155 Assert . That ( level . UpdateDate . ToUnixTimeMilliseconds ( ) , Is . EqualTo ( 1 ) ) ;
153156 } ) ;
154157 }
158+
159+ [ Test ]
160+ public void PspLevelWithUnknownRootTypeDoesNotGetMarkedAsModded ( )
161+ {
162+ using TestContext context = this . GetServer ( ) ;
163+ GameUser user = context . CreateUser ( ) ;
164+
165+ using HttpClient client = context . GetAuthenticatedClient ( TokenType . Game , TokenGame . LittleBigPlanetPSP , TokenPlatform . PSP , user ) ;
166+ client . DefaultRequestHeaders . UserAgent . TryParseAdd ( "LBPPSP CLIENT" ) ;
167+
168+ // upload asset from PSP
169+ ReadOnlySpan < byte > data = "MMMMMMMMMMMMMMMMMMMMM"u8 ;
170+ string hash = BitConverter . ToString ( SHA1 . HashData ( data ) ) . Replace ( "-" , "" ) . ToLower ( ) ;
171+
172+ HttpResponseMessage response = client . PostAsync ( "/lbp/upload/" + hash , new ByteArrayContent ( data . ToArray ( ) ) ) . Result ;
173+ Assert . That ( response . StatusCode , Is . EqualTo ( OK ) ) ;
174+
175+ GameAsset ? rootAsset = context . Database . GetAssetFromHash ( hash ) ;
176+ Assert . That ( rootAsset , Is . Not . Null ) ;
177+ Assert . That ( rootAsset ! . IsPSP , Is . True ) ;
178+ Assert . That ( rootAsset ! . AssetType , Is . EqualTo ( GameAssetType . Unknown ) ) ;
179+ Assert . That ( rootAsset ! . AssetFormat , Is . EqualTo ( GameAssetFormat . Unknown ) ) ;
180+
181+ GameLevel level = context . CreateLevelWithRootResource ( user , hash , TokenGame . LittleBigPlanetPSP ) ;
182+ context . Database . UpdateLevelModdedStatus ( level ) ;
183+
184+ context . Database . Refresh ( ) ;
185+
186+ GameLevel ? updatedLevel = context . Database . GetLevelById ( level . LevelId ) ;
187+ Assert . That ( updatedLevel , Is . Not . Null ) ;
188+ Assert . That ( updatedLevel ! . LevelId , Is . EqualTo ( level . LevelId ) ) ;
189+ Assert . That ( updatedLevel ! . RootResource , Is . EqualTo ( hash ) ) ;
190+ Assert . That ( updatedLevel ! . IsModded , Is . False ) ;
191+ }
155192}
0 commit comments