@@ -8,12 +8,13 @@ describe('OPTIONS request handler', () => {
88 vi . restoreAllMocks ( ) ;
99 } ) ;
1010
11- it ( 'When a WebDav client sends an OPTIONS request , it should return the allowed methods' , async ( ) => {
11+ it ( 'When the root folder is requested , it should return all of the server allowed methods' , async ( ) => {
1212 const requestHandler = new OPTIONSRequestHandler ( ) ;
1313
1414 const request = createWebDavRequestFixture ( {
1515 method : 'OPTIONS' ,
1616 user : UserSettingsFixture ,
17+ url : '/' ,
1718 } ) ;
1819 const response = createWebDavResponseFixture ( {
1920 header : vi . fn ( ) ,
@@ -23,10 +24,47 @@ describe('OPTIONS request handler', () => {
2324 await requestHandler . handle ( request , response ) ;
2425
2526 expect ( response . status ) . toHaveBeenCalledWith ( 200 ) ;
26- expect ( response . header ) . toHaveBeenCalledWith (
27- 'Allow' ,
28- 'OPTIONS, GET, HEAD, POST, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK' ,
29- ) ;
27+ expect ( response . header ) . toHaveBeenCalledWith ( 'Allow' , 'DELETE, GET, HEAD, MKCOL, MOVE, OPTIONS, PROPFIND, PUT' ) ;
28+ expect ( response . header ) . toHaveBeenCalledWith ( 'DAV' , '1, 2, ordered-collections' ) ;
29+ } ) ;
30+
31+ it ( 'When a folder is requested, it should return all of the folder allowed methods' , async ( ) => {
32+ const requestHandler = new OPTIONSRequestHandler ( ) ;
33+
34+ const request = createWebDavRequestFixture ( {
35+ method : 'OPTIONS' ,
36+ user : UserSettingsFixture ,
37+ url : '/folder/' ,
38+ } ) ;
39+ const response = createWebDavResponseFixture ( {
40+ header : vi . fn ( ) ,
41+ status : vi . fn ( ) . mockReturnValue ( { send : vi . fn ( ) } ) ,
42+ } ) ;
43+
44+ await requestHandler . handle ( request , response ) ;
45+
46+ expect ( response . status ) . toHaveBeenCalledWith ( 200 ) ;
47+ expect ( response . header ) . toHaveBeenCalledWith ( 'Allow' , 'DELETE, HEAD, MKCOL, MOVE, OPTIONS, PROPFIND' ) ;
48+ expect ( response . header ) . toHaveBeenCalledWith ( 'DAV' , '1, 2, ordered-collections' ) ;
49+ } ) ;
50+
51+ it ( 'When a file is requested, it should return all of the file allowed methods' , async ( ) => {
52+ const requestHandler = new OPTIONSRequestHandler ( ) ;
53+
54+ const request = createWebDavRequestFixture ( {
55+ method : 'OPTIONS' ,
56+ user : UserSettingsFixture ,
57+ url : '/file' ,
58+ } ) ;
59+ const response = createWebDavResponseFixture ( {
60+ header : vi . fn ( ) ,
61+ status : vi . fn ( ) . mockReturnValue ( { send : vi . fn ( ) } ) ,
62+ } ) ;
63+
64+ await requestHandler . handle ( request , response ) ;
65+
66+ expect ( response . status ) . toHaveBeenCalledWith ( 200 ) ;
67+ expect ( response . header ) . toHaveBeenCalledWith ( 'Allow' , 'DELETE, GET, HEAD, MOVE, OPTIONS, PROPFIND, PUT' ) ;
3068 expect ( response . header ) . toHaveBeenCalledWith ( 'DAV' , '1, 2, ordered-collections' ) ;
3169 } ) ;
3270} ) ;
0 commit comments