feat(api): bind encrypted workspaces to accounts and devices
This commit is contained in:
1 parent
019b15041a
commit
c7d8ef15bc
49 files changed
+1904
-278
No files matched your search
@@ -0,0 +1,24 @@
|
||||
using WebDrop.Core;
|
||||
|
||||
namespace WebDrop.Core.Tests;
|
||||
public sealed class WorkspaceControlTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(ChannelMode.Enc)]
|
||||
[InlineData(ChannelMode.Raw)]
|
||||
public async Task ThreadStructureSurvivesContentExpiryAndEviction(ChannelMode mode)
|
||||
{
|
||||
using var env = new TestEnv(); var endpoint = TestEnv.Endpoint();
|
||||
var channel = env.Create(endpoint, mode, new ChannelSettings { TtlSeconds = 60, MaxItems = 1 });
|
||||
var id = TestEnv.NewId(); var control = FrameFlags.Final | FrameFlags.Control | (mode == ChannelMode.Enc ? FrameFlags.Enc : 0);
|
||||
var normal = FrameFlags.Final | (mode == ChannelMode.Enc ? FrameFlags.Enc : 0);
|
||||
int payload = mode == ChannelMode.Enc ? TestEnv.EncPayload : 16;
|
||||
await env.Service.AppendFrameAsync(channel.Id, channel.Owner(endpoint), TestEnv.Frame(id, 0, control, payload), null);
|
||||
env.Clock.Advance(TimeSpan.FromSeconds(59));
|
||||
for (int i = 0; i < 3; i++) await env.Service.AppendFrameAsync(channel.Id, channel.Owner(endpoint), TestEnv.Frame(TestEnv.NewId(), 0, normal, payload), null);
|
||||
env.Clock.Advance(TimeSpan.FromSeconds(2)); env.Service.Sweep();
|
||||
Assert.NotNull(env.Store.Read(tx => tx.GetItem(channel.Id, id)));
|
||||
Assert.Equal(1, env.Store.Read(tx => tx.CountControlItems(channel.Id)));
|
||||
Assert.Equal(1, env.Store.Read(tx => tx.CountItems(channel.Id)));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user