Add binary-safe media storage seam

This commit is contained in:
Jacob Dubin
2026-05-17 16:47:58 -05:00
parent 14b5cb74cc
commit 9353e8d2e3
17 changed files with 390 additions and 38 deletions

View File

@@ -1,6 +1,7 @@
using System.Text.Json;
using Jibo.Cloud.Application.Services;
using Jibo.Cloud.Domain.Models;
using Jibo.Cloud.Infrastructure.Media;
using Jibo.Cloud.Infrastructure.Persistence;
namespace Jibo.Cloud.Tests.Protocol;
@@ -255,6 +256,47 @@ public sealed class JiboCloudProtocolServiceTests
Assert.Equal("binary-photo-placeholder", mediaGet.BodyText);
}
[Fact]
public async Task MediaCreate_PersistsBinaryContentThroughFileMediaStore()
{
var directoryPath = Path.Combine(Path.GetTempPath(), "OpenJibo.Media.Tests", Guid.NewGuid().ToString("N"));
var service = new JiboCloudProtocolService(new InMemoryCloudStateStore(),
new FileMediaContentStore(directoryPath));
var result = await service.DispatchAsync(new ProtocolEnvelope
{
HostName = "api.jibo.com",
Method = "POST",
ServicePrefix = "Media_20160725",
Operation = "Create",
Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
["Content-Type"] = "image/jpeg",
["x-path"] = "photo-blob-2",
["x-type"] = "image"
},
BodyText = "binary-photo-placeholder"
});
using var createdPayload = JsonDocument.Parse(result.BodyText);
Assert.Equal("https://api.jibo.com/media/photo-blob-2",
createdPayload.RootElement.GetProperty("url").GetString());
var storedFile = Path.Combine(directoryPath, "photo-blob-2.bin");
Assert.True(File.Exists(storedFile));
var mediaGet = await service.DispatchAsync(new ProtocolEnvelope
{
HostName = "api.jibo.com",
Method = "GET",
Path = "/media/photo-blob-2"
});
Assert.Equal(200, mediaGet.StatusCode);
Assert.Equal("image/jpeg", mediaGet.ContentType);
Assert.Equal("binary-photo-placeholder", mediaGet.BodyText);
}
[Fact]
public async Task KeyCreateSymmetricKey_ReturnsKeyPayload()
{