feat(work): 升级公共组件

This commit is contained in:
Fu Diwei
2024-01-29 23:12:28 +08:00
committed by RHQYZ
parent 43eeb6fe6e
commit 84ee19d614
267 changed files with 3026 additions and 2972 deletions

View File

@@ -0,0 +1,56 @@
using System;
using System.IO;
using System.Reflection;
using SKIT.FlurlHttpClient.Tools.CodeAnalyzer;
using Xunit;
namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
{
public class CodeAnalyzeTests
{
[Fact(DisplayName = "代码质量分析")]
public void CodeAnalyze()
{
Assert.Null(Record.Exception(() =>
{
var options = new TypeDeclarationAnalyzerOptions()
{
SdkAssembly = Assembly.GetAssembly(typeof(WechatWorkClient))!,
SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Models",
SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Models",
SdkExecutingExtensionDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work",
SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Events",
ThrowOnNotFoundRequestModelTypes = true,
ThrowOnNotFoundResponseModelTypes = true,
ThrowOnNotFoundExecutingExtensionTypes = true,
ThrowOnNotFoundWebhookEventTypes = true
};
new TypeDeclarationAnalyzer(options).AssertNoIssues();
}));
Assert.Null(Record.Exception(() =>
{
string workdir = Environment.CurrentDirectory;
string projdir = Path.Combine(workdir, "../../../../../");
var options = new SourceFileAnalyzerOptions()
{
SdkAssembly = Assembly.GetAssembly(typeof(WechatWorkClient))!,
SdkRequestModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Models",
SdkResponseModelDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Models",
SdkWebhookEventDeclarationNamespace = "SKIT.FlurlHttpClient.Wechat.Work.Events",
ProjectSourceRootDirectory = Path.Combine(projdir, "./src/SKIT.FlurlHttpClient.Wechat.Work/"),
ProjectTestRootDirectory = Path.Combine(projdir, "./test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/"),
ThrowOnNotFoundRequestModelClassCodeFiles = true,
ThrowOnNotFoundResponseModelClassCodeFiles = true,
ThrowOnNotFoundExecutingExtensionClassCodeFiles = true,
ThrowOnNotFoundWebhookEventClassCodeFiles = true,
ThrowOnNotFoundRequestModelSerializationSampleFiles = true,
ThrowOnNotFoundResponseModelSerializationSampleFiles = true,
ThrowOnNotFoundWebhookEventSerializationSampleFiles = true
};
new SourceFileAnalyzer(options).AssertNoIssues();
}));
}
}
}

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472; net6.0</TargetFrameworks>
@@ -10,24 +10,24 @@
<ItemGroup>
<None Remove=".gitignore" />
<Content Include="appsettings.json">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</Content>
<Content Include="appsettings.*.json" Condition="'$(Configuration)' == 'Debug'">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="appsettings.*.json" Condition="'$(Configuration)' == 'Debug'">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</Content>
<Content Include="ModelSamples/**/*.json" />
<Content Include="EventSamples/**/*.json" />
<Content Include="EventSamples/**/*.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Tools.CodeAnalyzer" Version="0.1.0-alpha.1" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Tools.CodeAnalyzer" Version="0.3.0-preview.1" />
<PackageReference Include="xunit" Version="2.6.6" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@@ -1,28 +0,0 @@
using SKIT.FlurlHttpClient.Tools.CodeAnalyzer;
using Xunit;
namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
{
public class TestCase_CodeReview
{
[Fact(DisplayName = "测试用例:代码质量分析")]
public void TestCodeAnalyzer()
{
Assert.Null(Record.Exception(() =>
{
CodeAnalyzerOptions options = new CodeAnalyzerOptions()
{
AssemblyName = "SKIT.FlurlHttpClient.Wechat.Work",
WorkDirectoryForSourceCode = TestConfigs.WorkDirectoryForSdk,
WorkDirectoryForTestSample = TestConfigs.WorkDirectoryForTest,
AllowNotFoundEventTypes = true,
AllowNotFoundEventSamples = true
};
CodeAnalyzer analyzer = new CodeAnalyzer(options);
analyzer.Start();
analyzer.Assert();
analyzer.Flush();
}));
}
}
}

View File

