Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Accessing Firestore document in Firebase emulator fails with AttributeError #433

@nksma

Description

@nksma

The recent change (4381ad5) assumes _credentials to have id_token attribute, but that's not the case all the time.

https://github.com/googleapis/python-firestore/blame/main/google/cloud/firestore_v1/base_client.py#L183

When it doesn't contain the id_token attribute, AttributeError is raised.
Before checking if id_token is None, we should check if the attribute exists using hasattr()

Environment details

  • OS type and version: Mac OS X (Darwin mac-mini.lan 20.5.0)
  • Python version: 3.8.8
  • pip version: 21.1.2
  • google-cloud-firestore version: 2.3.0

Steps to reproduce

  1. run unit test that reads and writes Firestore document using firebase-emulator:exec

Code example

omitted since it's a straightforward bug.

Stack trace

  File "/opt/venv/lib/python3.8/site-packages/google/cloud/firestore_v1/document.py", line 167, in set
     write_results = batch.commit(**kwargs)
  File "/opt/venv/lib/python3.8/site-packages/google/cloud/firestore_v1/batch.py", line 59, in commit
    commit_response = self._client._firestore_api.commit(
   File "/opt/venv/lib/python3.8/site-packages/google/cloud/firestore_v1/client.py", line 109, in _firestore_api
    return self._firestore_api_helper(
   File "/opt/venv/lib/python3.8/site-packages/google/cloud/firestore_v1/base_client.py", line 152, in _firestore_api_helper
     channel = self._emulator_channel(transport)
   File "/opt/venv/lib/python3.8/site-packages/google/cloud/firestore_v1/base_client.py", line 183, in _emulator_channel
     if self._credentials is not None and self._credentials.id_token is not None:
 AttributeError: 'Credentials' object has no attribute 'id_token'

Metadata

Metadata

Assignees

Labels

api: firestoreIssues related to the googleapis/python-firestore API.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions