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); }
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); }
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); }
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); }