Skip to content

Commit e3a1996

Browse files
committed
Add tests for deleting comments/reviews/scores by user over API
1 parent 6954d28 commit e3a1996

3 files changed

Lines changed: 106 additions & 0 deletions

File tree

RefreshTests.GameServer/Tests/ApiV3/CommentApiTests.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,4 +286,52 @@ public async Task CantRateProfileCommentWithInvalidRating(string rawRating)
286286
Assert.That(response.IsSuccessStatusCode, Is.False);
287287
Assert.That(context.Database.GetProfileCommentRatingByUser(comment, rater), Is.Null);
288288
}
289+
290+
[Test]
291+
public async Task DeletesProfileCommentsByPublisherUuidAndName()
292+
{
293+
using TestContext context = this.GetServer();
294+
GameUser mod = context.CreateUser(role: GameUserRole.Moderator);
295+
GameUser publisher = context.CreateUser(role: GameUserRole.User);
296+
GameUser profile = context.CreateUser(role: GameUserRole.User);
297+
HttpClient client = context.GetAuthenticatedClient(TokenType.Api, mod);
298+
299+
// UUID
300+
context.Database.PostCommentToProfile(profile, publisher, "you stink");
301+
Assert.That(context.Database.GetTotalCommentsForProfile(profile), Is.EqualTo(1)); // TODO: Actually check number of comments by publisher
302+
HttpResponseMessage resetResponse = await client.DeleteAsync($"/api/v3/admin/users/uuid/{publisher.UserId}/comments/profile");
303+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
304+
Assert.That(context.Database.GetTotalCommentsForProfile(profile), Is.Zero);
305+
306+
// name
307+
context.Database.PostCommentToProfile(profile, publisher, "you stink");
308+
Assert.That(context.Database.GetTotalCommentsForProfile(profile), Is.EqualTo(1));
309+
resetResponse = await client.DeleteAsync($"/api/v3/admin/users/name/{publisher.Username}/comments/profile");
310+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
311+
Assert.That(context.Database.GetTotalCommentsForProfile(profile), Is.Zero);
312+
}
313+
314+
[Test]
315+
public async Task DeletesLevelCommentsByPublisherUuidAndName()
316+
{
317+
using TestContext context = this.GetServer();
318+
GameUser mod = context.CreateUser(role: GameUserRole.Moderator);
319+
GameLevel level = context.CreateLevel(mod);
320+
GameUser publisher = context.CreateUser(role: GameUserRole.User);
321+
HttpClient client = context.GetAuthenticatedClient(TokenType.Api, mod);
322+
323+
// UUID
324+
context.Database.PostCommentToLevel(level, publisher, "you stink");
325+
Assert.That(context.Database.GetTotalCommentsForLevel(level), Is.EqualTo(1)); // TODO: Actually check number of comments by publisher
326+
HttpResponseMessage resetResponse = await client.DeleteAsync($"/api/v3/admin/users/uuid/{publisher.UserId}/comments/level");
327+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
328+
Assert.That(context.Database.GetTotalCommentsForLevel(level), Is.Zero);
329+
330+
// name
331+
context.Database.PostCommentToLevel(level, publisher, "you stink");
332+
Assert.That(context.Database.GetTotalCommentsForLevel(level), Is.EqualTo(1));
333+
resetResponse = await client.DeleteAsync($"/api/v3/admin/users/name/{publisher.Username}/comments/level");
334+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
335+
Assert.That(context.Database.GetTotalCommentsForLevel(level), Is.Zero);
336+
}
289337
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Refresh.Database.Models.Authentication;
2+
using Refresh.Database.Models.Levels;
3+
using Refresh.Database.Models.Users;
4+
5+
namespace RefreshTests.GameServer.Tests.ApiV3;
6+
7+
public class LeaderboardApiTests : GameServerTest
8+
{
9+
[Test]
10+
public async Task DeletesScoresByPublisherUuidAndName()
11+
{
12+
using TestContext context = this.GetServer();
13+
GameUser mod = context.CreateUser(role: GameUserRole.Moderator);
14+
GameLevel level = context.CreateLevel(mod);
15+
GameUser publisher = context.CreateUser(role: GameUserRole.User);
16+
HttpClient client = context.GetAuthenticatedClient(TokenType.Api, mod);
17+
18+
// UUID
19+
context.SubmitScore(4000001, 1, level, publisher, TokenGame.LittleBigPlanet1, TokenPlatform.RPCS3, [publisher]);
20+
Assert.That(context.Database.GetTopScoresForLevel(level, 100, 0, 1).TotalItems, Is.EqualTo(1)); // TODO: Use total score by publisher
21+
HttpResponseMessage resetResponse = await client.DeleteAsync($"/api/v3/admin/users/uuid/{publisher.UserId}/scores");
22+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
23+
Assert.That(context.Database.GetTopScoresForLevel(level, 100, 0, 1).TotalItems, Is.Zero);
24+
25+
// name
26+
context.SubmitScore(4000001, 1, level, publisher, TokenGame.LittleBigPlanet1, TokenPlatform.RPCS3, [publisher]);
27+
Assert.That(context.Database.GetTopScoresForLevel(level, 100, 0, 1).TotalItems, Is.EqualTo(1));
28+
resetResponse = await client.DeleteAsync($"/api/v3/admin/users/name/{publisher.Username}/scores");
29+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
30+
Assert.That(context.Database.GetTopScoresForLevel(level, 100, 0, 1).TotalItems, Is.Zero);
31+
}
32+
}

