webdav.client
Version:
WebDAV ajax library for opening documents from a web page and managing WebDAV servers.
135 lines (104 loc) • 5.7 kB
JavaScript
/**
* @typedef {ITHit.WebDAV.Client.WebDavSession} webDavSession
*/
QUnit.module('Locks.Lock');
/**
* @class ITHit.WebDAV.Client.Tests.Locks.Lock
*/
ITHit.DefineClass('ITHit.WebDAV.Client.Tests.Locks.Lock', null, {}, /** @lends ITHit.WebDAV.Client.Tests.Locks.Lock */{
/**
* @param {ITHit.WebDAV.Client.WebDavSession} [webDavSession=new ITHit.WebDAV.Client.WebDavSession()]
* @param {string} [sFileAbsolutePath='http://localhost:87654/myfile.txt']
* @param {function} [fCallback=function() {}]
*/
SetLock: function(webDavSession, sFileAbsolutePath, fCallback) {
webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {
/** @typedef {ITHit.WebDAV.Client.File} oFile */
var oFile = oFileAsyncResult.Result;
if (oFile.SupportedLocks.length === 0) {
console.log('Locks are not supported.');
return;
}
oFile.LockAsync(ITHit.WebDAV.Client.LockScope.Shared, false, 'User 1', -1, function(oAsyncResult) {
/** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
var oLockInfo = oAsyncResult.Result;
if (oAsyncResult.IsSuccess) {
console.log('Locks token is: ' + oLockInfo.LockToken.LockToken);
}
fCallback(oAsyncResult);
});
});
},
/**
* @param {ITHit.WebDAV.Client.WebDavSession} [webDavSession=new ITHit.WebDAV.Client.WebDavSession()]
* @param {string} [sFileAbsolutePath='http://localhost:87654/myfile.txt']
* @param {string} [sLockToken='f36726d1-0671-4f6f-8445-c7d10e42a08e']
* @param {function} [fCallback=function() {}]
*/
SetUnLock: function(webDavSession, sFileAbsolutePath, sLockToken, fCallback) {
webDavSession.OpenFileAsync(sFileAbsolutePath, null, function(oFileAsyncResult) {
/** @typedef {ITHit.WebDAV.Client.File} oFile */
var oFile = oFileAsyncResult.Result;
oFile.UnlockAsync(sLockToken, function(oAsyncResult) {
if (oAsyncResult.IsSuccess) {
console.log('File is unlocked');
}
fCallback(oAsyncResult);
});
});
}
});
QUnitRunner.test('Lock file and check that it can not be moved', function (test) {
QUnit.stop();
Helper.Create([
'Locks/MoveDir/',
'Locks/lockfile.txt'
], function() {
QUnit.start();
QUnit.stop();
webDavSession.OpenFileAsync(Helper.GetAbsolutePath('Locks/lockfile.txt'), null, function(oAsyncResult) {
QUnit.start();
/** @typedef {ITHit.WebDAV.Client.File} oFile */
var oFile = oAsyncResult.Result;
if (oFile.SupportedLocks.length === 0) {
ITHitTests.skip(test, 'Server does not support locks.');
return;
}
QUnit.stop();
webDavSession.OpenFolderAsync(Helper.GetAbsolutePath('Locks/MoveDir/'), null, function(oAsyncResult) {
QUnit.start();
/** @typedef {ITHit.WebDAV.Client.Folder} oMoveFolder */
var oMoveFolder = oAsyncResult.Result;
QUnit.stop();
ITHit.WebDAV.Client.Tests.Locks.Lock.SetLock(webDavSession, Helper.GetAbsolutePath('Locks/lockfile.txt'), function(oAsyncResult) {
QUnit.start();
/** @typedef {ITHit.WebDAV.Client.LockInfo} oLockInfo */
var oLockInfo = oAsyncResult.Result;
test.strictEqual(oAsyncResult.IsSuccess, true, 'Check success of set lock request');
test.strictEqual(oLockInfo instanceof ITHit.WebDAV.Client.LockInfo, true, 'Check result is instance of LockInfo');
test.strictEqual(oLockInfo.Deep, false, 'Check lock info deep is false');
test.strictEqual(oLockInfo.LockScope, ITHit.WebDAV.Client.LockScope.Shared, 'Check lock is shared');
test.strictEqual(oLockInfo.LockToken.Href, Helper.GetAbsolutePath('Locks/lockfile.txt'), 'Check lock href');
// Try move
QUnit.stop();
oFile.MoveToAsync(oMoveFolder, oFile.DisplayName, false, null, function(oAsyncResult) {
QUnit.start();
test.strictEqual(oAsyncResult.Error instanceof ITHit.WebDAV.Client.Exceptions.LockedException, true, 'Check error is LockedException on try move file without lock token');
// Try move with lock
QUnit.stop();
oFile.MoveToAsync(oMoveFolder, oFile.DisplayName, false, [oLockInfo], function(oAsyncResult) {
QUnit.start();
// Try move
test.strictEqual(oAsyncResult.IsSuccess, true, 'Check success of move file request with lock token');
QUnit.stop();
ITHit.WebDAV.Client.Tests.Locks.Lock.SetUnLock(webDavSession, Helper.GetAbsolutePath('Locks/MoveDir/lockfile.txt'), oLockInfo.LockToken.LockToken, function(oAsyncResult) {
QUnit.start();
test.strictEqual(oAsyncResult.IsSuccess, false, 'Check success of unlock request');
});
});
});
});
});
});
});
});