Skip to content

Commit 6a9923e

Browse files
authored
Fix: Add logs on AssertionError for issue #1512 (#1518)
Adding Response.content and headers will help debug this flaky issue which throws 403, having more verbose information would be helpful. Closes #1512
1 parent 083a505 commit 6a9923e

File tree

1 file changed

+99
-23
lines changed

1 file changed

+99
-23
lines changed

tests/system/test__signing.py

Lines changed: 99 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,17 @@ def _create_signed_list_blobs_url_helper(
5151
)
5252

5353
response = requests.get(signed_url)
54-
assert response.status_code == 200
54+
assert (
55+
response.status_code == 200
56+
), f"Response content start: {response.content} \
57+
:Response content end. \
58+
Response headers start: {response.headers} \
59+
:Response headers end."
5560

5661

57-
def test_create_signed_list_blobs_url_v2(storage_client, signing_bucket, no_mtls):
62+
def test_create_signed_list_blobs_url_v2(
63+
storage_client, signing_bucket, no_mtls
64+
):
5865
_create_signed_list_blobs_url_helper(
5966
storage_client,
6067
signing_bucket,
@@ -76,7 +83,9 @@ def test_create_signed_list_blobs_url_v2_w_expiration(
7683
)
7784

7885

79-
def test_create_signed_list_blobs_url_v4(storage_client, signing_bucket, no_mtls):
86+
def test_create_signed_list_blobs_url_v4(
87+
storage_client, signing_bucket, no_mtls
88+
):
8089
_create_signed_list_blobs_url_helper(
8190
storage_client,
8291
signing_bucket,
@@ -137,7 +146,12 @@ def _create_signed_read_url_helper(
137146
headers["x-goog-encryption-key-sha256"] = key_hash
138147

139148
response = requests.get(signed_url, headers=headers)
140-
assert response.status_code == 200
149+
assert (
150+
response.status_code == 200
151+
), f"Response content start: {response.content} \
152+
:Response content end. \
153+
Response headers start: {response.headers} \
154+
:Response headers end."
141155

142156
if payload is not None:
143157
assert response.content == payload
@@ -215,7 +229,9 @@ def test_create_signed_read_url_v4_w_non_ascii_name(
215229
)
216230

217231

218-
def test_create_signed_read_url_v2_w_csek(storage_client, signing_bucket, no_mtls):
232+
def test_create_signed_read_url_v2_w_csek(
233+
storage_client, signing_bucket, no_mtls
234+
):
219235
encryption_key = os.urandom(32)
220236
_create_signed_read_url_helper(
221237
storage_client,
@@ -226,7 +242,9 @@ def test_create_signed_read_url_v2_w_csek(storage_client, signing_bucket, no_mtl
226242
)
227243

228244

229-
def test_create_signed_read_url_v4_w_csek(storage_client, signing_bucket, no_mtls):
245+
def test_create_signed_read_url_v4_w_csek(
246+
storage_client, signing_bucket, no_mtls
247+
):
230248
encryption_key = os.urandom(32)
231249
_create_signed_read_url_helper(
232250
storage_client,
@@ -309,7 +327,9 @@ def test_create_signed_read_url_v4_w_access_token_universe_domain(
309327
"https://www.googleapis.com/auth/devstorage.read_write",
310328
"https://www.googleapis.com/auth/iam",
311329
]
312-
response = universe_domain_iam_client.generate_access_token(name=name, scope=scope)
330+
response = universe_domain_iam_client.generate_access_token(
331+
name=name, scope=scope
332+
)
313333

314334
_create_signed_read_url_helper(
315335
universe_domain_client,
@@ -320,7 +340,9 @@ def test_create_signed_read_url_v4_w_access_token_universe_domain(
320340
)
321341

322342

323-
def _create_signed_delete_url_helper(client, bucket, version="v2", expiration=None):
343+
def _create_signed_delete_url_helper(
344+
client, bucket, version="v2", expiration=None
345+
):
324346
expiration = _morph_expiration(version, expiration)
325347

326348
blob = bucket.blob("DELETE_ME.txt")
@@ -335,7 +357,12 @@ def _create_signed_delete_url_helper(client, bucket, version="v2", expiration=No
335357

336358
response = requests.request("DELETE", signed_delete_url)
337359

338-
assert response.status_code == 204
360+
assert (
361+
response.status_code == 204
362+
), f"Response content start: {response.content} \
363+
:Response content end. \
364+
Response headers start: {response.headers} \
365+
:Response headers end."
339366
assert response.content == b""
340367
assert not blob.exists()
341368

@@ -345,7 +372,9 @@ def test_create_signed_delete_url_v2(storage_client, signing_bucket, no_mtls):
345372

346373

347374
def test_create_signed_delete_url_v4(storage_client, signing_bucket, no_mtls):
348-
_create_signed_delete_url_helper(storage_client, signing_bucket, version="v4")
375+
_create_signed_delete_url_helper(
376+
storage_client, signing_bucket, version="v4"
377+
)
349378

350379

351380
def _create_signed_resumable_upload_url_helper(
@@ -364,22 +393,39 @@ def _create_signed_resumable_upload_url_helper(
364393
)
365394

366395
post_headers = {"x-goog-resumable": "start"}
367-
post_response = requests.post(signed_resumable_upload_url, headers=post_headers)
368-
assert post_response.status_code == 201
396+
post_response = requests.post(
397+
signed_resumable_upload_url, headers=post_headers
398+
)
399+
assert (
400+
post_response.status_code == 201
401+
), f"Response content start: {post_response.content} \
402+
:Response content end. \
403+
Response headers start: {post_response.headers} \
404+
:Response headers end."
369405

370406
# Finish uploading the body.
371407
location = post_response.headers["Location"]
372408
put_headers = {"content-length": str(len(payload))}
373409
put_response = requests.put(location, headers=put_headers, data=payload)
374-
assert put_response.status_code == 200
410+
assert (
411+
put_response.status_code == 200
412+
), f"Response content start: {put_response.content} \
413+
:Response content end. \
414+
Response headers start: {put_response.headers} \
415+
:Response headers end."
375416

376417
# Download using a signed URL and verify.
377418
signed_download_url = blob.generate_signed_url(
378419
expiration=expiration, method="GET", client=client, version=version
379420
)
380421

381422
get_response = requests.get(signed_download_url)
382-
assert get_response.status_code == 200
423+
assert (
424+
get_response.status_code == 200
425+
), f"Response content start: {get_response.content} \
426+
:Response content end. \
427+
Response headers start: {get_response.headers} \
428+
:Response headers end."
383429
assert get_response.content == payload
384430

385431
# Finally, delete the blob using a signed URL.
@@ -391,18 +437,27 @@ def _create_signed_resumable_upload_url_helper(
391437
)
392438

393439
delete_response = requests.delete(signed_delete_url)
394-
assert delete_response.status_code == 204
440+
assert (
441+
delete_response.status_code == 204
442+
), f"Response content start: {delete_response.content} \
443+
:Response content end. \
444+
Response headers start: {delete_response.headers} \
445+
:Response headers end."
395446

396447

397-
def test_create_signed_resumable_upload_url_v2(storage_client, signing_bucket, no_mtls):
448+
def test_create_signed_resumable_upload_url_v2(
449+
storage_client, signing_bucket, no_mtls
450+
):
398451
_create_signed_resumable_upload_url_helper(
399452
storage_client,
400453
signing_bucket,
401454
version="v2",
402455
)
403456

404457

405-
def test_create_signed_resumable_upload_url_v4(storage_client, signing_bucket, no_mtls):
458+
def test_create_signed_resumable_upload_url_v4(
459+
storage_client, signing_bucket, no_mtls
460+
):
406461
_create_signed_resumable_upload_url_helper(
407462
storage_client,
408463
signing_bucket,
@@ -439,10 +494,17 @@ def test_generate_signed_post_policy_v4(
439494
)
440495
with open(blob_name, "r") as f:
441496
files = {"file": (blob_name, f)}
442-
response = requests.post(policy["url"], data=policy["fields"], files=files)
497+
response = requests.post(
498+
policy["url"], data=policy["fields"], files=files
499+
)
443500

444501
os.remove(blob_name)
445-
assert response.status_code == 204
502+
assert (
503+
response.status_code == 204
504+
), f"Response content start: {response.content} \
505+
:Response content end. \
506+
Response headers start: {response.headers} \
507+
:Response headers end."
446508

447509
blob = bucket.get_blob(blob_name)
448510
assert blob.download_as_bytes() == payload
@@ -487,10 +549,17 @@ def test_generate_signed_post_policy_v4_access_token_sa_email(
487549
)
488550
with open(blob_name, "r") as f:
489551
files = {"file": (blob_name, f)}
490-
response = requests.post(policy["url"], data=policy["fields"], files=files)
552+
response = requests.post(
553+
policy["url"], data=policy["fields"], files=files
554+
)
491555

492556
os.remove(blob_name)
493-
assert response.status_code == 204
557+
assert (
558+
response.status_code == 204
559+
), f"Response content start: {response.content} \
560+
:Response content end. \
561+
Response headers start: {response.headers} \
562+
:Response headers end."
494563

495564
blob = signing_bucket.get_blob(blob_name)
496565
blobs_to_delete.append(blob)
@@ -522,9 +591,16 @@ def test_generate_signed_post_policy_v4_invalid_field(
522591
)
523592
with open(blob_name, "r") as f:
524593
files = {"file": (blob_name, f)}
525-
response = requests.post(policy["url"], data=policy["fields"], files=files)
594+
response = requests.post(
595+
policy["url"], data=policy["fields"], files=files
596+
)
526597

527598
os.remove(blob_name)
528-
assert response.status_code == 400
599+
assert (
600+
response.status_code == 400
601+
), f"Response content start: {response.content} \
602+
:Response content end. \
603+
Response headers start: {response.headers} \
604+
:Response headers end."
529605

530606
assert list(bucket.list_blobs()) == []

0 commit comments

Comments
 (0)