Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(firestore): add support of emulator to run system tests on emulator #31

Merged
merged 7 commits into from Jun 30, 2020
17 changes: 15 additions & 2 deletions tests/system/test_system.py
Expand Up @@ -30,7 +30,9 @@
from google.cloud._helpers import _pb_timestamp_to_datetime
from google.cloud._helpers import UTC
from google.cloud import firestore_v1 as firestore
from google.cloud.firestore_v1.client import _FIRESTORE_EMULATOR_HOST
from test_utils.system import unique_resource_id
from test_utils.system import EmulatorCreds

from time import sleep

Expand All @@ -41,11 +43,19 @@
DOCUMENT_EXISTS = "Document already exists: "
UNIQUE_RESOURCE_ID = unique_resource_id("-")

FIRESTORE_EMULATOR = os.getenv(_FIRESTORE_EMULATOR_HOST) is not None


@pytest.fixture(scope=u"module")
def client():
credentials = service_account.Credentials.from_service_account_file(FIRESTORE_CREDS)
project = FIRESTORE_PROJECT or credentials.project_id
if FIRESTORE_EMULATOR:
credentials = EmulatorCreds()
project = FIRESTORE_PROJECT
else:
credentials = service_account.Credentials.from_service_account_file(
FIRESTORE_CREDS
)
project = FIRESTORE_PROJECT or credentials.project_id
yield firestore.Client(project=project, credentials=credentials)


Expand Down Expand Up @@ -126,6 +136,7 @@ def test_create_document_w_subcollection(client, cleanup):
assert sorted(child.id for child in children) == sorted(child_ids)


@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137866686")
def test_cannot_use_foreign_key(client, cleanup):
document_id = "cannot" + UNIQUE_RESOURCE_ID
document = client.document("foreign-key", document_id)
Expand Down Expand Up @@ -280,6 +291,7 @@ def test_document_update_w_int_field(client, cleanup):
assert snapshot1.to_dict() == expected


@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137867104")
def test_update_document(client, cleanup):
document_id = "for-update" + UNIQUE_RESOURCE_ID
document = client.document("made", document_id)
Expand Down Expand Up @@ -861,6 +873,7 @@ def test_collection_group_queries_filters(client, cleanup):
assert found == set(["cg-doc2"])


@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137865992")
def test_get_all(client, cleanup):
collection_name = "get-all" + UNIQUE_RESOURCE_ID

Expand Down