Skip to content

Commit 8369806

Browse files
Data nodes and local sync - Misc improvements 07/08 (#161)
1 parent 91dc5f5 commit 8369806

5 files changed

Lines changed: 87 additions & 43 deletions

File tree

src/ByteSync.Functions/Program.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,16 @@
9292
services.Configure<AppSettings>(appSettingsSection);
9393
var appSettings = appSettingsSection.Get<AppSettings>();
9494

95+
var logger = serviceProvider.GetService<ILogger<Program>>();
96+
if (logger != null && appSettings != null)
97+
{
98+
logger.LogInformation("AppSettings loaded - JwtDurationInSeconds: {JwtDuration}, " +
99+
"SkipClientsVersionCheck: {SkipCheck}, DefaultStorageProvider: {DefaultStorageProvider}",
100+
appSettings.JwtDurationInSeconds,
101+
appSettings.SkipClientsVersionCheck,
102+
appSettings.DefaultStorageProvider);
103+
}
104+
95105
services.AddClaimAuthorization();
96106
services.AddJwtAuthentication(appSettings!.Secret);
97107

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,54 @@
1+
using ByteSync.Common.Business.Sessions;
2+
using ByteSync.ServerCommon.Interfaces.Repositories;
13
using ByteSync.ServerCommon.Interfaces.Services;
4+
using ByteSync.ServerCommon.Interfaces.Services.Clients;
25
using MediatR;
6+
using Microsoft.Extensions.Logging;
37

48
namespace ByteSync.ServerCommon.Commands.CloudSessions;
59

610
public class ResetSessionCommandHandler : IRequestHandler<ResetSessionRequest, Unit>
711
{
8-
private readonly ICloudSessionsService _cloudSessionsService;
12+
private readonly ICloudSessionsRepository _cloudSessionsRepository;
13+
private readonly IInventoryService _inventoryService;
14+
private readonly ISynchronizationService _synchronizationService;
15+
private readonly ISharedFilesService _sharedFilesService;
16+
private readonly IInvokeClientsService _invokeClientsService;
17+
private readonly ILogger<ResetSessionCommandHandler> _logger;
918

10-
public ResetSessionCommandHandler(ICloudSessionsService cloudSessionsService)
19+
public ResetSessionCommandHandler(ICloudSessionsRepository cloudSessionsRepository,
20+
IInventoryService inventoryService, ISynchronizationService synchronizationService,
21+
ISharedFilesService sharedFilesService, IInvokeClientsService invokeClientsService,
22+
ILogger<ResetSessionCommandHandler> logger)
1123
{
12-
_cloudSessionsService = cloudSessionsService;
24+
_cloudSessionsRepository = cloudSessionsRepository;
25+
_inventoryService = inventoryService;
26+
_synchronizationService = synchronizationService;
27+
_sharedFilesService = sharedFilesService;
28+
_invokeClientsService = invokeClientsService;
29+
_logger = logger;
1330
}
1431

1532
public async Task<Unit> Handle(ResetSessionRequest request, CancellationToken cancellationToken)
1633
{
17-
await _cloudSessionsService.ResetSession(request.SessionId, request.Client);
34+
await _cloudSessionsRepository.Update(request.SessionId, cloudSessionData =>
35+
{
36+
cloudSessionData.ResetSession();
37+
38+
return true;
39+
});
40+
41+
await _inventoryService.ResetSession(request.SessionId);
42+
43+
await _synchronizationService.ResetSession(request.SessionId);
44+
45+
await _sharedFilesService.ClearSession(request.SessionId);
46+
47+
_logger.LogInformation("ResetSession: session {sessionId} reset by {clientInstanceId}", request.SessionId, request.Client.ClientInstanceId);
48+
49+
await _invokeClientsService.SessionGroupExcept(request.SessionId, request.Client)
50+
.SessionResetted(new BaseSessionDto(request.SessionId, request.Client.ClientInstanceId));
51+
1852
return Unit.Value;
1953
}
2054
}

src/ByteSync.ServerCommon/Interfaces/Services/ICloudSessionsService.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ public interface ICloudSessionsService
1919

2020
Task<List<SessionMemberInfoDTO>> GetSessionMembersInfosAsync(string sessionId);
2121

22-
Task<bool> ResetSession(string sessionId, Client client);
23-
2422
Task GiveCloudSessionPasswordExchangeKey(Client client, GiveCloudSessionPasswordExchangeKeyParameters parameters);
2523

2624
Task InformPasswordIsWrong(Client client, string sessionId, string clientInstanceId);

src/ByteSync.ServerCommon/Services/CloudSessionsService.cs

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using ByteSync.Common.Business.EndPoints;
2-
using ByteSync.Common.Business.Sessions;
32
using ByteSync.Common.Business.Sessions.Cloud;
43
using ByteSync.Common.Business.Sessions.Cloud.Connections;
54
using ByteSync.Common.Helpers;
@@ -17,22 +16,15 @@ namespace ByteSync.ServerCommon.Services;
1716
public class CloudSessionsService : ICloudSessionsService
1817
{
1918
private readonly ILogger<CloudSessionsService> _logger;
20-
private readonly ISharedFilesService _sharedFilesService;
2119
private readonly ICloudSessionsRepository _cloudSessionsRepository;
22-
private readonly ISynchronizationService _synchronizationService;
23-
private readonly IInventoryService _inventoryService;
2420
private readonly ISessionMemberMapper _sessionMemberConverter;
2521
private readonly IInvokeClientsService _invokeClientsService;
2622

27-
public CloudSessionsService(ILogger<CloudSessionsService> logger, ISharedFilesService sharedFilesService,
28-
ICloudSessionsRepository cloudSessionsRepository, ISynchronizationService synchronizationService, IInventoryService inventoryService,
23+
public CloudSessionsService(ILogger<CloudSessionsService> logger, ICloudSessionsRepository cloudSessionsRepository,
2924
ISessionMemberMapper sessionMemberConverter, IInvokeClientsService invokeClientsService)
3025
{
3126
_logger = logger;
32-
_sharedFilesService = sharedFilesService;
3327
_cloudSessionsRepository = cloudSessionsRepository;
34-
_synchronizationService = synchronizationService;
35-
_inventoryService = inventoryService;
3628
_sessionMemberConverter = sessionMemberConverter;
3729
_invokeClientsService = invokeClientsService;
3830
}
@@ -231,29 +223,6 @@ public async Task<List<SessionMemberInfoDTO>> GetSessionMembersInfosAsync(string
231223
return result;
232224
}
233225

234-
public async Task<bool> ResetSession(string sessionId, Client client)
235-
{
236-
await _cloudSessionsRepository.Update(sessionId, cloudSessionData =>
237-
{
238-
cloudSessionData.ResetSession();
239-
240-
return true;
241-
});
242-
243-
await _inventoryService.ResetSession(sessionId);
244-
245-
await _synchronizationService.ResetSession(sessionId);
246-
247-
await _sharedFilesService.ClearSession(sessionId);
248-
249-
_logger.LogInformation("ResetSession: session {sessionId} reset by {clientInstanceId}", sessionId, client.ClientInstanceId);
250-
251-
await _invokeClientsService.SessionGroupExcept(sessionId, client)
252-
.SessionResetted(new BaseSessionDto(sessionId, client.ClientInstanceId));
253-
254-
return true;
255-
}
256-
257226
public async Task<JoinSessionResult> AskJoinCloudSession(Client client, AskJoinCloudSessionParameters parameters)
258227
{
259228
if (!client.ClientInstanceId.Equals(parameters.JoinerClientInstanceId))
Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1+
using System;
12
using System.Threading;
23
using System.Threading.Tasks;
4+
using ByteSync.Common.Business.Sessions;
5+
using ByteSync.Common.Interfaces.Hub;
36
using ByteSync.ServerCommon.Business.Auth;
7+
using ByteSync.ServerCommon.Business.Repositories;
8+
using ByteSync.ServerCommon.Business.Sessions;
49
using ByteSync.ServerCommon.Commands.CloudSessions;
10+
using ByteSync.ServerCommon.Interfaces.Repositories;
511
using ByteSync.ServerCommon.Interfaces.Services;
12+
using ByteSync.ServerCommon.Interfaces.Services.Clients;
13+
using Microsoft.Extensions.Logging;
614
using Moq;
715
using NUnit.Framework;
816

@@ -12,20 +20,45 @@ namespace ByteSync.ServerCommon.Tests.Commands.CloudSessions;
1220
public class ResetSessionCommandHandlerTests
1321
{
1422
[Test]
15-
public async Task Handle_CallsService()
23+
public async Task Handle_CallsAllRequiredServices()
1624
{
1725
// Arrange
18-
var mockService = new Mock<ICloudSessionsService>();
26+
var mockCloudSessionsRepository = new Mock<ICloudSessionsRepository>();
27+
var mockInventoryService = new Mock<IInventoryService>();
28+
var mockSynchronizationService = new Mock<ISynchronizationService>();
29+
var mockSharedFilesService = new Mock<ISharedFilesService>();
30+
var mockInvokeClientsService = new Mock<IInvokeClientsService>();
31+
var mockLogger = new Mock<ILogger<ResetSessionCommandHandler>>();
32+
1933
var client = new Client();
2034
var sessionId = "session1";
21-
mockService.Setup(s => s.ResetSession(sessionId, client)).ReturnsAsync(true);
22-
var handler = new ResetSessionCommandHandler(mockService.Object);
35+
36+
mockCloudSessionsRepository.Setup(r => r.Update(sessionId, It.IsAny<Func<CloudSessionData, bool>>(), null, null))
37+
.ReturnsAsync(new UpdateEntityResult<CloudSessionData>(null, UpdateEntityStatus.Saved));
38+
mockInventoryService.Setup(s => s.ResetSession(sessionId)).Returns(Task.CompletedTask);
39+
mockSynchronizationService.Setup(s => s.ResetSession(sessionId)).Returns(Task.CompletedTask);
40+
mockSharedFilesService.Setup(s => s.ClearSession(sessionId)).Returns(Task.CompletedTask);
41+
mockInvokeClientsService.Setup(s => s.SessionGroupExcept(sessionId, client))
42+
.Returns(Mock.Of<IHubByteSyncPush>());
43+
44+
var handler = new ResetSessionCommandHandler(
45+
mockCloudSessionsRepository.Object,
46+
mockInventoryService.Object,
47+
mockSynchronizationService.Object,
48+
mockSharedFilesService.Object,
49+
mockInvokeClientsService.Object,
50+
mockLogger.Object);
51+
2352
var request = new ResetSessionRequest(sessionId, client);
2453

2554
// Act
2655
await handler.Handle(request, CancellationToken.None);
2756

2857
// Assert
29-
mockService.Verify(s => s.ResetSession(sessionId, client), Times.Once);
58+
mockCloudSessionsRepository.Verify(r => r.Update(sessionId, It.IsAny<Func<CloudSessionData, bool>>(), null, null), Times.Once);
59+
mockInventoryService.Verify(s => s.ResetSession(sessionId), Times.Once);
60+
mockSynchronizationService.Verify(s => s.ResetSession(sessionId), Times.Once);
61+
mockSharedFilesService.Verify(s => s.ClearSession(sessionId), Times.Once);
62+
mockInvokeClientsService.Verify(s => s.SessionGroupExcept(sessionId, client), Times.Once);
3063
}
3164
}

0 commit comments

Comments
 (0)