public void ReleaseLockAsync_OnDocumentClientSuccess_ThrowsNoException() { // Arrange var lease = new CosmosDistributedLockClaim("lock-name"); _mockDocumentClient.Setup(m => m.DeleteDocumentAsync( It.IsAny <Uri>(), It.IsAny <RequestOptions>(), default)) .ReturnsAsync(new Document().ToResourceResponse(HttpStatusCode.OK)); // Act Func <Task> act = async() => await _store.ReleaseLockAsync(lease); // Assert act.Should().NotThrow(); }
public async Task TryClaimLockAsync_WhenLockConflicted_ReturnsFalse() { // Arrange var lease = new CosmosDistributedLockClaim("lock-name"); _mockDocumentClient.Setup(m => m.CreateDocumentAsync( It.IsAny <Uri>(), It.IsAny <object>(), It.IsAny <RequestOptions>(), false, default)) .ReturnsAsync(new Document().ToResourceResponse(HttpStatusCode.Conflict)); // Act var result = await _store.TryClaimLockAsync(lease); // Assert result.Should().BeFalse(); }
public void ReleaseLockAsync_OnDocumentClientFailure_ThrowsException() { // Arrange var lease = new CosmosDistributedLockClaim("lock-name"); _mockDocumentClient.Setup(m => m.DeleteDocumentAsync( It.IsAny <Uri>(), It.IsAny <RequestOptions>(), default)) .Throws(CreateDocumentClientExceptionForTesting("http error", null, HttpStatusCode.RequestTimeout)); // Act Func <Task> act = async() => await _store.ReleaseLockAsync(lease); // Assert act.Should().Throw <DocumentClientException>() .WithMessage("http error*"); }
public void TryClaimLockAsync_OnDocumentClientException_ThrowsException() { // Arrange var lease = new CosmosDistributedLockClaim("lock-name"); _mockDocumentClient.Setup(m => m.CreateDocumentAsync( It.IsAny <Uri>(), It.IsAny <object>(), It.IsAny <RequestOptions>(), false, default)) .Throws(new Exception("http error")); // Act Func <Task> act = async() => await _store.TryClaimLockAsync(lease); // Assert act.Should().Throw <Exception>() .WithMessage("http error"); }