Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 70013c8

Browse files
chore: Correct x-goog-api-client header logic (#876)
1 parent bde3fb0 commit 70013c8

14 files changed

+65
-24
lines changed

‎firebase_admin/_http_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
DEFAULT_TIMEOUT_SECONDS = 120
3939

4040
METRICS_HEADERS = {
41-
'X-GOOG-API-CLIENT': _utils.get_metrics_header(),
41+
'x-goog-api-client': _utils.get_metrics_header(),
4242
}
4343

4444
class HttpClient:
@@ -76,7 +76,6 @@ def __init__(
7676

7777
if headers:
7878
self._session.headers.update(headers)
79-
self._session.headers.update(METRICS_HEADERS)
8079
if retries:
8180
self._session.mount('http://', requests.adapters.HTTPAdapter(max_retries=retries))
8281
self._session.mount('https://', requests.adapters.HTTPAdapter(max_retries=retries))
@@ -120,6 +119,7 @@ class call this method to send HTTP requests out. Refer to
120119
"""
121120
if 'timeout' not in kwargs:
122121
kwargs['timeout'] = self.timeout
122+
kwargs.setdefault('headers', {}).update(METRICS_HEADERS)
123123
resp = self._session.request(method, self.base_url + url, **kwargs)
124124
resp.raise_for_status()
125125
return resp

‎firebase_admin/app_check.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class _AppCheckService:
5252
_jwks_client = None
5353

5454
_APP_CHECK_HEADERS = {
55-
'X-GOOG-API-CLIENT': _utils.get_metrics_header(),
55+
'x-goog-api-client': _utils.get_metrics_header(),
5656
}
5757

5858
def __init__(self, app):

‎firebase_admin/storage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class _StorageClient:
5656
"""Holds a Google Cloud Storage client instance."""
5757

5858
STORAGE_HEADERS = {
59-
'X-GOOG-API-CLIENT': _utils.get_metrics_header(),
59+
'x-goog-api-client': _utils.get_metrics_header(),
6060
}
6161

6262
def __init__(self, credentials, project, default_bucket):

‎tests/test_auth_providers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ def _assert_request(request, expected_method, expected_url):
7575
assert request.method == expected_method
7676
assert request.url == expected_url
7777
assert request.headers['X-Client-Version'] == f'Python/Admin/{firebase_admin.__version__}'
78-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
78+
expected_metrics_header = [
79+
_utils.get_metrics_header(),
80+
_utils.get_metrics_header() + ' mock-cred-metric-tag'
81+
]
82+
assert request.headers['x-goog-api-client'] in expected_metrics_header
7983

8084
class TestOIDCProviderConfig:
8185

‎tests/test_db.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,8 @@ def _assert_request(self, request, expected_method, expected_url):
198198
assert request.url == expected_url
199199
assert request.headers['Authorization'] == 'Bearer mock-token'
200200
assert request.headers['User-Agent'] == db._USER_AGENT
201-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
201+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
202+
assert request.headers['x-goog-api-client'] == expected_metrics_header
202203

203204
@pytest.mark.parametrize('data', valid_values)
204205
def test_get_value(self, data):
@@ -665,7 +666,8 @@ def _assert_request(self, request, expected_method, expected_url):
665666
assert request.url == expected_url
666667
assert request.headers['Authorization'] == 'Bearer mock-token'
667668
assert request.headers['User-Agent'] == db._USER_AGENT
668-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
669+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
670+
assert request.headers['x-goog-api-client'] == expected_metrics_header
669671

670672
def test_get_value(self):
671673
ref = db.reference('/test')

‎tests/test_functions.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ def test_task_enqueue(self):
122122
assert recorder[0].url == _DEFAULT_REQUEST_URL
123123
assert recorder[0].headers['Content-Type'] == 'application/json'
124124
assert recorder[0].headers['Authorization'] == 'Bearer mock-token'
125-
assert recorder[0].headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
125+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
126+
assert recorder[0].headers['x-goog-api-client'] == expected_metrics_header
126127
assert task_id == 'test-task-id'
127128

128129
def test_task_enqueue_with_extension(self):
@@ -139,7 +140,8 @@ def test_task_enqueue_with_extension(self):
139140
assert recorder[0].url == _CLOUD_TASKS_URL + resource_name
140141
assert recorder[0].headers['Content-Type'] == 'application/json'
141142
assert recorder[0].headers['Authorization'] == 'Bearer mock-token'
142-
assert recorder[0].headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
143+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
144+
assert recorder[0].headers['x-goog-api-client'] == expected_metrics_header
143145
assert task_id == 'test-task-id'
144146

145147
def test_task_delete(self):
@@ -149,8 +151,8 @@ def test_task_delete(self):
149151
assert len(recorder) == 1
150152
assert recorder[0].method == 'DELETE'
151153
assert recorder[0].url == _DEFAULT_TASK_URL
152-
assertrecorder[0].headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
153-
154+
expected_metrics_header= _utils.get_metrics_header()+' mock-cred-metric-tag'
155+
assertrecorder[0].headers['x-goog-api-client'] ==expected_metrics_header
154156

155157
class TestTaskQueueOptions:
156158

‎tests/test_http_client.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,21 @@ def test_metrics_headers():
7171
assert len(recorder) == 1
7272
assert recorder[0].method == 'GET'
7373
assert recorder[0].url == _TEST_URL
74-
assert recorder[0].headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
74+
assert recorder[0].headers['x-goog-api-client'] == _utils.get_metrics_header()
75+
76+
def test_metrics_headers_with_credentials():
77+
client = _http_client.HttpClient(
78+
credential=testutils.MockGoogleCredential())
79+
assert client.session is not None
80+
recorder = _instrument(client, 'body')
81+
resp = client.request('get', _TEST_URL)
82+
assert resp.status_code == 200
83+
assert resp.text == 'body'
84+
assert len(recorder) == 1
85+
assert recorder[0].method == 'GET'
86+
assert recorder[0].url == _TEST_URL
87+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
88+
assert recorder[0].headers['x-goog-api-client'] == expected_metrics_header
7589

7690
def test_credential():
7791
client = _http_client.HttpClient(

‎tests/test_instance_id.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ def _instrument_iid_service(self, app, status=200, payload='True'):
6868
def _assert_request(self, request, expected_method, expected_url):
6969
assert request.method == expected_method
7070
assert request.url == expected_url
71-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
71+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
72+
assert request.headers['x-goog-api-client'] == expected_metrics_header
7273

7374
def _get_url(self, project_id, iid):
7475
return instance_id._IID_SERVICE_URL + 'project/{0}/instanceId/{1}'.format(project_id, iid)

‎tests/test_messaging.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,8 @@ def _assert_request(self, request, expected_method, expected_url, expected_body=
16831683
assert request.url == expected_url
16841684
assert request.headers['X-GOOG-API-FORMAT-VERSION'] == '2'
16851685
assert request.headers['X-FIREBASE-CLIENT'] == self._CLIENT_VERSION
1686-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
1686+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
1687+
assert request.headers['x-goog-api-client'] == expected_metrics_header
16871688
if expected_body is None:
16881689
assert request.body is None
16891690
else:
@@ -2604,7 +2605,8 @@ def _assert_request(self, request, expected_method, expected_url):
26042605
assert request.method == expected_method
26052606
assert request.url == expected_url
26062607
assert request.headers['access_token_auth'] == 'true'
2607-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
2608+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
2609+
assert request.headers['x-goog-api-client'] == expected_metrics_header
26082610

26092611
def _get_url(self, path):
26102612
return '{0}/{1}'.format(messaging._MessagingService.IID_URL, path)

‎tests/test_ml.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ def _assert_request(request, expected_method, expected_url):
339339
assert request.method == expected_method
340340
assert request.url == expected_url
341341
assert request.headers['X-FIREBASE-CLIENT'] == f'fire-admin-python/{firebase_admin.__version__}'
342-
assert request.headers['X-GOOG-API-CLIENT'] == _utils.get_metrics_header()
342+
expected_metrics_header = _utils.get_metrics_header() + ' mock-cred-metric-tag'
343+
assert request.headers['x-goog-api-client'] == expected_metrics_header
343344

344345
class _TestStorageClient:
345346
@staticmethod

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /