Fix push device registration

This commit is contained in:
sevenhill
2026-07-05 16:07:44 +03:00
parent bb92651714
commit 81dc918a50
5 changed files with 147 additions and 14 deletions
+39
View File
@@ -158,6 +158,45 @@ public sealed class ApiSmokeTests : IDisposable
Assert.Contains(chats, x => x.Title == "\u0410\u043d\u044e\u0442\u0430");
}
[Fact]
public async Task PushRegistrationUsesSingleExistingUserWhenTokenUserIsStale()
{
using var factory = _factory.WithWebHostBuilder(builder =>
{
builder.ConfigureTestServices(services =>
{
services.RemoveAll<IHostedService>();
});
});
using var client = factory.CreateClient();
await LoginAsync(client);
Guid currentUserId;
using (var scope = factory.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<QMaxDbContext>();
db.UserSessions.RemoveRange(db.UserSessions);
db.Users.RemoveRange(db.Users);
var currentUser = new User { DisplayName = "QMAX Owner" };
db.Users.Add(currentUser);
await db.SaveChangesAsync();
currentUserId = currentUser.Id;
}
var response = await client.PostAsJsonAsync(
"/api/push/devices",
new { FirebaseToken = "stale-token-user-fcm-token", Platform = "android" });
await AssertStatusAsync(HttpStatusCode.NoContent, response);
using (var scope = factory.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<QMaxDbContext>();
var device = await db.PushDevices.SingleAsync();
Assert.Equal(currentUserId, device.UserId);
Assert.Equal("stale-token-user-fcm-token", device.FirebaseToken);
}
}
[Fact]
public async Task SyncMergesLateDiscoveredAttachmentsIntoExistingMessage()
{