|
1 | 1 | using System.Security.Cryptography; |
2 | 2 | using Refresh.Core.Configuration; |
3 | 3 | using Refresh.Core.Services; |
| 4 | +using Refresh.Database.Models.Assets; |
4 | 5 | using Refresh.Database.Models.Authentication; |
5 | 6 | using Refresh.Database.Models.Users; |
6 | 7 | using Refresh.Interfaces.Game.Types.Lists; |
@@ -258,6 +259,53 @@ public void PspCanUploadNormalAssetWhileBlocked() |
258 | 259 | HttpResponseMessage response = client.PostAsync("/lbp/upload/" + hash, new ByteArrayContent(data.ToArray())).Result; |
259 | 260 | Assert.That(response.StatusCode, Is.EqualTo(OK)); |
260 | 261 | } |
| 262 | + |
| 263 | + [Test] |
| 264 | + public void UnreadablePspAssetsAreNotMarkedAsModdedDangerous() |
| 265 | + { |
| 266 | + using TestContext context = this.GetServer(); |
| 267 | + GameUser user = context.CreateUser(); |
| 268 | + |
| 269 | + using HttpClient client = context.GetAuthenticatedClient(TokenType.Game, TokenGame.LittleBigPlanetPSP, TokenPlatform.PSP, user); |
| 270 | + client.DefaultRequestHeaders.UserAgent.TryParseAdd("LBPPSP CLIENT"); |
| 271 | + |
| 272 | + ReadOnlySpan<byte> data = "MMMMMMMMMMMMMMMMMMMMM"u8; |
| 273 | + |
| 274 | + string hash = BitConverter.ToString(SHA1.HashData(data)) |
| 275 | + .Replace("-", "") |
| 276 | + .ToLower(); |
| 277 | + |
| 278 | + HttpResponseMessage response = client.PostAsync("/lbp/upload/" + hash, new ByteArrayContent(data.ToArray())).Result; |
| 279 | + Assert.That(response.StatusCode, Is.EqualTo(OK)); |
| 280 | + |
| 281 | + GameAsset? assetInfo = context.Database.GetAssetFromHash(hash); |
| 282 | + Assert.That(assetInfo, Is.Not.Null); |
| 283 | + Assert.That(assetInfo!.AssetType, Is.EqualTo(GameAssetType.Unknown)); |
| 284 | + Assert.That(assetInfo!.AssetFormat, Is.EqualTo(GameAssetFormat.Unknown)); |
| 285 | + Assert.That(assetInfo!.IsPSP, Is.True); |
| 286 | + Assert.That(assetInfo!.AssetFlags, Is.EqualTo(AssetFlags.None)); |
| 287 | + } |
| 288 | + |
| 289 | + [Test] |
| 290 | + public void CantUploadUnreadableAssetFromNonPsp() |
| 291 | + { |
| 292 | + using TestContext context = this.GetServer(); |
| 293 | + GameUser user = context.CreateUser(); |
| 294 | + |
| 295 | + using HttpClient client = context.GetAuthenticatedClient(TokenType.Game, TokenGame.LittleBigPlanet2, TokenPlatform.PS3, user); |
| 296 | + |
| 297 | + ReadOnlySpan<byte> data = "MMMMMMMMMMMMMMMMMMMMM"u8; |
| 298 | + |
| 299 | + string hash = BitConverter.ToString(SHA1.HashData(data)) |
| 300 | + .Replace("-", "") |
| 301 | + .ToLower(); |
| 302 | + |
| 303 | + HttpResponseMessage response = client.PostAsync("/lbp/upload/" + hash, new ByteArrayContent(data.ToArray())).Result; |
| 304 | + Assert.That(response.StatusCode, Is.EqualTo(Unauthorized)); |
| 305 | + |
| 306 | + GameAsset? assetInfo = context.Database.GetAssetFromHash(hash); |
| 307 | + Assert.That(assetInfo, Is.Null); |
| 308 | + } |
261 | 309 |
|
262 | 310 | [Test] |
263 | 311 | public void CantUploadAssetWithInvalidHash() |
|
0 commit comments