1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { WebDAV } from "./webdav";
7 describe('WebDAV', () => {
8 it('makes use of provided config', async () => {
9 const { open, load, setRequestHeader, createRequest } = mockCreateRequest();
10 const webdav = WebDAV.create({ baseUrl: 'http://foo.com/', headers: { Authorization: 'Basic' } }, createRequest);
11 const promise = webdav.propfind('foo');
13 const request = await promise;
14 expect(open).toHaveBeenCalledWith('PROPFIND', 'http://foo.com/foo');
15 expect(setRequestHeader).toHaveBeenCalledWith('Authorization', 'Basic');
16 expect(request).toBeInstanceOf(XMLHttpRequest);
19 it('PROPFIND', async () => {
20 const { open, load, createRequest } = mockCreateRequest();
21 const webdav = WebDAV.create(undefined, createRequest);
22 const promise = webdav.propfind('foo');
24 const request = await promise;
25 expect(open).toHaveBeenCalledWith('PROPFIND', 'foo');
26 expect(request).toBeInstanceOf(XMLHttpRequest);
29 it('PUT', async () => {
30 const { open, send, load, createRequest } = mockCreateRequest();
31 const webdav = WebDAV.create(undefined, createRequest);
32 const promise = webdav.put('foo', { data: 'Test data' });
34 const request = await promise;
35 expect(open).toHaveBeenCalledWith('PUT', 'foo');
36 expect(send).toHaveBeenCalledWith('Test data');
37 expect(request).toBeInstanceOf(XMLHttpRequest);
40 it('COPY', async () => {
41 const { open, setRequestHeader, load, createRequest } = mockCreateRequest();
42 const webdav = WebDAV.create(undefined, createRequest);
43 const promise = webdav.copy('foo', { destination: 'foo-copy' });
45 const request = await promise;
46 expect(open).toHaveBeenCalledWith('COPY', 'foo');
47 expect(setRequestHeader).toHaveBeenCalledWith('Destination', 'foo-copy');
48 expect(request).toBeInstanceOf(XMLHttpRequest);
51 it('MOVE', async () => {
52 const { open, setRequestHeader, load, createRequest } = mockCreateRequest();
53 const webdav = WebDAV.create(undefined, createRequest);
54 const promise = webdav.move('foo', { destination: 'foo-copy' });
56 const request = await promise;
57 expect(open).toHaveBeenCalledWith('MOVE', 'foo');
58 expect(setRequestHeader).toHaveBeenCalledWith('Destination', 'foo-copy');
59 expect(request).toBeInstanceOf(XMLHttpRequest);
62 it('DELETE', async () => {
63 const { open, load, createRequest } = mockCreateRequest();
64 const webdav = WebDAV.create(undefined, createRequest);
65 const promise = webdav.delete('foo');
67 const request = await promise;
68 expect(open).toHaveBeenCalledWith('DELETE', 'foo');
69 expect(request).toBeInstanceOf(XMLHttpRequest);
73 const mockCreateRequest = () => {
74 const send = jest.fn();
75 const open = jest.fn();
76 const setRequestHeader = jest.fn();
77 const request = new XMLHttpRequest();
80 request.setRequestHeader = setRequestHeader;
81 const load = () => request.dispatchEvent(new Event('load'));
87 createRequest: () => request