Skip to content

Commit 00c3011

Browse files
authored
Merge pull request googleapis#3075 from dhermes/fix-3071
Passing along client instead of project when creating error API.
2 parents e9edb42 + 00c50cb commit 00c3011

File tree

2 files changed

+65
-61
lines changed

2 files changed

+65
-61
lines changed

error_reporting/google/cloud/error_reporting/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def report_errors_api(self):
159159
"""
160160
if self._report_errors_api is None:
161161
if self._use_gax:
162-
self._report_errors_api = make_report_error_api(self._project)
162+
self._report_errors_api = make_report_error_api(self)
163163
else:
164164
self._report_errors_api = _ErrorReportingLoggingAPI(
165165
self._project, self._credentials, self._http)

error_reporting/unit_tests/test_client.py

Lines changed: 64 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -26,67 +26,67 @@ def _make_credentials():
2626

2727
class TestClient(unittest.TestCase):
2828

29+
PROJECT = 'PROJECT'
30+
SERVICE = 'SERVICE'
31+
VERSION = 'myversion'
32+
2933
@staticmethod
3034
def _get_target_class():
3135
from google.cloud.error_reporting.client import Client
3236

3337
return Client
3438

35-
def _getHttpContext(self):
36-
from google.cloud.error_reporting.client import HTTPContext
37-
38-
return HTTPContext
39-
4039
def _make_one(self, *args, **kw):
4140
return self._get_target_class()(*args, **kw)
4241

43-
def _makeHTTP(self, *args, **kw):
44-
return self._getHttpContext()(*args, **kw)
42+
def _make_http(self, *args, **kw):
43+
from google.cloud.error_reporting.client import HTTPContext
4544

46-
PROJECT = 'PROJECT'
47-
SERVICE = 'SERVICE'
48-
VERSION = 'myversion'
45+
return HTTPContext(*args, **kw)
4946

5047
@mock.patch(
5148
'google.cloud.error_reporting.client._determine_default_project')
52-
def test_ctor_default(self, _):
53-
CREDENTIALS = _make_credentials()
54-
target = self._make_one(credentials=CREDENTIALS)
55-
self.assertEqual(target.service, target.DEFAULT_SERVICE)
56-
self.assertEqual(target.version, None)
49+
def test_ctor_default(self, default_mock):
50+
credentials = _make_credentials()
51+
client = self._make_one(credentials=credentials)
52+
self.assertEqual(client.service, client.DEFAULT_SERVICE)
53+
self.assertEqual(client.version, None)
54+
default_mock.assert_called_once_with()
5755

5856
def test_ctor_params(self):
59-
CREDENTIALS = _make_credentials()
60-
target = self._make_one(project=self.PROJECT,
61-
credentials=CREDENTIALS,
57+
credentials = _make_credentials()
58+
client = self._make_one(project=self.PROJECT,
59+
credentials=credentials,
6260
service=self.SERVICE,
6361
version=self.VERSION)
64-
self.assertEqual(target.service, self.SERVICE)
65-
self.assertEqual(target.version, self.VERSION)
62+
self.assertEqual(client.service, self.SERVICE)
63+
self.assertEqual(client.version, self.VERSION)
6664

6765
def test_report_exception_with_gax(self):
68-
CREDENTIALS = _make_credentials()
69-
target = self._make_one(project=self.PROJECT,
70-
credentials=CREDENTIALS)
66+
credentials = _make_credentials()
67+
client = self._make_one(project=self.PROJECT,
68+
credentials=credentials)
7169

7270
patch = mock.patch(
7371
'google.cloud.error_reporting.client.make_report_error_api')
7472
with patch as make_api:
7573
try:
7674
raise NameError
7775
except NameError:
78-
target.report_exception()
76+
client.report_exception()
7977
payload = make_api.return_value.report_error_event.call_args[0][0]
78+
make_api.assert_called_once_with(client)
79+
8080
self.assertEqual(payload['serviceContext'], {
81-
'service': target.DEFAULT_SERVICE,
81+
'service': client.DEFAULT_SERVICE,
8282
})
8383
self.assertIn('test_report', payload['message'])
8484
self.assertIn('test_client.py', payload['message'])
8585

8686
def test_report_exception_wo_gax(self):
87-
CREDENTIALS = _make_credentials()
88-
target = self._make_one(project=self.PROJECT,
89-
credentials=CREDENTIALS,
87+
credentials = _make_credentials()
88+
client = self._make_one(project=self.PROJECT,
89+
credentials=credentials,
9090
use_gax=False)
9191
patch = mock.patch(
9292
'google.cloud.error_reporting.client._ErrorReportingLoggingAPI'
@@ -95,43 +95,46 @@ def test_report_exception_wo_gax(self):
9595
try:
9696
raise NameError
9797
except NameError:
98-
target.report_exception()
98+
client.report_exception()
9999
mock_report = _error_api.return_value.report_error_event
100100
payload = mock_report.call_args[0][0]
101101

102102
self.assertEqual(payload['serviceContext'], {
103-
'service': target.DEFAULT_SERVICE,
103+
'service': client.DEFAULT_SERVICE,
104104
})
105105
self.assertIn('test_report', payload['message'])
106106
self.assertIn('test_client.py', payload['message'])
107-
self.assertIsNotNone(target.report_errors_api)
107+
self.assertIsNotNone(client.report_errors_api)
108108

109109
@mock.patch('google.cloud.error_reporting.client.make_report_error_api')
110110
def test_report_exception_with_service_version_in_constructor(
111-
self, make_client):
112-
CREDENTIALS = _make_credentials()
113-
SERVICE = "notdefault"
114-
VERSION = "notdefaultversion"
115-
target = self._make_one(project=self.PROJECT,
116-
credentials=CREDENTIALS,
117-
service=SERVICE,
118-
version=VERSION)
119-
120-
http_context = self._makeHTTP(method="GET", response_status_code=500)
121-
122-
123-
client = mock.Mock()
124-
make_client.return_value = client
111+
self, make_api):
112+
credentials = _make_credentials()
113+
service = 'notdefault'
114+
version = 'notdefaultversion'
115+
client = self._make_one(project=self.PROJECT,
116+
credentials=credentials,
117+
service=service,
118+
version=version)
119+
120+
http_context = self._make_http(
121+
method='GET', response_status_code=500)
122+
123+
124+
error_api = mock.Mock(spec=['report_error_event'])
125+
make_api.return_value = error_api
125126

126127
try:
127128
raise NameError
128129
except NameError:
129-
target.report_exception(http_context=http_context, user=USER)
130+
client.report_exception(http_context=http_context, user=user)
131+
132+
make_api.assert_called_once_with(client)
130133

131-
payload = client.report_error_event.call_args[0][0]
134+
payload = error_api.report_error_event.call_args[0][0]
132135
self.assertEqual(payload['serviceContext'], {
133-
'service': SERVICE,
134-
'version': VERSION
136+
'service': service,
137+
'version': version
135138
})
136139
self.assertIn(
137140
'test_report_exception_with_service_version_in_constructor',
@@ -141,23 +144,24 @@ def test_report_exception_with_service_version_in_constructor(
141144
payload['context']['httpContext']['responseStatusCode'], 500)
142145
self.assertEqual(
143146
payload['context']['httpContext']['method'], 'GET')
144-
self.assertEqual(payload['context']['user'], USER)
147+
self.assertEqual(payload['context']['user'], user)
145148

146149
@mock.patch('google.cloud.error_reporting.client.make_report_error_api')
147-
def test_report(self, make_client):
148-
CREDENTIALS = _make_credentials()
149-
target = self._make_one(project=self.PROJECT,
150-
credentials=CREDENTIALS)
150+
def test_report(self, make_api):
151+
credentials = _make_credentials()
152+
client = self._make_one(project=self.PROJECT,
153+
credentials=credentials)
151154

152-
client = mock.Mock()
153-
make_client.return_value = client
155+
error_api = mock.Mock(spec=['report_error_event'])
156+
make_api.return_value = error_api
154157

155-
MESSAGE = 'this is an error'
156-
target.report(MESSAGE)
158+
message = 'this is an error'
159+
client.report(message)
157160

158-
payload = client.report_error_event.call_args[0][0]
161+
payload = error_api.report_error_event.call_args[0][0]
162+
make_api.assert_called_once_with(client)
159163

160-
self.assertEqual(payload['message'], MESSAGE)
164+
self.assertEqual(payload['message'], message)
161165
report_location = payload['context']['reportLocation']
162166
self.assertIn('test_client.py', report_location['filePath'])
163167
self.assertEqual(report_location['functionName'], 'test_report')

0 commit comments

Comments
 (0)