Browse Source

fix(tests): 修复单元测试

pull/1166/head
colin 10 months ago
parent
commit
aa5f52d533
  1. 8
      aspnet-core/tests/LINGYUN.Abp.DataProtection.Tests/LINGYUN/Abp/DataProtection/EfCoreFakeProtectionObjectRepository.cs
  2. 24
      aspnet-core/tests/LINGYUN.Abp.DataProtection.Tests/LINGYUN/Abp/DataProtection/ProtectionFieldTests.cs
  3. 16
      aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Authorize/WeChatWorkAuthorizeGenerator_Tests.cs
  4. 11
      aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Authorize/WeChatWorkUserFinder_Tests.cs
  5. 29
      aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Media/WeChatWorkMediaProvider_Tests.cs
  6. 2
      aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkMessageManager_Tests.cs

8
aspnet-core/tests/LINGYUN.Abp.DataProtection.Tests/LINGYUN/Abp/DataProtection/EfCoreFakeProtectionObjectRepository.cs

@ -2,7 +2,6 @@
using LINGYUN.Abp.DataProtection.EntityFrameworkCore; using LINGYUN.Abp.DataProtection.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore;
@ -13,10 +12,11 @@ namespace LINGYUN.Abp.DataProtection
IFakeProtectionObjectRepository IFakeProtectionObjectRepository
{ {
public EfCoreFakeProtectionObjectRepository( public EfCoreFakeProtectionObjectRepository(
[NotNull] IDbContextProvider<AbpDataProtectionTestDbContext> dbContextProvider, [NotNull] IDbContextProvider<AbpDataProtectionTestDbContext> dbContextProvider,
[NotNull] IDataAuthorizationService dataAuthorizationService, [NotNull] IDataAuthorizationService dataAuthorizationService,
[NotNull] IEntityTypeFilterBuilder entityTypeFilterBuilder) [NotNull] IEntityTypeFilterBuilder entityTypeFilterBuilder,
: base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder) [NotNull] IEntityPropertyResultBuilder entityPropertyResultBuilder)
: base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder, entityPropertyResultBuilder)
{ {
} }

24
aspnet-core/tests/LINGYUN.Abp.DataProtection.Tests/LINGYUN/Abp/DataProtection/ProtectionFieldTests.cs

