|
24 | 24 | rl_vs_override_spec = f"{TEST_DATA}/rate-limit/spec/virtual-server-override.yaml" |
25 | 25 | rl_vs_override_route = f"{TEST_DATA}/rate-limit/route-subroute/virtual-server-override-route.yaml" |
26 | 26 | rl_vs_override_spec_route = f"{TEST_DATA}/rate-limit/route-subroute/virtual-server-override-spec-route.yaml" |
| 27 | +rl_vs_jwt_claim_sub = f"{TEST_DATA}/rate-limit/spec/virtual-server-jwt-claim-sub.yaml" |
| 28 | +rl_pol_jwt_claim_sub = f"{TEST_DATA}/rate-limit/policies/rate-limit-jwt-claim-sub.yaml" |
| 29 | +token = f"{TEST_DATA}/jwt-policy/token.jwt" |
27 | 30 |
|
28 | 31 |
|
29 | 32 | @pytest.mark.policies |
@@ -357,3 +360,53 @@ def test_rl_policy_scaled( |
357 | 360 | and policy_info["status"]["reason"] == "AddedOrUpdated" |
358 | 361 | and policy_info["status"]["state"] == "Valid" |
359 | 362 | ) |
| 363 | + |
| 364 | + @pytest.mark.skip_for_nginx_oss |
| 365 | + @pytest.mark.parametrize("src", [rl_vs_jwt_claim_sub]) |
| 366 | + def test_rl_policy_jwt_claim_sub( |
| 367 | + self, |
| 368 | + kube_apis, |
| 369 | + ingress_controller_prerequisites, |
| 370 | + crd_ingress_controller, |
| 371 | + virtual_server_setup, |
| 372 | + test_namespace, |
| 373 | + src, |
| 374 | + ): |
| 375 | + """ |
| 376 | + Test if rate-limiting policy is working with 1 rps using $jwt_claim_sub as the rate limit key |
| 377 | + """ |
| 378 | + print(f"Create rl policy") |
| 379 | + pol_name = create_policy_from_yaml(kube_apis.custom_objects, rl_pol_jwt_claim_sub, test_namespace) |
| 380 | + print(f"Patch vs with policy: {src}") |
| 381 | + patch_virtual_server_from_yaml( |
| 382 | + kube_apis.custom_objects, |
| 383 | + virtual_server_setup.vs_name, |
| 384 | + src, |
| 385 | + virtual_server_setup.namespace, |
| 386 | + ) |
| 387 | + wait_before_test() |
| 388 | + |
| 389 | + policy_info = read_custom_resource(kube_apis.custom_objects, test_namespace, "policies", pol_name) |
| 390 | + occur = [] |
| 391 | + t_end = time.perf_counter() + 1 |
| 392 | + resp = requests.get( |
| 393 | + virtual_server_setup.backend_1_url, |
| 394 | + headers={"host": virtual_server_setup.vs_host, "Authorization": f"Bearer {token}"}, |
| 395 | + ) |
| 396 | + print(resp.status_code) |
| 397 | + wait_before_test() |
| 398 | + assert resp.status_code == 200 |
| 399 | + while time.perf_counter() < t_end: |
| 400 | + resp = requests.get( |
| 401 | + virtual_server_setup.backend_1_url, |
| 402 | + headers={"host": virtual_server_setup.vs_host, "Authorization": f"Bearer {token}"}, |
| 403 | + ) |
| 404 | + occur.append(resp.status_code) |
| 405 | + delete_policy(kube_apis.custom_objects, pol_name, test_namespace) |
| 406 | + self.restore_default_vs(kube_apis, virtual_server_setup) |
| 407 | + assert ( |
| 408 | + policy_info["status"] |
| 409 | + and policy_info["status"]["reason"] == "AddedOrUpdated" |
| 410 | + and policy_info["status"]["state"] == "Valid" |
| 411 | + ) |
| 412 | + assert occur.count(200) <= 1 |
0 commit comments