Skip to content

Commit 3011481

Browse files
tests: allow running systests on emulator (#168)
Co-authored-by: Tres Seaver <tseaver@palladion.com>
1 parent 69b8afa commit 3011481

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import os
22
import re
3+
from google.cloud.firestore_v1.base_client import _FIRESTORE_EMULATOR_HOST
34
from test_utils.system import unique_resource_id
5+
from test_utils.system import EmulatorCreds
46

57
FIRESTORE_CREDS = os.environ.get("FIRESTORE_APPLICATION_CREDENTIALS")
68
FIRESTORE_PROJECT = os.environ.get("GCLOUD_PROJECT")
79
RANDOM_ID_REGEX = re.compile("^[a-zA-Z0-9]{20}$")
810
MISSING_DOCUMENT = "No document to update: "
911
DOCUMENT_EXISTS = "Document already exists: "
1012
UNIQUE_RESOURCE_ID = unique_resource_id("-")
13+
EMULATOR_CREDS = EmulatorCreds()
14+
FIRESTORE_EMULATOR = os.environ.get(_FIRESTORE_EMULATOR_HOST) is not None

packages/google-cloud-firestore/tests/system/test_system.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,20 @@
3535
RANDOM_ID_REGEX,
3636
MISSING_DOCUMENT,
3737
UNIQUE_RESOURCE_ID,
38+
EMULATOR_CREDS,
39+
FIRESTORE_EMULATOR,
3840
)
3941

4042

4143
def _get_credentials_and_project():
42-
credentials = service_account.Credentials.from_service_account_file(FIRESTORE_CREDS)
43-
project = FIRESTORE_PROJECT or credentials.project_id
44+
if FIRESTORE_EMULATOR:
45+
credentials = EMULATOR_CREDS
46+
project = FIRESTORE_PROJECT
47+
else:
48+
credentials = service_account.Credentials.from_service_account_file(
49+
FIRESTORE_CREDS
50+
)
51+
project = FIRESTORE_PROJECT or credentials.project_id
4452
return credentials, project
4553

4654

@@ -139,6 +147,7 @@ def test_create_document_w_subcollection(client, cleanup):
139147
assert sorted(child.id for child in children) == sorted(child_ids)
140148

141149

150+
@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137866686")
142151
def test_cannot_use_foreign_key(client, cleanup):
143152
document_id = "cannot" + UNIQUE_RESOURCE_ID
144153
document = client.document("foreign-key", document_id)
@@ -291,6 +300,7 @@ def test_document_update_w_int_field(client, cleanup):
291300
assert snapshot1.to_dict() == expected
292301

293302

303+
@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137867104")
294304
def test_update_document(client, cleanup):
295305
document_id = "for-update" + UNIQUE_RESOURCE_ID
296306
document = client.document("made", document_id)
@@ -880,6 +890,7 @@ def test_collection_group_queries_filters(client, cleanup):
880890
assert found == set(["cg-doc2"])
881891

882892

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

packages/google-cloud-firestore/tests/system/test_system_async.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,23 @@
3434
RANDOM_ID_REGEX,
3535
MISSING_DOCUMENT,
3636
UNIQUE_RESOURCE_ID,
37+
EMULATOR_CREDS,
38+
FIRESTORE_EMULATOR,
3739
)
3840

3941
_test_event_loop = asyncio.new_event_loop()
4042
pytestmark = pytest.mark.asyncio
4143

4244

4345
def _get_credentials_and_project():
44-
credentials = service_account.Credentials.from_service_account_file(FIRESTORE_CREDS)
45-
project = FIRESTORE_PROJECT or credentials.project_id
46+
if FIRESTORE_EMULATOR:
47+
credentials = EMULATOR_CREDS
48+
project = FIRESTORE_PROJECT
49+
else:
50+
credentials = service_account.Credentials.from_service_account_file(
51+
FIRESTORE_CREDS
52+
)
53+
project = FIRESTORE_PROJECT or credentials.project_id
4654
return credentials, project
4755

4856

@@ -148,6 +156,7 @@ async def test_create_document_w_subcollection(client, cleanup):
148156
assert sorted([child.id async for child in children]) == sorted(child_ids)
149157

150158

159+
@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137866686")
151160
async def test_cannot_use_foreign_key(client, cleanup):
152161
document_id = "cannot" + UNIQUE_RESOURCE_ID
153162
document = client.document("foreign-key", document_id)
@@ -300,6 +309,7 @@ async def test_document_update_w_int_field(client, cleanup):
300309
assert snapshot1.to_dict() == expected
301310

302311

312+
@pytest.mark.skipif(FIRESTORE_EMULATOR, reason="Internal Issue b/137867104")
303313
async def test_update_document(client, cleanup):
304314
document_id = "for-update" + UNIQUE_RESOURCE_ID
305315
document = client.document("made", document_id)
@@ -905,6 +915,7 @@ async def test_collection_group_queries_filters(client, cleanup):
905915
assert found == set(["cg-doc2"])
906916

907917

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

0 commit comments

Comments
 (0)