@ -99,41 +99,41 @@ namespace LINGYUN.Abp.DataProtection
// role2规则 // role2规则
var rule2FilterGroup = new DataAccessFilterGroup(); var rule2FilterGroup = new DataAccessFilterGroup();
// 只允许查询Num3小于等于400 // 只允许查询Num3小于等于400
rule2FilterGroup.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.Num3), 400, DataAccessFilterOperate.LessOrEqual)); rule2FilterGroup.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.Num3), 400, typeof(int).FullName, "number", DataAccessFilterOperate.LessOrEqual));
_store.Set(new DataAccessResource(RolePermissionValueProvider.ProviderName, "role2", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, rule2FilterGroup)); await _store.SetAsync(new DataAccessResource(RolePermissionValueProvider.ProviderName, "role2", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, rule2FilterGroup));
// role3编辑规则 // role3编辑规则
var rule3WriteAccess = new DataAccessFilterGroup(); var rule3WriteAccess = new DataAccessFilterGroup();
// 只允许编辑自己提交的数据 // 只允许编辑自己提交的数据
rule3WriteAccess.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.CreatorId), DataAccessCurrentUserContributor.Name, DataAccessFilterOperate.Equal)); rule3WriteAccess.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.CreatorId), DataAccessCurrentUserContributor.Name, typeof(Guid?).FullName, "string", DataAccessFilterOperate.Equal));
var rule3WriteAccessCacheItem = new DataAccessResource(RolePermissionValueProvider.ProviderName, "role3", typeof(FakeProtectionObject).FullName, DataAccessOperation.Write, rule3WriteAccess); var rule3WriteAccessCacheItem = new DataAccessResource(RolePermissionValueProvider.ProviderName, "role3", typeof(FakeProtectionObject).FullName, DataAccessOperation.Write, rule3WriteAccess);
// 只允许编辑Num3字段 // 只允许编辑Num3字段
rule3WriteAccessCacheItem.AllowProperties.AddRange(new string[] { nameof(FakeProtectionObject.Num3) }); rule3WriteAccessCacheItem.AccessedProperties.AddRange(new string[] { nameof(FakeProtectionObject.Num3) });
_store.Set(rule3WriteAccessCacheItem); await _store.SetAsync(rule3WriteAccessCacheItem);
// role1读取规则 // role1读取规则
var rule1ReadAccess = new DataAccessFilterGroup(); var rule1ReadAccess = new DataAccessFilterGroup();
// 只允许读取自己提交的数据 // 只允许读取自己提交的数据
rule1ReadAccess.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.CreatorId), DataAccessCurrentUserContributor.Name, DataAccessFilterOperate.Equal)); rule1ReadAccess.AddRule(new DataAccessFilterRule(nameof(FakeProtectionObject.CreatorId), DataAccessCurrentUserContributor.Name, typeof(Guid?).FullName, "string", DataAccessFilterOperate.Equal));
var rule1ReadAccessCacheItem = new DataAccessResource(RolePermissionValueProvider.ProviderName, "role1", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, rule1ReadAccess); var rule1ReadAccessCacheItem = new DataAccessResource(RolePermissionValueProvider.ProviderName, "role1", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, rule1ReadAccess);
// 只允许读取Num3字段 // 只允许读取Num3字段
rule1ReadAccessCacheItem.AllowProperties.AddRange(new string[] { nameof(FakeProtectionObject.Id), nameof(FakeProtectionObject.Num3) }); rule1ReadAccessCacheItem.AccessedProperties.AddRange(new string[] { nameof(FakeProtectionObject.Id), nameof(FakeProtectionObject.Num3) });
_store.Set(rule1ReadAccessCacheItem); await _store.SetAsync(rule1ReadAccessCacheItem);
// ou1读取规则 // ou1读取规则
var ou1ReadAccess = new DataAccessFilterGroup(); var ou1ReadAccess = new DataAccessFilterGroup();
// 允许读本部门及下级部门数据 // 允许读本部门及下级部门数据
// 获取部门树结构列表, 便利增加多个部门条件集 // 获取部门树结构列表, 便利增加多个部门条件集
ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.CreatorId)}", new List<Guid?>() { validUser, Guid.NewGuid() }, DataAccessFilterOperate.Contains, true)); ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.CreatorId)}", new List<Guid?>() { validUser, Guid.NewGuid() }, typeof(Guid?).FullName, "string", DataAccessFilterOperate.Contains, true));
//ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.ExtraProperties)}.{DataAccessKeywords.AUTH_ORGS}", "[00001]", DataAccessFilterOperate.Contains)); //ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.ExtraProperties)}.{DataAccessKeywords.AUTH_ORGS}", "[00001]", DataAccessFilterOperate.Contains));
//ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.ExtraProperties)}.{DataAccessKeywords.AUTH_ORGS}", "[00001.00002]", DataAccessFilterOperate.Contains)); //ou1ReadAccess.AddRule(new DataAccessFilterRule($"{nameof(FakeProtectionObject.ExtraProperties)}.{DataAccessKeywords.AUTH_ORGS}", "[00001.00002]", DataAccessFilterOperate.Contains));
var ou1ReadAccessCacheItem = new DataAccessResource(OrganizationUnitPermissionValueProvider.ProviderName, "00001", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, ou1ReadAccess); var ou1ReadAccessCacheItem = new DataAccessResource(OrganizationUnitPermissionValueProvider.ProviderName, "00001", typeof(FakeProtectionObject).FullName, DataAccessOperation.Read, ou1ReadAccess);
// 只允许读取Num3字段 // 只允许读取Num3字段
ou1ReadAccessCacheItem.AllowProperties.AddRange(new string[] { nameof(FakeProtectionObject.Id), nameof(FakeProtectionObject.Num3) }); ou1ReadAccessCacheItem.AccessedProperties.AddRange(new string[] { nameof(FakeProtectionObject.Id), nameof(FakeProtectionObject.Num3) });
_store.Set(ou1ReadAccessCacheItem); await _store.SetAsync(ou1ReadAccessCacheItem);
}); });
await WithUnitOfWorkAsync(async () => await WithUnitOfWorkAsync(async () =>
@ -213,7 +213,7 @@ namespace LINGYUN.Abp.DataProtection
var entity = await _repository.FindAsync(1); var entity = await _repository.FindAsync(1);
var resultBuilder = GetRequiredService<IEntityPropertyResultBuilder>(); var resultBuilder = GetRequiredService<IEntityPropertyResultBuilder>();
var exp = resultBuilder.Build(typeof(FakeProtectionObject), DataAccessOperation.Read); var exp = await resultBuilder.Build(typeof(FakeProtectionObject), DataAccessOperation.Read);
var comp = exp.Compile(); var comp = exp.Compile();
// 使用非泛型接口编译表达式树,对返回结果进行替换 // 使用非泛型接口编译表达式树,对返回结果进行替换
var resultEntity = comp.DynamicInvoke(entity).As<FakeProtectionObject>(); var resultEntity = comp.DynamicInvoke(entity).As<FakeProtectionObject>();

16
aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Authorize/WeChatWorkAuthorizeGenerator_Tests.cs

@ -1,6 +1,4 @@
using LINGYUN.Abp.WeChat.Work.Settings; using System.Threading.Tasks;
using Shouldly;
using System.Threading.Tasks;
using Volo.Abp.Settings; using Volo.Abp.Settings;
namespace LINGYUN.Abp.WeChat.Work.Authorize; namespace LINGYUN.Abp.WeChat.Work.Authorize;
@ -16,20 +14,19 @@ public class WeChatWorkAuthorizeGenerator_Tests : AbpWeChatWorkTestBase
} }
[Theory] [Theory]
[InlineData("1000002", "http://api.3dept.com/cgi-bin/query?action=get", "sdjnvh83tg93fojve2g92gyuh29", "code", "snsapi_privateinfo")] [InlineData("http://api.3dept.com/cgi-bin/query?action=get", "sdjnvh83tg93fojve2g92gyuh29", "code", "snsapi_privateinfo")]
public async Task GenerateOAuth2Authorize_Test( public async Task GenerateOAuth2Authorize_Test(
string agentid,
string redirectUri, string redirectUri,
string state, string state,
string responseType = "code", string responseType = "code",
string scope = "snsapi_base") string scope = "snsapi_base")
{ {
var url = await AuthorizeGenerator.GenerateOAuth2AuthorizeAsync(agentid, redirectUri, state, responseType, scope); var url = await AuthorizeGenerator.GenerateOAuth2AuthorizeAsync(redirectUri, state, responseType, scope);
url.ShouldNotBeNullOrWhiteSpace(); url.ShouldNotBeNullOrWhiteSpace();
} }
[Theory] [Theory]
[InlineData("1000002", "http://api.3dept.com/cgi-bin/query?action=get", "sdjnvh83tg93fojve2g92gyuh29", "CorpApp", "zh")] [InlineData("http://api.3dept.com/cgi-bin/query?action=get", "sdjnvh83tg93fojve2g92gyuh29", "CorpApp", "zh")]
public async Task GenerateOAuth2Login_Test( public async Task GenerateOAuth2Login_Test(
string agentid, string agentid,
string redirectUri, string redirectUri,
@ -37,10 +34,7 @@ public class WeChatWorkAuthorizeGenerator_Tests : AbpWeChatWorkTestBase
string loginType = "CorpApp", string loginType = "CorpApp",
string lang = "zh") string lang = "zh")
{ {
var corpId = await SettingProvider.GetOrNullAsync(WeChatWorkSettingNames.Connection.CorpId); var url = await AuthorizeGenerator.GenerateOAuth2LoginAsync(redirectUri, state, loginType, agentid, lang);
corpId.ShouldNotBeNullOrWhiteSpace();
var url = await AuthorizeGenerator.GenerateOAuth2LoginAsync(corpId, redirectUri, state, loginType, agentid, lang);
url.ShouldNotBeNullOrWhiteSpace(); url.ShouldNotBeNullOrWhiteSpace();
} }
} }

