From c60905e9e7f992a7f8c79c3812e92a44b2d606f5 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Sun, 20 Sep 2026 22:59:00 +0800 Subject: feat(core): 建立 fund-lab 可运行基线 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [变更性质] - 本提交冻结当前可构建、可测试的应用基线,不包含 PostgreSQL 持久化。 [新增功能] - 建立 F# Domain、API、Worker、Web 及测试项目。 - 增加 Bearer 认证、健康检查、账本领域模型和中文空状态页面。 [实现方案] - 使用环境变量模板注入认证配置,并排除数据、凭证和构建产物。 - 保留 19 个 Domain 测试和 5 个 API 测试作为后续变更基准。 [影响范围] - 为后续 3a PostgreSQL FOF 创建/读取切片提供可回滚基线。 - 当前仍不接入真实基金数据、真实交易或数据库。 --- tests/FundLab.Api.Tests/ApiTests.fs | 24 +++++++++++++++++++++++ tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj | 25 ++++++++++++++++++++++++ tests/FundLab.Api.Tests/Program.fs | 5 +++++ 3 files changed, 54 insertions(+) create mode 100644 tests/FundLab.Api.Tests/ApiTests.fs create mode 100644 tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj create mode 100644 tests/FundLab.Api.Tests/Program.fs (limited to 'tests/FundLab.Api.Tests') diff --git a/tests/FundLab.Api.Tests/ApiTests.fs b/tests/FundLab.Api.Tests/ApiTests.fs new file mode 100644 index 0000000..a46d330 --- /dev/null +++ b/tests/FundLab.Api.Tests/ApiTests.fs @@ -0,0 +1,24 @@ +namespace FundLab.Api.Tests + +module ApiTests = + + open Xunit + open FundLab.Api + + [] + [] + [] + [] + let ``missing or wrong bearer token is unauthorized`` header = + Assert.Equal(AuthDecision.Unauthorized, Authentication.authorize "secret" header) + + [] + let ``matching bearer token is authorized`` () = + Assert.Equal(AuthDecision.Authorized, Authentication.authorize "secret" "Bearer secret") + + [] + let ``health payload is non-sensitive`` () = + let payload = Health.payload "fund-lab-api" + + Assert.Contains("\"status\":\"ok\"", payload) + Assert.DoesNotContain("secret", payload) diff --git a/tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj b/tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj new file mode 100644 index 0000000..ef9f063 --- /dev/null +++ b/tests/FundLab.Api.Tests/FundLab.Api.Tests.fsproj @@ -0,0 +1,25 @@ + + + net8.0 + Library + false + true + false + true + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + diff --git a/tests/FundLab.Api.Tests/Program.fs b/tests/FundLab.Api.Tests/Program.fs new file mode 100644 index 0000000..a139996 --- /dev/null +++ b/tests/FundLab.Api.Tests/Program.fs @@ -0,0 +1,5 @@ +module FundLab.Api.Tests.Program + +[] +let main _argv = + 0 -- cgit v1.2.3