Skip to content

Commit 0c5e114

Browse files
committed
Added test for the MOVE and COPY methods [v2]
1 parent 5d5d3a2 commit 0c5e114

File tree

7 files changed

+213
-0
lines changed

7 files changed

+213
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { TestCallback, TestInfo } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
4+
export function check(server : v2.WebDAVServer, info : TestInfo, isValid : TestCallback, path : string, mustExist : boolean, callback : () => void) : void
5+
{
6+
info.req({
7+
url: 'http://localhost:' + server.options.port + '/' + path,
8+
method: 'PROPFIND',
9+
headers: {
10+
Depth: 0
11+
}
12+
}, mustExist ? v2.HTTPCodes.MultiStatus : v2.HTTPCodes.NotFound, () => {
13+
callback();
14+
})
15+
}
16+
17+
export function starter(server : v2.WebDAVServer, info : TestInfo, isValid : TestCallback, method : string, from : string, to : string, overwrite : boolean, expectedStatusCode : number, callback ?: (server : v2.WebDAVServer) => void) : void
18+
{
19+
server.rootFileSystem().addSubTree(v2.RequestContext.createExternal(server), {
20+
'emptyFolder1': v2.ResourceType.Directory,
21+
'folder1': {
22+
'emptyFolder2': v2.ResourceType.Directory,
23+
'file2': v2.ResourceType.File,
24+
'folder2': {
25+
'emptyFolder3': v2.ResourceType.Directory,
26+
'file3': v2.ResourceType.File
27+
},
28+
'folder2x': {
29+
'emptyFolder3x': v2.ResourceType.Directory,
30+
'file3x': v2.ResourceType.File
31+
}
32+
},
33+
'file1': v2.ResourceType.File
34+
}, (e) => {
35+
if(e) return isValid(false, 'Cannot call "addSubTree(...)".', e);
36+
37+
info.req({
38+
url: 'http://localhost:' + server.options.port + '/' + from,
39+
method,
40+
headers: {
41+
overwrite: overwrite ? 'T' : 'F',
42+
destination: '/' + to
43+
}
44+
}, expectedStatusCode, () => {
45+
if(!callback)
46+
isValid(true);
47+
else
48+
callback(server);
49+
})
50+
})
51+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
export default ((info, isValid) =>
6+
{
7+
const server1 = info.init(6);
8+
9+
starter(info.startServer(), info, isValid, 'COPY', 'folder1', 'folder1x', false, v2.HTTPCodes.Created, (s) => {
10+
check(s, info, isValid, 'folder1', true, () => {
11+
check(s, info, isValid, 'folder1x', true, () => {
12+
isValid(true);
13+
})
14+
})
15+
});
16+
17+
starter(info.startServer(), info, isValid, 'COPY', 'folder1/folder2x', 'folder1/folder2', false, v2.HTTPCodes.PreconditionFailed);
18+
starter(info.startServer(), info, isValid, 'COPY', 'folder1/folder2x', 'folder1/folder2', true, v2.HTTPCodes.NoContent, (s) => {
19+
check(s, info, isValid, 'folder1/folder2x', true, () => {
20+
check(s, info, isValid, 'folder1/folder2', true, () => {
21+
isValid(true);
22+
})
23+
})
24+
});
25+
26+
starter(info.startServer(), info, isValid, 'COPY', 'folder1', 'folder1', false, v2.HTTPCodes.Forbidden);
27+
starter(info.startServer(), info, isValid, 'COPY', 'folder1', 'folder1/folder1', false, v2.HTTPCodes.BadGateway);
28+
starter(info.startServer(), info, isValid, 'COPY', 'folder1', 'unmapped/folder1', false, v2.HTTPCodes.Conflict);
29+
30+
}) as Test;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
export default ((info, isValid) =>
6+
{
7+
const server1 = info.init(6);
8+
9+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'file1_moved', false, v2.HTTPCodes.Created, (s) => {
10+
check(s, info, isValid, 'file1', true, () => {
11+
check(s, info, isValid, 'file1_moved', true, () => {
12+
isValid(true);
13+
})
14+
})
15+
});
16+
17+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'folder1/file2', false, v2.HTTPCodes.PreconditionFailed);
18+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'folder1/file2', true, v2.HTTPCodes.NoContent, (s) => {
19+
check(s, info, isValid, 'file1', true, () => {
20+
check(s, info, isValid, 'folder1/file2', true, () => {
21+
isValid(true);
22+
})
23+
})
24+
});
25+
26+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'file1', false, v2.HTTPCodes.Forbidden);
27+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'file1/file1', false, v2.HTTPCodes.BadGateway);
28+
starter(info.startServer(), info, isValid, 'COPY', 'file1', 'unmapped/file1', false, v2.HTTPCodes.Conflict);
29+
30+
}) as Test;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
function execute(info, isValid, overwrite : boolean)
6+
{
7+
starter(info.startServer(), info, isValid, 'COPY', 'file1Undefined', 'file1_moved', overwrite, v2.HTTPCodes.NotFound);
8+
starter(info.startServer(), info, isValid, 'COPY', 'file1Undefined', 'folder1/file2', overwrite, v2.HTTPCodes.NotFound);
9+
starter(info.startServer(), info, isValid, 'COPY', 'file1Undefined', 'file1', overwrite, v2.HTTPCodes.NotFound);
10+
starter(info.startServer(), info, isValid, 'COPY', 'file1Undefined', 'file1/file1', overwrite, v2.HTTPCodes.NotFound);
11+
starter(info.startServer(), info, isValid, 'COPY', 'file1Undefined', 'unmapped/file1', overwrite, v2.HTTPCodes.NotFound);
12+
}
13+
14+
export default ((info, isValid) =>
15+
{
16+
const server1 = info.init(5 * 2);
17+
18+
execute(info, isValid, false);
19+
execute(info, isValid, true);
20+
21+
}) as Test;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
export default ((info, isValid) =>
6+
{
7+
const server1 = info.init(6);
8+
9+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1', 'folder1x', false, v2.HTTPCodes.Created, (s) => {
10+
check(s, info, isValid, 'folder1', false, () => {
11+
check(s, info, isValid, 'folder1x', true, () => {
12+
isValid(true);
13+
})
14+
})
15+
});
16+
17+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1/folder2x', 'folder1/folder2', false, v2.HTTPCodes.PreconditionFailed);
18+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1/folder2x', 'folder1/folder2', true, v2.HTTPCodes.NoContent, (s) => {
19+
check(s, info, isValid, 'folder1/folder2x', false, () => {
20+
check(s, info, isValid, 'folder1/folder2', true, () => {
21+
isValid(true);
22+
})
23+
})
24+
});
25+
26+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1', 'folder1', false, v2.HTTPCodes.Forbidden);
27+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1', 'folder1/folder1', false, v2.HTTPCodes.BadGateway);
28+
starter(info.startServer(), info, isValid, 'MOVE', 'folder1', 'unmapped/folder1', false, v2.HTTPCodes.Conflict);
29+
30+
}) as Test;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
export default ((info, isValid) =>
6+
{
7+
const server1 = info.init(6);
8+
9+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'file1_moved', false, v2.HTTPCodes.Created, (s) => {
10+
check(s, info, isValid, 'file1', false, () => {
11+
check(s, info, isValid, 'file1_moved', true, () => {
12+
isValid(true);
13+
})
14+
})
15+
});
16+
17+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'folder1/file2', false, v2.HTTPCodes.PreconditionFailed);
18+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'folder1/file2', true, v2.HTTPCodes.NoContent, (s) => {
19+
check(s, info, isValid, 'file1', false, () => {
20+
check(s, info, isValid, 'folder1/file2', true, () => {
21+
isValid(true);
22+
})
23+
})
24+
});
25+
26+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'file1', false, v2.HTTPCodes.Forbidden);
27+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'file1/file1', false, v2.HTTPCodes.BadGateway);
28+
starter(info.startServer(), info, isValid, 'MOVE', 'file1', 'unmapped/file1', false, v2.HTTPCodes.Conflict);
29+
30+
}) as Test;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Test } from '../Type'
2+
import { v2 } from '../../../../lib/index.js'
3+
import { starter, check } from './.createFiles'
4+
5+
function execute(info, isValid, overwrite : boolean)
6+
{
7+
starter(info.startServer(), info, isValid, 'MOVE', 'file1Undefined', 'file1_moved', overwrite, v2.HTTPCodes.NotFound);
8+
starter(info.startServer(), info, isValid, 'MOVE', 'file1Undefined', 'folder1/file2', overwrite, v2.HTTPCodes.NotFound);
9+
starter(info.startServer(), info, isValid, 'MOVE', 'file1Undefined', 'file1', overwrite, v2.HTTPCodes.NotFound);
10+
starter(info.startServer(), info, isValid, 'MOVE', 'file1Undefined', 'file1/file1', overwrite, v2.HTTPCodes.NotFound);
11+
starter(info.startServer(), info, isValid, 'MOVE', 'file1Undefined', 'unmapped/file1', overwrite, v2.HTTPCodes.NotFound);
12+
}
13+
14+
export default ((info, isValid) =>
15+
{
16+
const server1 = info.init(5 * 2);
17+
18+
execute(info, isValid, false);
19+
execute(info, isValid, true);
20+
21+
}) as Test;

0 commit comments

Comments
 (0)