11
aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Authorize/WeChatWorkUserFinder_Tests.cs

@ -1,5 +1,4 @@
using Shouldly; using System.Threading.Tasks;
using System.Threading.Tasks;
namespace LINGYUN.Abp.WeChat.Work.Authorize; namespace LINGYUN.Abp.WeChat.Work.Authorize;
public class WeChatWorkUserFinder_Tests : AbpWeChatWorkTestBase public class WeChatWorkUserFinder_Tests : AbpWeChatWorkTestBase
@ -11,16 +10,16 @@ public class WeChatWorkUserFinder_Tests : AbpWeChatWorkTestBase
} }
[Theory] [Theory]
[InlineData("1000002", "nuE7XPAh5AJbQ4SawxH0OmUHO_9PzRD-PSghQafeU3A")] [InlineData("nuE7XPAh5AJbQ4SawxH0OmUHO_9PzRD-PSghQafeU3A")]
public async Task GetUserInfo_Test(string agentid, string code) public async Task GetUserInfo_Test(string code)
{ {
var userInfo = await WeChatWorkUserFinder.GetUserInfoAsync(agentid, code); var userInfo = await WeChatWorkUserFinder.GetUserInfoAsync(code);
userInfo.ShouldNotBeNull(); userInfo.ShouldNotBeNull();
userInfo.UserId.ShouldNotBeNullOrWhiteSpace(); userInfo.UserId.ShouldNotBeNullOrWhiteSpace();
userInfo.UserTicket.ShouldNotBeNullOrWhiteSpace(); userInfo.UserTicket.ShouldNotBeNullOrWhiteSpace();
var userDetail = await WeChatWorkUserFinder.GetUserDetailAsync(agentid, userInfo.UserTicket); var userDetail = await WeChatWorkUserFinder.GetUserDetailAsync(userInfo.UserTicket);
userDetail.ShouldNotBeNull(); userDetail.ShouldNotBeNull();
userDetail.UserId.ShouldBe(userInfo.UserId); userDetail.UserId.ShouldBe(userInfo.UserId);

29
aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Media/WeChatWorkMediaProvider_Tests.cs

@ -1,5 +1,4 @@
using Shouldly; using System.IO;
using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Content; using Volo.Abp.Content;
@ -13,48 +12,48 @@ public class WeChatWorkMediaProvider_Tests : AbpWeChatWorkTestBase
} }
[Theory] [Theory]
[InlineData("1000002", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")] [InlineData("D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")]
public async Task Get_Media_Test(string agentid, string fileName) public async Task Get_Media_Test(string fileName)
{ {
var fileInfo = new FileInfo(fileName); var fileInfo = new FileInfo(fileName);
using var fileStream = fileInfo.OpenRead(); using var fileStream = fileInfo.OpenRead();
var uploadMedia = new RemoteStreamContent(fileStream, fileInfo.Name); var uploadMedia = new RemoteStreamContent(fileStream, fileInfo.Name);
var uploadResponse = await MediaProvider.UploadAsync(agentid, "image", uploadMedia); var uploadResponse = await MediaProvider.UploadAsync("image", uploadMedia);
uploadResponse.IsSuccessed.ShouldBeTrue(); uploadResponse.IsSuccessed.ShouldBeTrue();
uploadResponse.MediaId.ShouldNotBeNullOrEmpty(); uploadResponse.MediaId.ShouldNotBeNullOrEmpty();
var getResponse = await MediaProvider.GetAsync(agentid, uploadResponse.MediaId); var getResponse = await MediaProvider.GetAsync(uploadResponse.MediaId);
getResponse.ShouldNotBeNull(); getResponse.ShouldNotBeNull();
getResponse.ContentLength.ShouldNotBeNull(); getResponse.ContentLength.ShouldNotBeNull();
getResponse.ContentLength.ShouldBe(uploadMedia.ContentLength); getResponse.ContentLength.ShouldBe(uploadMedia.ContentLength);
} }
[Theory] [Theory]
[InlineData("1000002", "image", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")] [InlineData("image", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")]
[InlineData("1000002", "voice", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\voice.amr")] [InlineData("voice", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\voice.amr")]
[InlineData("1000002", "video", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\video.mp4")] [InlineData("video", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\video.mp4")]
[InlineData("1000002", "file", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\file.txt")] [InlineData("file", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\file.txt")]
public async Task Upload_Media_Test(string agentid, string type, string fileName) public async Task Upload_Media_Test(string type, string fileName)
{ {
var fileInfo = new FileInfo(fileName); var fileInfo = new FileInfo(fileName);
using var fileStream = fileInfo.OpenRead(); using var fileStream = fileInfo.OpenRead();
var media = new RemoteStreamContent(fileStream, fileInfo.Name); var media = new RemoteStreamContent(fileStream, fileInfo.Name);
var response = await MediaProvider.UploadAsync(agentid, type, media); var response = await MediaProvider.UploadAsync(type, media);
response.IsSuccessed.ShouldBeTrue(); response.IsSuccessed.ShouldBeTrue();
response.MediaId.ShouldNotBeNullOrEmpty(); response.MediaId.ShouldNotBeNullOrEmpty();
} }
[Theory] [Theory]
[InlineData("1000002", "D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")] [InlineData("D:\\Projects\\Development\\Abp\\WeChat\\Work\\image.jpg")]
public async Task Upload_Image_Test(string agentid, string fileName) public async Task Upload_Image_Test( string fileName)
{ {
var fileInfo = new FileInfo(fileName); var fileInfo = new FileInfo(fileName);
using var fileStream = fileInfo.OpenRead(); using var fileStream = fileInfo.OpenRead();
var media = new RemoteStreamContent(fileStream, fileInfo.Name); var media = new RemoteStreamContent(fileStream, fileInfo.Name);
var response = await MediaProvider.UploadImageAsync(agentid, media); var response = await MediaProvider.UploadImageAsync(media);
response.IsSuccessed.ShouldBeTrue(); response.IsSuccessed.ShouldBeTrue();
response.Url.ShouldNotBeNullOrEmpty(); response.Url.ShouldNotBeNullOrEmpty();
} }

2
aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkMessageManager_Tests.cs

@ -26,7 +26,7 @@ public class WeChatWorkMessageManager_Tests : AbpWeChatWorkTestBase
var response = await Sender.SendAsync(message); var response = await Sender.SendAsync(message);
response.IsSuccessed.ShouldBeTrue(); response.IsSuccessed.ShouldBeTrue();
var recallRet = await Manager.ReCallMessageAsync(agentId, response.MsgId); var recallRet = await Manager.ReCallMessageAsync(response.MsgId);
recallRet.ShouldBeTrue(); recallRet.ShouldBeTrue();
} }
} }

Loading…
Cancel
Save