public void SharedLock_ModifyLock_Missing() { var node = CreateTestFolder(); var nodeId = node.Id; var oldLockValue = Guid.NewGuid().ToString(); var newLockValue = Guid.NewGuid().ToString(); // ACTION SharedLock.ModifyLock(nodeId, oldLockValue, newLockValue); }
private async Task <WopiResponse> ProcessUnlockAndRelockRequestAsync(UnlockAndRelockRequest wopiRequest, CancellationToken cancellationToken) { if (!int.TryParse(wopiRequest.FileId, out var contentId)) { return new WopiResponse { StatusCode = HttpStatusCode.NotFound } } ; if (!(await Node.LoadNodeAsync(contentId, cancellationToken).ConfigureAwait(false) is File file)) { return new WopiResponse { StatusCode = HttpStatusCode.NotFound } } ; var existingLock = SharedLock.GetLock(file.Id, CancellationToken.None); if (existingLock == null) { return(new WopiResponse { StatusCode = HttpStatusCode.Conflict, Headers = new Dictionary <string, string> { { WopiHeader.Lock, string.Empty }, { WopiHeader.LockFailureReason, "Unlocked" } } }); } if (existingLock != wopiRequest.OldLock) { return(new WopiResponse { StatusCode = HttpStatusCode.Conflict, Headers = new Dictionary <string, string> { { WopiHeader.Lock, existingLock }, { WopiHeader.LockFailureReason, "LockedByAnother" } } }); } SharedLock.ModifyLock(contentId, existingLock, wopiRequest.Lock, CancellationToken.None); return(new WopiResponse { StatusCode = HttpStatusCode.OK }); }
public void SharedLock_ModifyLock_TimedOut() { var node = CreateTestFolder(); var nodeId = node.Id; Assert.IsNull(SharedLock.GetLock(nodeId)); var oldLockValue = Guid.NewGuid().ToString(); var newLockValue = Guid.NewGuid().ToString(); SharedLock.Lock(nodeId, oldLockValue); SetSharedLockCreationDate(nodeId, DateTime.UtcNow.AddHours(-1.0d)); // ACTION SharedLock.ModifyLock(nodeId, oldLockValue, newLockValue); }
public void SharedLock_ModifyLock() { var node = CreaeTestContent(); var nodeId = node.Id; var oldLockValue = Guid.NewGuid().ToString(); var newLockValue = Guid.NewGuid().ToString(); Assert.IsNull(SharedLock.GetLock(nodeId)); SharedLock.Lock(nodeId, oldLockValue); Assert.AreEqual(oldLockValue, SharedLock.GetLock(nodeId)); // ACTION SharedLock.ModifyLock(nodeId, oldLockValue, newLockValue); Assert.AreEqual(newLockValue, SharedLock.GetLock(nodeId)); }
private WopiResponse ProcessUnlockAndRelockRequest(UnlockAndRelockRequest wopiReq) { if (!int.TryParse(wopiReq.FileId, out var contentId)) { return new WopiResponse { StatusCode = HttpStatusCode.NotFound } } ; if (!(Node.LoadNode(contentId) is File file)) { return new WopiResponse { StatusCode = HttpStatusCode.NotFound } } ; var existingLock = SharedLock.GetLock(file.Id); if (existingLock == null) { return(new WopiResponse { StatusCode = HttpStatusCode.Conflict, Headers = new Dictionary <string, string> { { WopiHeader.Lock, string.Empty }, { WopiHeader.LockFailureReason, "Unlocked" } } }); } if (existingLock != wopiReq.OldLock) { return(new WopiResponse { StatusCode = HttpStatusCode.Conflict, Headers = new Dictionary <string, string> { { WopiHeader.Lock, existingLock }, { WopiHeader.LockFailureReason, "LockedByAnother" } } }); } SharedLock.ModifyLock(contentId, existingLock, wopiReq.Lock); return(new WopiResponse { StatusCode = HttpStatusCode.OK }); }
public void SharedLock_ModifyLockDifferent() { var node = CreateTestFolder(); var nodeId = node.Id; var oldLockValue = Guid.NewGuid().ToString(); var newLockValue = Guid.NewGuid().ToString(); Assert.IsNull(SharedLock.GetLock(nodeId)); SharedLock.Lock(nodeId, oldLockValue); Assert.AreEqual(oldLockValue, SharedLock.GetLock(nodeId)); // ACTION var actualLock = SharedLock.ModifyLock(nodeId, "DifferentLock", newLockValue); Assert.AreEqual(oldLockValue, actualLock); }
public void SharedLock_ModifyLock() { var node = CreateTestFolder(); var nodeId = node.Id; var oldLockValue = Guid.NewGuid().ToString(); var newLockValue = Guid.NewGuid().ToString(); Assert.IsNull(SharedLock.GetLock(nodeId, CancellationToken.None)); SharedLock.Lock(nodeId, oldLockValue, CancellationToken.None); Assert.AreEqual(oldLockValue, SharedLock.GetLock(nodeId, CancellationToken.None)); // ACTION SharedLock.ModifyLock(nodeId, oldLockValue, newLockValue, CancellationToken.None); Assert.AreEqual(newLockValue, SharedLock.GetLock(nodeId, CancellationToken.None)); }