in foreign/csharp/Iggy_SDK_Tests/ContractTests/TcpContract.cs [260:338]
public void TcpContracts_UpdatePermissions_HasCorrectBytes()
{
// Arrange
var request = new UpdateUserPermissionsRequest
{
UserId = Identifier.Numeric(1),
Permissions = PermissionsFactory.CreatePermissions()
};
// Act
var result = TcpContracts.UpdatePermissions(request);
// Assert
int position = 2;
var userIdBytes = result[position..(position + request.UserId.Length)];
position += request.UserId.Length;
Assert.Equal(request.UserId.Value, userIdBytes);
var permissionsFlag = result[position];
position += 1;
if (permissionsFlag == 1)
{
var permissionsSize = BinaryPrimitives.ReadInt32LittleEndian(result[position..(position + 4)]);
position += 4;
var permissionsBytes = result[position..(position + permissionsSize)];
var mappedPermissions = PermissionsFactory.PermissionsFromBytes(permissionsBytes);
request.Permissions.Global.Should().BeEquivalentTo(mappedPermissions.Global);
if (request.Permissions.Streams != null)
{
Assert.NotNull(mappedPermissions.Streams);
foreach (var (streamId, stream) in request.Permissions.Streams)
{
Assert.True(mappedPermissions.Streams.ContainsKey(streamId));
var mappedStream = mappedPermissions.Streams[streamId];
Assert.Equal(stream.ManageStream, mappedStream.ManageStream);
Assert.Equal(stream.ReadStream, mappedStream.ReadStream);
Assert.Equal(stream.ManageTopics, mappedStream.ManageTopics);
Assert.Equal(stream.ReadTopics, mappedStream.ReadTopics);
Assert.Equal(stream.PollMessages, mappedStream.PollMessages);
Assert.Equal(stream.SendMessages, mappedStream.SendMessages);
if (stream.Topics != null)
{
Assert.NotNull(mappedStream.Topics);
foreach (var (topicId, topic) in stream.Topics)
{
Assert.True(mappedStream.Topics.ContainsKey(topicId));
var mappedTopic = mappedStream.Topics[topicId];
Assert.Equal(topic.ManageTopic, mappedTopic.ManageTopic);
Assert.Equal(topic.ReadTopic, mappedTopic.ReadTopic);
Assert.Equal(topic.PollMessages, mappedTopic.PollMessages);
Assert.Equal(topic.SendMessages, mappedTopic.SendMessages);
}
}
else
{
Assert.Null(mappedStream.Topics);
}
}
}
else
{
Assert.Null(mappedPermissions.Streams);
}
}
else
{
Assert.Null(request.Permissions);
}
}