@@ -1,5 +1,4 @@
using System.Threading.Tasks;
using Flurl.Http.Configuration;
using Xunit;
namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
@@ -103,12 +102,12 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
[Fact(DisplayName = "测试用例:聊天记录 - 会话内容存档数据结构反序列化")]
public void TestFinanceSdkModelsDeserialization()
{
var newtonsoftJsonSerializer = new FlurlNewtonsoftJsonSerializer();
var systemTextJsonSerializer = new FlurlSystemTextJsonSerializer();
var newtonsoftJsonSerializer = new NewtonsoftJsonSerializer();
var systemTextJsonSerializer = new SystemTextJsonSerializer();
#region
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""errcode"": 0,
@@ -137,7 +136,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = "{\"msgid\":\"MSGID\",\"action\":\"ACTION\",\"from\":\"FROM\",\"tolist\":[\"TO\"],\"roomid\":\"ROOMID\",\"msgtime\":1234567890}";
@@ -157,7 +156,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""CAQQluDa4QUY0On2rYSAgAMgzPrShAE="",
@@ -184,7 +183,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""CAQQvPnc4QUY0On2rYSAgAMgooLa0Q8="",
@@ -215,7 +214,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""15775510700152506326_1603875615"",
@@ -242,7 +241,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""8891446340739254950_1603875826"",
@@ -271,7 +270,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""10958372969718811103_1603875609"",
@@ -304,7 +303,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""17955920891003447432_1603875627"",
@@ -337,7 +336,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""13714216591700685558_1603875680"",
@@ -366,7 +365,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""2641513858500683770_1603876152"",
@@ -401,7 +400,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""6623217619416669654_1603875612"",
@@ -438,7 +437,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""18039699423706571225_1603875608"",
@@ -473,7 +472,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""11788441727514772650_1603875624"",
@@ -506,7 +505,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""11930598857592605935_1603875608"",
@@ -539,7 +538,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""11354299838102555191_1603875658"",
@@ -580,7 +579,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""11354299838102555191_1603875658"",
@@ -609,7 +608,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""11354299838102555191_1603875658"",
@@ -642,7 +641,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""2500536226619379797_1576034482"",
@@ -695,7 +694,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""333590477316965370_1603877439"",
@@ -728,7 +727,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""5935786683775673543_1603877328"",
@@ -769,7 +768,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""125289002219525886280"",
@@ -790,7 +789,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region - 线
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""9732089160923053207_1603877765"",
@@ -821,7 +820,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region - Markdown
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""7546287934688259248_1603875715"",
@@ -848,7 +847,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""2345881211604379705_1603877680"",
@@ -887,7 +886,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""DAQQluDa4QUY0On4kYSABAMgzPrShAE="",
@@ -921,7 +920,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""17952229780246929345_1594197637"",
@@ -969,7 +968,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""16527954622422422847_1594199256"",
@@ -1003,7 +1002,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""8632214264349267353_1603786184"",
@@ -1036,7 +1035,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""5702551662099334532_1619511584_external"",
@@ -1067,7 +1066,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""10950316726562067988_1666601563058"",
@@ -1096,7 +1095,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
#region -
{
static void AssertModelWithJsonSerializer(ISerializer serializer)
static void AssertModelWithJsonSerializer(IJsonSerializer serializer)
{
const string json = @"{
""msgid"": ""904076622482680588_1666602581569_external"",

View File

@@ -17,16 +17,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
using var stream = File.OpenRead("appsettings.local.json");
using var jdoc = JsonDocument.Parse(stream);
var config = jdoc.RootElement.GetProperty("TestConfig");
var config = jdoc.RootElement.GetProperty("TestConfigs");
WechatCorpId = config.GetProperty("CorpId").GetString()!;
WechatAgentId = int.Parse(config.GetProperty("AgentId").GetString()!);
WechatAgentSecret = config.GetProperty("AgentSecret").GetString()!;
WechatAccessToken = config.GetProperty("AccessToken").GetString()!;
WechatFinanceSecretKey = config.GetProperty("FinanceSecretKey").GetString()!;
WechatFinanceEncryptionPrivateKey = config.GetProperty("FinanceEncryptionPrivateKey").GetString()!;
WorkDirectoryForSdk = jdoc.RootElement.GetProperty("WorkDirectoryForSdk").GetString()!;
WorkDirectoryForTest = jdoc.RootElement.GetProperty("WorkDirectoryForTest").GetString()!;
}
catch (Exception ex)
{
@@ -40,8 +37,5 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.UnitTests
public static readonly string WechatAccessToken;
public static readonly string WechatFinanceSecretKey;
public static readonly string WechatFinanceEncryptionPrivateKey;
public static readonly string WorkDirectoryForSdk;
public static readonly string WorkDirectoryForTest;
}
}

View File

@@ -1,12 +1,10 @@
{
"TestConfig": {
"TestConfigs": {
"CorpId": "请在此填写用于测试的企业微信 CorpId",
"AgentId": "请在此填写用于测试的企业微信 AgentId",
"AgentSecret": "请在此填写用于测试的企业微信 AgentSecret",
"AccessToken": "请在此填写用于测试的企业微信 AccessToken",
"FinanceSecretKey": "请在此填写用于测试的企业微信会话内容存档 SecretKey",
"FinanceEncryptionPrivateKey": "请在此填写用于测试的企业微信会话内容存档消息加解密私钥"
},
"WorkDirectoryForSdk": "请输入当前 SDK 项目所在的目录完整路径,如 C:\\Project\\src\\SKIT.FlurlHttpClient.Wechat.Work\\",
"WorkDirectoryForTest": "请输入当前测试项目所在的目录完整路径,如 C:\\Project\\test\\SKIT.FlurlHttpClient.Wechat.Work.UnitTests\\"
}
}