修改User模块,同步原始代码
This commit is contained in:
1 parent
4a5fada435
commit
78b0c2bb2e
47 files changed
+2939
-193
No files matched your search
@@ -0,0 +1,82 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using MAX.Framework.Commons;
|
||||
using Store.Users.Entities;
|
||||
|
||||
namespace Store.Users.Tests;
|
||||
|
||||
public sealed class UserTopUpTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Message_UsesCurrentIdentity_AndIsVisibleOnlyToOwnerOrAdmin()
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
context.CurrentUser.UserName = "main";
|
||||
var id = await context.Users.AddTopUpMessage(new() { Message = " 充值待核实 " }, default);
|
||||
var message = Assert.Single((await context.Users.TopUpMessages(new(), default)).Items);
|
||||
Assert.Equal(id, message.Id);
|
||||
Assert.Equal("main", message.UserName);
|
||||
Assert.Equal("main", message.NickName);
|
||||
Assert.Equal("充值待核实", message.Message);
|
||||
context.CurrentUser.UserName = "other";
|
||||
Assert.Empty((await context.Users.TopUpMessages(new(), default)).Items);
|
||||
context.CurrentUser.UserName = "admin";
|
||||
Assert.Single((await context.Users.TopUpMessages(new(), default)).Items);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ProcessingMessage_RequiresAdmin_AndDoesNotRechargeFunds()
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
context.CurrentUser.UserName = "main";
|
||||
var id = await context.Users.AddTopUpMessage(new() { Message = "充值待核实" }, default);
|
||||
var error = await Assert.ThrowsAsync<AppException>(() => context.Users.UpdateTopUpMessage(new() { Id = id, Result = "已核实" }, default));
|
||||
Assert.Equal(403, error.Code);
|
||||
context.CurrentUser.UserName = "admin";
|
||||
await context.Users.UpdateTopUpMessage(new() { Id = id, Result = "已核实" }, default);
|
||||
Assert.Equal("已核实", (await context.Users.TopUpMessages(new(), default)).Items.Single().Result);
|
||||
Assert.Equal(0m, (await context.Read("main")).Points);
|
||||
Assert.Equal(0, await context.Db.Select<UserPointsRecordEntity>().CountAsync());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task MissingMessage_CannotBeProcessed()
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
var error = await Assert.ThrowsAsync<AppException>(() => context.Users.UpdateTopUpMessage(new() { Id = 9999, Result = "已核实" }, default));
|
||||
Assert.Equal("充值备注不存在", error.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Qrcode_UpsertsByAgentCode_AndSupportsDataUri()
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
await context.Users.UpdateTopUpQrcode(new() { AgentCode = "agent", QrcodeBase64 = "aGVsbG8=" }, default);
|
||||
const string data = "data:image/png;base64,d29ybGQ=";
|
||||
await context.Users.UpdateTopUpQrcode(new() { AgentCode = " agent ", QrcodeBase64 = data }, default);
|
||||
Assert.Equal(data, await context.Users.GetTopUpQrcode("agent", default));
|
||||
Assert.Equal(1, await context.Db.Select<UserTopUpQrcodeEntity>().CountAsync());
|
||||
Assert.Null(await context.Users.GetTopUpQrcode("missing", default));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("invalid!")]
|
||||
[InlineData("data:image/png,abc")]
|
||||
[InlineData("data:image/png;base64,")]
|
||||
public async Task InvalidQrcode_DoesNotOverwriteStoredValue(string invalid)
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
await context.Users.UpdateTopUpQrcode(new() { AgentCode = "agent", QrcodeBase64 = "aGVsbG8=" }, default);
|
||||
await Assert.ThrowsAsync<ValidationException>(() => context.Users.UpdateTopUpQrcode(new() { AgentCode = "agent", QrcodeBase64 = invalid }, default));
|
||||
Assert.Equal("aGVsbG8=", await context.Users.GetTopUpQrcode("agent", default));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NonAdmin_CannotModifyQrcode()
|
||||
{
|
||||
using var context = new UserTestContext();
|
||||
context.CurrentUser.UserName = "main";
|
||||
var error = await Assert.ThrowsAsync<AppException>(() => context.Users.UpdateTopUpQrcode(new() { AgentCode = "agent", QrcodeBase64 = "aGVsbG8=" }, default));
|
||||
Assert.Equal(403, error.Code);
|
||||
Assert.Equal(0, await context.Db.Select<UserTopUpQrcodeEntity>().CountAsync());
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user