@@ -81,6 +81,7 @@ async def test_permissions_post_copy_source_destination(self):
81
81
'nid' : 'test' ,
82
82
'provider' : 'test' ,
83
83
'action' : 'download' ,
84
+ 'intent' : 'copyfrom' ,
84
85
'path' : '' ,
85
86
'version' : None ,
86
87
'metrics' : {
@@ -95,6 +96,7 @@ async def test_permissions_post_copy_source_destination(self):
95
96
'nid' : 'test' ,
96
97
'provider' : 'test' ,
97
98
'action' : 'upload' ,
99
+ 'intent' : 'copyto' ,
98
100
'path' : '' ,
99
101
'version' : None ,
100
102
'metrics' : {
@@ -109,24 +111,47 @@ async def test_permissions_post_copy_source_destination(self):
109
111
class TestActionMapping :
110
112
111
113
@pytest .mark .asyncio
112
- @pytest .mark .parametrize ('method, action, auth_type, headers, query_args, expected' , [
113
- ['post' , 'copy' , AuthType .SOURCE , None , None , 'download' ],
114
- ['post' , 'copy' , AuthType .DESTINATION , None , None , 'upload' ],
115
- ['post' , 'move' , AuthType .SOURCE , None , None , 'upload' ], # TODO: really?
116
- ['post' , 'move' , AuthType .DESTINATION , None , None , 'upload' ],
117
- ['post' , 'rename' , AuthType .SOURCE , None , None , 'upload' ], # TODO: really?
118
- ['post' , 'rename' , AuthType .DESTINATION , None , None , 'upload' ],
119
-
120
- ['head' , None , None , {settings .MFR_ACTION_HEADER : 'render' }, None , 'render' ],
121
- ['head' , None , None , {settings .MFR_ACTION_HEADER : 'export' }, None , 'export' ],
122
-
123
- ['get' , None , None , None , None , 'download' ],
124
- ['put' , None , None , None , None , 'upload' ],
125
- ['delete' , None , None , None , None , 'delete' ],
126
- ['get' , None , None , None , {'meta' : 1 }, 'metadata' ],
127
- ['get' , None , None , None , {'revisions' : 1 }, 'revisions' ],
114
+ @pytest .mark .parametrize ('method, action, path, auth_type, headers, query_args, exp_perm_action, exp_intent' , [
115
+ ['post' , 'copy' , '/folder/' , AuthType .SOURCE , None , None , 'download' , 'copyfrom' ],
116
+ ['post' , 'copy' , '/folder/' , AuthType .DESTINATION , None , None , 'upload' , 'copyto' ],
117
+ ['post' , 'move' , '/folder/' , AuthType .SOURCE , None , None , 'delete' , 'movefrom' ],
118
+ ['post' , 'move' , '/folder/' , AuthType .DESTINATION , None , None , 'upload' , 'moveto' ],
119
+ ['post' , 'rename' , '/folder/' , AuthType .SOURCE , None , None , 'upload' , 'rename' ],
120
+ ['post' , 'rename' , '/folder/' , AuthType .DESTINATION , None , None , 'upload' , 'rename' ],
121
+
122
+ ['post' , 'copy' , '/file' , AuthType .SOURCE , None , None , 'download' , 'copyfrom' ],
123
+ ['post' , 'copy' , '/file' , AuthType .DESTINATION , None , None , 'upload' , 'copyto' ],
124
+ ['post' , 'move' , '/file' , AuthType .SOURCE , None , None , 'delete' , 'movefrom' ],
125
+ ['post' , 'move' , '/file' , AuthType .DESTINATION , None , None , 'upload' , 'moveto' ],
126
+ ['post' , 'rename' , '/file' , AuthType .SOURCE , None , None , 'upload' , 'rename' ],
127
+ ['post' , 'rename' , '/file' , AuthType .DESTINATION , None , None , 'upload' , 'rename' ],
128
+
129
+ ['head' , None , '/folder/' , None , {settings .MFR_ACTION_HEADER : 'render' }, None , 'render' , 'render' ],
130
+ ['head' , None , '/folder/' , None , {settings .MFR_ACTION_HEADER : 'export' }, None , 'export' , 'export' ],
131
+
132
+ ['head' , None , '/file' , None , {settings .MFR_ACTION_HEADER : 'render' }, None , 'render' , 'render' ],
133
+ ['head' , None , '/file' , None , {settings .MFR_ACTION_HEADER : 'export' }, None , 'export' , 'export' ],
134
+
135
+ ['get' , None , '/folder/' , None , None , None , 'metadata' , 'metadata' ],
136
+ ['head' , None , '/folder/' , None , None , None , 'metadata' , 'metadata' ],
137
+ ['put' , None , '/folder/' , None , None , {'kind' : 'folder' }, 'upload' , 'create_dir' ],
138
+ ['put' , None , '/folder/' , None , None , {'kind' : 'file' }, 'upload' , 'create_file' ],
139
+ ['delete' , None , '/folder/' , None , None , None , 'delete' , 'delete' ],
140
+ ['get' , None , '/folder/' , None , None , {'meta' : 1 }, 'metadata' , 'metadata' ],
141
+ ['get' , None , '/folder/' , None , None , {'revisions' : 1 }, 'metadata' , 'metadata' ],
142
+ ['get' , None , '/folder/' , None , None , {'zip' : 1 }, 'download' , 'daz' ],
143
+
144
+ ['get' , None , '/file' , None , None , None , 'download' , 'download' ],
145
+ ['head' , None , '/file' , None , None , None , 'metadata' , 'metadata' ],
146
+ ['put' , None , '/file' , None , None , None , 'upload' , 'update_file' ],
147
+ ['delete' , None , '/file' , None , None , None , 'delete' , 'delete' ],
148
+ ['get' , None , '/file' , None , None , {'meta' : 1 }, 'metadata' , 'metadata' ],
149
+ ['get' , None , '/file' , None , None , {'revisions' : 1 }, 'revisions' , 'revisions' ],
150
+ ['get' , None , '/file' , None , None , {'zip' : 1 }, 'download' , 'download' ],
151
+ ['get' , None , '/file' , None , None , {'meta' : 1 , 'revisions' : 1 }, 'metadata' , 'metadata' ],
128
152
])
129
- async def test_action_type (self , method , action , auth_type , headers , query_args , expected ):
153
+ async def test_action_type (self , method , action , path , auth_type , headers , query_args ,
154
+ exp_perm_action , exp_intent ):
130
155
131
156
handler = OsfAuthHandler ()
132
157
@@ -136,7 +161,7 @@ async def test_action_type(self, method, action, auth_type, headers, query_args,
136
161
request .query_arguments = query_args if query_args is not None else {}
137
162
request .cookies = {}
138
163
139
- kwargs = {}
164
+ kwargs = {'path' : path }
140
165
if action is not None :
141
166
kwargs ['action' ] = action
142
167
if auth_type is not None :
@@ -151,7 +176,8 @@ async def test_action_type(self, method, action, auth_type, headers, query_args,
151
176
152
177
handler .build_payload .asssert_called_once ()
153
178
args , _ = handler .build_payload .call_args
154
- assert args [0 ]['action' ] == expected
179
+ assert args [0 ]['action' ] == exp_perm_action
180
+ assert args [0 ]['intent' ] == exp_intent
155
181
156
182
@pytest .mark .asyncio
157
183
async def test_unhandled_mfr_action (self ):
0 commit comments