@@ -190,6 +190,96 @@ def test_get_rate_limits_undefined() -> None:
190190 assert rate_limits == exp_rate_limits
191191
192192
193+ def test_get_rate_limits_for_user_unauthenticated () -> None :
194+ rate_limits = {
195+ "default" : {
196+ "get" : {"api" : ["5/second" ]},
197+ "post" : {"api" : ["10/second" ]},
198+ },
199+ "/jobs/{job_id}" : {"delete" : {"api" : ["1/second" ]}},
200+ "unauthenticated" : {
201+ "default" : {"post" : {"api" : ["2/second" ]}},
202+ "/jobs/{job_id}" : {"get" : {"api" : ["3/second" ]}}
203+ },
204+ }
205+ rate_limits_config = config .RateLimitsConfig .model_validate (rate_limits )
206+
207+ route = "jobs_jobsid"
208+ method = "get"
209+ request_origin = "api"
210+ user_uid = "unauthenticated"
211+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
212+ rate_limits_config , user_uid , route , method , request_origin
213+ )
214+ exp_rate_limits = ["3/second" ]
215+ assert rate_limits == exp_rate_limits
216+
217+ route = "jobs_jobsid"
218+ method = "post"
219+ request_origin = "api"
220+ user_uid = "unauthenticated"
221+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
222+ rate_limits_config , user_uid , route , method , request_origin
223+ )
224+ exp_rate_limits = ["2/second" ]
225+ assert rate_limits == exp_rate_limits
226+
227+ route = "jobs_jobsid"
228+ method = "delete"
229+ request_origin = "api"
230+ user_uid = "unauthenticated"
231+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
232+ rate_limits_config , user_uid , route , method , request_origin
233+ )
234+ exp_rate_limits = ["1/second" ]
235+ assert rate_limits == exp_rate_limits
236+
237+
238+ def test_get_rate_limits_for_user_authenticated () -> None :
239+ rate_limits = {
240+ "default" : {
241+ "get" : {"api" : ["5/second" ]},
242+ "post" : {"api" : ["10/second" ]},
243+ },
244+ "/jobs/{job_id}" : {"delete" : {"api" : ["1/second" ]}},
245+ "unauthenticated" : {
246+ "default" : {"post" : {"api" : ["2/second" ]}},
247+ "/jobs/{job_id}" : {"get" : {"api" : ["3/second" ]}}
248+ },
249+ }
250+ rate_limits_config = config .RateLimitsConfig .model_validate (rate_limits )
251+
252+ route = "jobs_jobsid"
253+ method = "get"
254+ request_origin = "api"
255+ user_uid = "user_uid"
256+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
257+ rate_limits_config , user_uid , route , method , request_origin
258+ )
259+ exp_rate_limits = ["5/second" ]
260+ assert rate_limits == exp_rate_limits
261+
262+ route = "jobs_jobsid"
263+ method = "post"
264+ request_origin = "api"
265+ user_uid = "user_uid"
266+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
267+ rate_limits_config , user_uid , route , method , request_origin
268+ )
269+ exp_rate_limits = ["10/second" ]
270+ assert rate_limits == exp_rate_limits
271+
272+ route = "jobs_jobsid"
273+ method = "delete"
274+ request_origin = "api"
275+ user_uid = "user_uid"
276+ rate_limits = cads_processing_api_service .limits .get_rate_limits_for_user (
277+ rate_limits_config , user_uid , route , method , request_origin
278+ )
279+ exp_rate_limits = ["1/second" ]
280+ assert rate_limits == exp_rate_limits
281+
282+
193283def test_check_rate_limits_for_user () -> None :
194284 rate_limit_ids = ["1/second" ]
195285 rate_limits = [limits .parse (rate_limit_id ) for rate_limit_id in rate_limit_ids ]
0 commit comments