forked from gongxuegit/tiku-backend.net
feat: migrate direct tenant content and learning endpoints
This commit is contained in:
@@ -198,6 +198,58 @@ public sealed class AssetManagementEndpointTests
|
||||
Assert.Single(detail.RootElement.GetProperty("issues").EnumerateArray());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Tenant_admin_can_upsert_asset_sign_access_and_query_asset_events()
|
||||
{
|
||||
await using var factory = new ApiTestFactory(objectStorageService: new FakeObjectStorageService());
|
||||
var seed = await SeedAdminAsync(factory);
|
||||
using var client = factory.CreateClient();
|
||||
await LoginAsync(client, seed);
|
||||
|
||||
var upsertResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-content/assets",
|
||||
new UpsertAssetDto
|
||||
{
|
||||
Title = "管理侧资料",
|
||||
FileName = "admin.pdf",
|
||||
AssetType = "pdf",
|
||||
Visibility = "members",
|
||||
Provider = "local_dev",
|
||||
Bucket = "tenant-assets",
|
||||
ObjectKey = $"{seed.TenantId:N}/admin.pdf",
|
||||
PreviewObjectKey = $"{seed.TenantId:N}/admin-preview.pdf",
|
||||
MimeType = "application/pdf",
|
||||
FileSizeBytes = 512
|
||||
});
|
||||
var upsert = await ReadJsonAsync(upsertResponse);
|
||||
var assetId = upsert.RootElement.GetProperty("item").GetProperty("id").GetGuid();
|
||||
await factory.SeedAsync(new ContentAssetSecurityScanEvent
|
||||
{
|
||||
TenantId = seed.TenantId,
|
||||
AssetId = assetId,
|
||||
Provider = "local",
|
||||
ScanStatus = AssetSecurityScanStatus.Passed,
|
||||
RiskLevel = AssetSecurityRiskLevel.None
|
||||
});
|
||||
|
||||
var downloadResponse = await client.PostAsJsonAsync(
|
||||
"/api/tenant-content/assets/sign-download",
|
||||
new AssetAccessSignDto { AssetId = assetId, ExpiresInSeconds = 120 });
|
||||
var previewResponse = await client.PostAsJsonAsync(
|
||||
"/api/tenant-content/assets/sign-preview",
|
||||
new AssetAccessSignDto { AssetId = assetId, ExpiresInSeconds = 120 });
|
||||
var accessEventsResponse = await client.GetAsync($"/api/tenant-content/assets/access-events?assetId={assetId}");
|
||||
var scanEventsResponse = await client.GetAsync($"/api/tenant-content/assets/security-scan-events?assetId={assetId}");
|
||||
var accessEvents = await ReadJsonAsync(accessEventsResponse);
|
||||
var scanEvents = await ReadJsonAsync(scanEventsResponse);
|
||||
|
||||
Assert.Equal(HttpStatusCode.OK, upsertResponse.StatusCode);
|
||||
Assert.Equal(HttpStatusCode.OK, downloadResponse.StatusCode);
|
||||
Assert.Equal(HttpStatusCode.OK, previewResponse.StatusCode);
|
||||
Assert.Equal(2, accessEvents.RootElement.GetProperty("items").GetArrayLength());
|
||||
Assert.Single(scanEvents.RootElement.GetProperty("items").EnumerateArray());
|
||||
}
|
||||
|
||||
private static async Task<(Guid TenantId, Guid UserId, string Phone)> SeedAdminAsync(ApiTestFactory factory)
|
||||
{
|
||||
var tenantId = Guid.NewGuid();
|
||||
|
||||
Reference in New Issue
Block a user