csharp-sdk-upm/Storage/Storage.Test/ACLTest.cs

101 lines
3.5 KiB
C#
Raw Normal View History

using NUnit.Framework;
using System.Threading.Tasks;
2020-05-27 14:33:55 +08:00
using System.Collections.ObjectModel;
2021-04-29 15:58:22 +08:00
using System;
2020-04-28 17:04:46 +08:00
using LeanCloud;
using LeanCloud.Storage;
2020-04-28 17:04:46 +08:00
namespace Storage.Test {
2021-04-29 15:58:22 +08:00
public class ACLTest : BaseTest {
private Account account;
[Test]
2021-04-29 15:58:22 +08:00
[Order(0)]
public async Task PrivateReadAndWrite() {
2021-04-29 15:58:22 +08:00
Account account = new Account();
account.ACL = new LCACL {
PublicReadAccess = false,
PublicWriteAccess = false
};
account.Balance = 1024;
await account.Save();
2021-04-29 15:58:22 +08:00
Assert.IsFalse(account.ACL.PublicReadAccess);
Assert.IsFalse(account.ACL.PublicWriteAccess);
}
[Test]
2021-04-29 15:58:22 +08:00
[Order(1)]
public async Task UserReadAndWrite() {
2021-04-29 15:58:22 +08:00
await LCUser.Login(TestPhone, TestPhone);
account = new Account();
LCUser currentUser = await LCUser.GetCurrent();
2021-04-29 15:58:22 +08:00
account.ACL = LCACL.CreateWithOwner(currentUser);
account.Balance = 512;
await account.Save();
2021-04-29 15:58:22 +08:00
Assert.IsTrue(account.ACL.GetUserReadAccess(currentUser));
Assert.IsTrue(account.ACL.GetUserWriteAccess(currentUser));
LCQuery<LCObject> query = new LCQuery<LCObject>("Account");
LCObject result = await query.Get(account.ObjectId);
TestContext.WriteLine(result.ObjectId);
Assert.NotNull(result.ObjectId);
await LCUser.Logout();
2021-04-09 14:24:04 +08:00
try {
await query.Get(account.ObjectId);
} catch (LCException e) {
Assert.AreEqual(e.Code, 403);
}
}
[Test]
2021-04-29 15:58:22 +08:00
[Order(2)]
public async Task RoleReadAndWrite() {
2021-04-29 15:58:22 +08:00
LCUser currentUser = await LCUser.Login(TestPhone, TestPhone);
string name = $"role_{DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()}";
LCACL roleACL = new LCACL();
roleACL.SetUserReadAccess(currentUser, true);
roleACL.SetUserWriteAccess(currentUser, true);
LCRole role = LCRole.Create(name, roleACL);
role.AddRelation("users", currentUser);
await role.Save();
account = new Account();
LCACL acl = new LCACL();
2021-04-29 15:58:22 +08:00
acl.SetRoleReadAccess(role, true);
acl.SetRoleWriteAccess(role, true);
account.ACL = acl;
await account.Save();
2021-04-29 15:58:22 +08:00
Assert.IsTrue(acl.GetRoleReadAccess(role));
Assert.IsTrue(acl.GetRoleWriteAccess(role));
}
[Test]
2021-04-29 15:58:22 +08:00
[Order(3)]
public async Task Query() {
2021-04-29 15:58:22 +08:00
await LCUser.Login(TestPhone, TestPhone);
LCQuery<LCObject> query = new LCQuery<LCObject>("Account");
2021-04-29 15:58:22 +08:00
Account queryAccount = (await query.Get(account.ObjectId)) as Account;
TestContext.WriteLine(queryAccount.ObjectId);
Assert.NotNull(queryAccount.ObjectId);
}
2020-05-27 14:33:55 +08:00
[Test]
2021-04-29 15:58:22 +08:00
[Order(4)]
2020-05-27 14:33:55 +08:00
public async Task Serialization() {
await LCUser.Login("hello", "world");
2020-05-27 14:33:55 +08:00
LCQuery<LCObject> query = new LCQuery<LCObject>("Account") {
IncludeACL = true
};
query.OrderByDescending("createdAt");
2020-05-27 14:33:55 +08:00
ReadOnlyCollection<LCObject> accounts = await query.Find();
foreach (LCObject account in accounts) {
TestContext.WriteLine($"public read access: {account.ACL.PublicReadAccess}");
TestContext.WriteLine($"public write access: {account.ACL.PublicWriteAccess}");
2020-05-27 14:33:55 +08:00
}
}
}
}