Beispiel #1
0
        private IDocumentServiceLeaseUpdater CreateLeaseUpdater(ILease expectedCachedLease)
        {
            var       leaseUpdater = Mock.Of <IDocumentServiceLeaseUpdater>();
            MockLease storedLease  = CreateStoredLease(owner);

            Mock.Get(leaseUpdater)
            .Setup(u => u.UpdateLeaseAsync(expectedCachedLease, documentUri, It.IsAny <Func <ILease, ILease> >()))
            .Callback((ILease cachedLease, Uri uri, Func <ILease, ILease> callback) => callback(storedLease))
            .ReturnsAsync(storedLease);
            return(leaseUpdater);
        }
Beispiel #2
0
        public async Task ReleaseAsync_ThrowsLeaseLost_WhenStoredLeaseOwnerDoesNotMatch()
        {
            var          documentClient          = Mock.Of <IChangeFeedDocumentClient>();
            var          cachedLease             = CreateCachedLease(owner);
            const string storedContinuationToken = "A";

            var       leaseUpdater = Mock.Of <IDocumentServiceLeaseUpdater>();
            var       leaseManager = CreateLeaseManager(documentClient, leaseUpdater, owner);
            MockLease storedLease  = CreateStoredLease("different owner");

            SetupUpdateLeaseAfterRead(leaseUpdater, storedContinuationToken, storedLease);
            SetupReadDocument(storedContinuationToken, documentClient);

            var exception = await Record.ExceptionAsync(async() => await leaseManager.ReleaseAsync(cachedLease));

            Assert.IsAssignableFrom <LeaseLostException>(exception);
        }
Beispiel #3
0
        public async Task ReleaseAsync_SetsLeasOwnerToNull_WhenOwningLease()
        {
            var          documentClient          = Mock.Of <IChangeFeedDocumentClient>();
            var          cachedLease             = CreateCachedLease(owner);
            const string storedContinuationToken = "A";

            var       leaseUpdater = Mock.Of <IDocumentServiceLeaseUpdater>();
            var       leaseManager = CreateLeaseManager(documentClient, leaseUpdater, owner);
            MockLease storedLease  = CreateStoredLease(owner);

            SetupUpdateLeaseAfterRead(leaseUpdater, storedContinuationToken, storedLease);
            SetupReadDocument(storedContinuationToken, documentClient);

            await leaseManager.ReleaseAsync(cachedLease);

            Assert.Null(storedLease.Owner);
        }
Beispiel #4
0
 private static void SetupUpdateLeaseAfterRead(IDocumentServiceLeaseUpdater leaseUpdater, string storedContinuationToken, MockLease storedLease)
 {
     Mock.Get(leaseUpdater)
     .Setup(u => u.UpdateLeaseAsync(It.Is <ILease>(l => l.ContinuationToken == storedContinuationToken), documentUri, It.IsAny <Func <ILease, ILease> >()))
     .Callback((ILease l, Uri uri, Func <ILease, ILease> callback) => callback(storedLease))
     .ReturnsAsync(storedLease);
 }