|
14 | 14 |
|
15 | 15 | """Integration tests for firebase_admin.functions module.""" |
16 | 16 |
|
| 17 | +import os |
17 | 18 | import pytest |
18 | 19 |
|
19 | 20 | import firebase_admin |
20 | 21 | from firebase_admin import functions |
| 22 | +from firebase_admin import _utils |
21 | 23 | from integration import conftest |
22 | 24 |
|
23 | 25 |
|
24 | 26 | _DEFAULT_DATA = {'data': {'city': 'Seattle'}} |
| 27 | +def integration_conf(request): |
| 28 | + host_override = os.environ.get('CLOUD_TASKS_EMULATOR_HOST') |
| 29 | + if host_override: |
| 30 | + return _utils.EmulatorAdminCredentials(), 'fake-project-id' |
| 31 | + |
| 32 | + return conftest.integration_conf(request) |
25 | 33 |
|
26 | 34 | @pytest.fixture(scope='module') |
27 | 35 | def app(request): |
28 | | - cred, _ = conftest.integration_conf(request) |
29 | | - return firebase_admin.initialize_app(cred, name='integration-functions') |
| 36 | + cred, project_id = integration_conf(request) |
| 37 | + return firebase_admin.initialize_app( |
| 38 | + cred, options={'projectId': project_id}, name='integration-functions') |
| 39 | + |
| 40 | +@pytest.fixture(scope='module', autouse=True) |
| 41 | +def default_app(request): |
| 42 | + cred, project_id = integration_conf(request) |
| 43 | + app = firebase_admin.initialize_app(cred, options={'projectId': project_id}) |
| 44 | + yield app |
| 45 | + firebase_admin.delete_app(app) |
30 | 46 |
|
31 | 47 |
|
32 | 48 | class TestFunctions: |
@@ -56,17 +72,21 @@ def test_task_queue_app(self, task_queue_params, app): |
56 | 72 | assert queue is not None |
57 | 73 | assert callable(queue.enqueue) |
58 | 74 | assert callable(queue.delete) |
59 | | - |
60 | | - def test_task_enqueue(self, app): |
61 | | - queue = functions.task_queue('testTaskQueue', app=app) |
| 75 | + |
| 76 | + def test_task_enqueue(self): |
| 77 | + queue = functions.task_queue('testTaskQueue') |
62 | 78 | task_id = queue.enqueue(_DEFAULT_DATA) |
63 | 79 | assert task_id is not None |
64 | | - |
65 | | - def test_task_delete(self, app): |
| 80 | + |
| 81 | + @pytest.mark.skipif( |
| 82 | + os.environ.get('CLOUD_TASKS_EMULATOR_HOST') is not None, |
| 83 | + reason="Skipping test_task_delete against emulator due to bug in firebase-tools" |
| 84 | + ) |
| 85 | + def test_task_delete(self): |
66 | 86 | # Skip this test against the emulator since tasks can't be delayed there to verify deletion |
67 | 87 | # See: https://github.com/firebase/firebase-tools/issues/8254 |
68 | 88 | task_options = functions.TaskOptions(schedule_delay_seconds=60) |
69 | | - queue = functions.task_queue('testTaskQueue', app=app) |
| 89 | + queue = functions.task_queue('testTaskQueue') |
70 | 90 | task_id = queue.enqueue(_DEFAULT_DATA, task_options) |
71 | 91 | assert task_id is not None |
72 | 92 | queue.delete(task_id) |
|
0 commit comments