public async Task StartSharing_should_save_SharingContext_if_no_duplicate_exists() { A.CallTo(() => _repository.GetSharingContextForUserByInfoHash(A <string> .Ignored, A <string> .Ignored)) .Returns(Task.FromResult <SharingContext>(null)); var request = ShareRequestFactory.CreateCompleteRequestForSingleFile(); await _operation.StartSharing(request); A.CallTo(() => _repository.CreateSharingContext(A <SharingContext> .Ignored)) .MustHaveHappenedOnceExactly(); }
public async Task StartSharing(ShareRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } await _shareRequestValidator.ValidateAndThrowAsync(request, "default,write"); var context = SharingContext.Create(request); var existing = await _sharingRepository.GetSharingContextForUserByInfoHash(request.User.Id, context.InfoHash); if (existing != default) { throw new DuplicateSharingContextException(); } SanitizeSharingContext(context); await _sharingRepository.CreateSharingContext(context); }