✅(backend) fix randomly failing test due to delay before check
There is a delay between the time the signature is issued and the
time it is checked. Although this delay is minimal, if the signature
is issued at the end of a second, both timestamps can differ of 1s.
> assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
AssertionError: assert equals failed '20250504T175307Z' '20250504T175308Z'
This commit is contained in:
committed by
Anthony LC
parent
184b5c015b
commit
d12c637dad
@@ -14,6 +14,7 @@ from django.utils import timezone
|
|||||||
import pycrdt
|
import pycrdt
|
||||||
import pytest
|
import pytest
|
||||||
import requests
|
import requests
|
||||||
|
from freezegun import freeze_time
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
|
|
||||||
from core import factories, models
|
from core import factories, models
|
||||||
@@ -133,19 +134,21 @@ def test_api_documents_duplicate_success(index):
|
|||||||
|
|
||||||
# Ensure access persists after the owner loses access to the original document
|
# Ensure access persists after the owner loses access to the original document
|
||||||
models.DocumentAccess.objects.filter(document=document).delete()
|
models.DocumentAccess.objects.filter(document=document).delete()
|
||||||
response = client.get(
|
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=image_refs[0][1]
|
now = timezone.now()
|
||||||
)
|
with freeze_time(now):
|
||||||
|
response = client.get(
|
||||||
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=image_refs[0][1]
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
authorization = response["Authorization"]
|
authorization = response["Authorization"]
|
||||||
assert "AWS4-HMAC-SHA256 Credential=" in authorization
|
assert "AWS4-HMAC-SHA256 Credential=" in authorization
|
||||||
assert (
|
assert (
|
||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from django.utils import timezone
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import requests
|
import requests
|
||||||
|
from freezegun import freeze_time
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
|
|
||||||
from core import factories, models
|
from core import factories, models
|
||||||
@@ -52,9 +53,11 @@ def test_api_documents_media_auth_anonymous_public():
|
|||||||
factories.DocumentFactory(id=document_id, link_reach="public", attachments=[key])
|
factories.DocumentFactory(id=document_id, link_reach="public", attachments=[key])
|
||||||
|
|
||||||
original_url = f"http://localhost/media/{key:s}"
|
original_url = f"http://localhost/media/{key:s}"
|
||||||
response = APIClient().get(
|
now = timezone.now()
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=original_url
|
with freeze_time(now):
|
||||||
)
|
response = APIClient().get(
|
||||||
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=original_url
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -64,7 +67,7 @@ def test_api_documents_media_auth_anonymous_public():
|
|||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
||||||
@@ -167,9 +170,11 @@ def test_api_documents_media_auth_anonymous_attachments():
|
|||||||
parent = factories.DocumentFactory(link_reach="public")
|
parent = factories.DocumentFactory(link_reach="public")
|
||||||
factories.DocumentFactory(parent=parent, link_reach="restricted", attachments=[key])
|
factories.DocumentFactory(parent=parent, link_reach="restricted", attachments=[key])
|
||||||
|
|
||||||
response = APIClient().get(
|
now = timezone.now()
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
with freeze_time(now):
|
||||||
)
|
response = APIClient().get(
|
||||||
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -179,7 +184,7 @@ def test_api_documents_media_auth_anonymous_attachments():
|
|||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
||||||
@@ -221,9 +226,11 @@ def test_api_documents_media_auth_authenticated_public_or_authenticated(reach):
|
|||||||
|
|
||||||
factories.DocumentFactory(id=document_id, link_reach=reach, attachments=[key])
|
factories.DocumentFactory(id=document_id, link_reach=reach, attachments=[key])
|
||||||
|
|
||||||
response = client.get(
|
now = timezone.now()
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
with freeze_time(now):
|
||||||
)
|
response = client.get(
|
||||||
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -233,7 +240,7 @@ def test_api_documents_media_auth_authenticated_public_or_authenticated(reach):
|
|||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
||||||
@@ -307,9 +314,11 @@ def test_api_documents_media_auth_related(via, mock_user_teams):
|
|||||||
mock_user_teams.return_value = ["lasuite", "unknown"]
|
mock_user_teams.return_value = ["lasuite", "unknown"]
|
||||||
factories.TeamDocumentAccessFactory(document=document, team="lasuite")
|
factories.TeamDocumentAccessFactory(document=document, team="lasuite")
|
||||||
|
|
||||||
response = client.get(
|
now = timezone.now()
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
with freeze_time(now):
|
||||||
)
|
response = client.get(
|
||||||
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=media_url
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -319,7 +328,7 @@ def test_api_documents_media_auth_related(via, mock_user_teams):
|
|||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
||||||
@@ -373,10 +382,12 @@ def test_api_documents_media_auth_missing_status_metadata():
|
|||||||
|
|
||||||
factories.DocumentFactory(id=document_id, link_reach="public", attachments=[key])
|
factories.DocumentFactory(id=document_id, link_reach="public", attachments=[key])
|
||||||
|
|
||||||
|
now = timezone.now()
|
||||||
original_url = f"http://localhost/media/{key:s}"
|
original_url = f"http://localhost/media/{key:s}"
|
||||||
response = APIClient().get(
|
with freeze_time(now):
|
||||||
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=original_url
|
response = APIClient().get(
|
||||||
)
|
"/api/v1.0/documents/media-auth/", HTTP_X_ORIGINAL_URL=original_url
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -386,7 +397,7 @@ def test_api_documents_media_auth_missing_status_metadata():
|
|||||||
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
"SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature="
|
||||||
in authorization
|
in authorization
|
||||||
)
|
)
|
||||||
assert response["X-Amz-Date"] == timezone.now().strftime("%Y%m%dT%H%M%SZ")
|
assert response["X-Amz-Date"] == now.strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
s3_url = urlparse(settings.AWS_S3_ENDPOINT_URL)
|
||||||
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
file_url = f"{settings.AWS_S3_ENDPOINT_URL:s}/impress-media-storage/{key:s}"
|
||||||
|
|||||||
Reference in New Issue
Block a user