frostfs-sdk-csharp/src/FrostFS.SDK.Tests/Unit/SessionTests.cs
Pavel Gross 87fe8db674 [#43] Client: Memory optimization
Signed-off-by: Pavel Gross <p.gross@yadro.com>
2025-03-31 11:40:04 +03:00

77 lines
No EOL
2.8 KiB
C#

using System.Diagnostics.CodeAnalysis;
using FrostFS.SDK.Client;
using FrostFS.SDK.Client.Mappers.GRPC;
namespace FrostFS.SDK.Tests.Unit;
[SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "Default Value is correct for tests")]
public class SessionTest : SessionTestsBase
{
[Theory]
[InlineData(false)]
[InlineData(true)]
public async void CreateSessionTest(bool useContext)
{
var exp = 100u;
PrmSessionCreate param;
CallContext ctx;
if (useContext)
{
ctx = new CallContext(TimeSpan.FromSeconds(20), Mocker.CancellationTokenSource.Token);
param = new PrmSessionCreate(exp, ["headerKey1", "headerValue1"]);
}
else
{
ctx = default;
param = new PrmSessionCreate(exp);
}
var validTimeoutFrom = DateTime.UtcNow.AddSeconds(20);
var result = await GetClient().CreateSessionAsync(param, ctx);
var validTimeoutTo = DateTime.UtcNow.AddSeconds(20);
Assert.NotNull(result);
Assert.NotEqual(Guid.Empty, result.Id);
Assert.Equal(Mocker.SessionId, result.Id.ToByteArray(true));
Assert.Equal(Mocker.SessionKey, result.SessionKey.ToArray());
//Assert.Equal(OwnerId.ToMessage(), result.Token.Body.OwnerId);
//Assert.Equal(exp, result.Token.Body.Lifetime.Exp);
//Assert.Equal(exp, result.Token.Body.Lifetime.Iat);
//Assert.Equal(exp, result.Token.Body.Lifetime.Nbf);
//Assert.Null(result.Token.Body.Container);
Assert.NotNull(Mocker.CreateSessionRequest);
Assert.Equal(OwnerId.ToMessage(), Mocker.CreateSessionRequest.Body.OwnerId);
Assert.Equal(exp, Mocker.CreateSessionRequest.Body.Expiration);
Assert.NotNull(Mocker.CreateSessionRequest.MetaHeader);
Assert.Equal(Mocker.Version.ToMessage(), Mocker.CreateSessionRequest.MetaHeader.Version);
Assert.Null(Mocker.Metadata);
if (useContext)
{
Assert.Single(Mocker.CreateSessionRequest.MetaHeader.XHeaders);
Assert.Equal(param.XHeaders[0], Mocker.CreateSessionRequest.MetaHeader.XHeaders.First().Key);
Assert.Equal(param.XHeaders[1], Mocker.CreateSessionRequest.MetaHeader.XHeaders.First().Value);
Assert.Equal(Mocker.CancellationTokenSource.Token, Mocker.CancellationToken);
Assert.NotNull(Mocker.DateTime);
Assert.True(Mocker.DateTime.Value >= validTimeoutFrom);
Assert.True(Mocker.DateTime.Value <= validTimeoutTo);
Assert.True(validTimeoutTo.Ticks >= Mocker.DateTime.Value.Ticks);
}
else
{
Assert.Empty(Mocker.CreateSessionRequest.MetaHeader.XHeaders);
Assert.Null(Mocker.DateTime);
}
}
}