Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 5 additions & 18 deletions e2e/rust/tests/forward_proxy_graphql_l7.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,19 +217,6 @@ def forward_persisted_get_status(hash_value):
error.read()
return error.code

# The sandbox may resolve policy binary symlinks shortly after the entrypoint
# starts, bumping the policy generation during the first forward request.
# Retry expected-allowed forward requests so the test still targets L7 behavior.
def retry_forward_allowed(label, request_fn):
last_status = None
for attempt in range(6):
last_status = request_fn()
if last_status != 403:
return last_status
DETAILS[f"{{label}}_transient_403_attempts"] = attempt + 1
time.sleep(0.3)
return last_status

def forward_chunked_status(query):
target = f"{{HOST}}:{{PORT}}"
body = json.dumps({{"query": query}}).encode()
Expand Down Expand Up @@ -368,14 +355,14 @@ def raw_chunked_status(query):
return raw_http_status("raw_chunked_query_allowed", request)

results = {{
"forward_query_allowed": retry_forward_allowed("forward_query_allowed", lambda: forward_status(QUERY_VIEWER)),
"forward_get_query_allowed": retry_forward_allowed("forward_get_query_allowed", lambda: forward_get_status(QUERY_VIEWER)),
"forward_query_allowed": forward_status(QUERY_VIEWER),
"forward_get_query_allowed": forward_get_status(QUERY_VIEWER),
"forward_duplicate_get_denied": forward_duplicate_get_status(),
"forward_persisted_get_allowed": retry_forward_allowed("forward_persisted_get_allowed", lambda: forward_persisted_get_status("abc123")),
"forward_persisted_get_allowed": forward_persisted_get_status("abc123"),
"forward_unregistered_persisted_get_denied": forward_persisted_get_status("missing"),
"forward_chunked_query_allowed": retry_forward_allowed("forward_chunked_query_allowed", lambda: forward_chunked_status(QUERY_VIEWER)),
"forward_chunked_query_allowed": forward_chunked_status(QUERY_VIEWER),
"forward_unlisted_field_denied": forward_status(QUERY_REPOSITORY),
"forward_mutation_allowed": retry_forward_allowed("forward_mutation_allowed", lambda: forward_status(MUTATION_CREATE)),
"forward_mutation_allowed": forward_status(MUTATION_CREATE),
"forward_deny_rule_denied": forward_status(MUTATION_DELETE),
"raw_query_allowed": raw_status(QUERY_VIEWER, "raw_query_allowed"),
"raw_get_query_allowed": raw_get_status(QUERY_VIEWER, "raw_get_query_allowed"),
Expand Down
25 changes: 8 additions & 17 deletions e2e/rust/tests/forward_proxy_l7_bypass.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,24 +109,15 @@ async fn forward_proxy_allows_l7_permitted_request() {

let script = format!(
r#"
import urllib.request, urllib.error, json, sys, time
import urllib.request, urllib.error, json, sys
url = "http://{host}:{port}/allowed"
# Retry expected-allowed requests across the startup symlink-resolution reload,
# which can transiently surface as a stale-policy 403 in the forward proxy.
last = {{"status": -1, "error": "not attempted"}}
for attempt in range(6):
try:
resp = urllib.request.urlopen(url, timeout=15)
last = {{"status": resp.status, "error": None, "attempt": attempt + 1}}
break
except urllib.error.HTTPError as e:
last = {{"status": e.code, "error": str(e), "attempt": attempt + 1}}
if e.code != 403:
break
time.sleep(0.3)
except Exception as e:
last = {{"status": -1, "error": str(e), "attempt": attempt + 1}}
break
try:
resp = urllib.request.urlopen(url, timeout=15)
last = {{"status": resp.status, "error": None}}
except urllib.error.HTTPError as e:
last = {{"status": e.code, "error": str(e)}}
except Exception as e:
last = {{"status": -1, "error": str(e)}}
print(json.dumps(last))
"#,
host = server.host,
Expand Down
Loading