RefreshTests.GameServer/Tests/ApiV3/ReviewApiTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Refresh.Interfaces.APIv3.Endpoints.ApiTypes;
88
using Refresh.Interfaces.APIv3.Endpoints.DataTypes.Request;
99
using Refresh.Interfaces.APIv3.Endpoints.DataTypes.Response.Levels;
10+
using Refresh.Interfaces.Game.Types.Reviews;
1011
using RefreshTests.GameServer.Extensions;
1112

1213
namespace RefreshTests.GameServer.Tests.ApiV3;
@@ -519,4 +520,29 @@ public void GetReviewsByUser()
519520
Assert.That(reviews!.Data, Has.Count.EqualTo(1));
520521
Assert.That(reviews.Data![0].ReviewId, Is.EqualTo(originalReview.ReviewId));
521522
}
523+
524+
[Test]
525+
public async Task DeletesReviewsByPublisherUuidAndName()
526+
{
527+
using TestContext context = this.GetServer();
528+
GameUser mod = context.CreateUser(role: GameUserRole.Moderator);
529+
GameLevel level = context.CreateLevel(mod);
530+
GameUser publisher = context.CreateUser(role: GameUserRole.User);
531+
HttpClient client = context.GetAuthenticatedClient(TokenType.Api, mod);
532+
SerializedGameReview reviewToPost = new() { Content = "d" };
533+
534+
// UUID
535+
context.Database.AddReviewToLevel(reviewToPost, level, publisher);
536+
Assert.That(context.Database.GetTotalReviewsByUser(publisher), Is.EqualTo(1));
537+
HttpResponseMessage resetResponse = await client.DeleteAsync($"/api/v3/admin/users/uuid/{publisher.UserId}/reviews");
538+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
539+
Assert.That(context.Database.GetTotalReviewsByUser(publisher), Is.Zero);
540+
541+
// name
542+
context.Database.AddReviewToLevel(reviewToPost, level, publisher);
543+
Assert.That(context.Database.GetTotalReviewsByUser(publisher), Is.EqualTo(1));
544+
resetResponse = await client.DeleteAsync($"/api/v3/admin/users/name/{publisher.Username}/reviews");
545+
Assert.That(resetResponse.IsSuccessStatusCode, Is.True);
546+
Assert.That(context.Database.GetTotalReviewsByUser(publisher), Is.Zero);
547+
}
522548
}

0 commit comments

Comments
 (0)