Skip to content

Commit c183f76

Browse files
committed
Add error handling to Smartcar client server
1 parent 6848bda commit c183f76

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

server.py

+20-10
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ def parse_response(data):
3535

3636
def get(self, id):
3737
payload = GM_Api.post(self.URL, Vehicle_Name.body(id))
38-
data = payload.get('data')
39-
return Vehicle_Name.parse_response(data)
38+
39+
if payload.get('error'):
40+
return payload
41+
return Vehicle_Name.parse_response(payload.get('data'))
4042

4143
class Vehicle_Doors(Resource):
4244
URL = '/getSecurityStatusService'
@@ -86,8 +88,10 @@ def parse_response(data):
8688

8789
def get(self, id):
8890
payload = GM_Api.post(self.URL, Vehicle_Doors.body(id))
89-
data = payload.get('data')
90-
return Vehicle_Doors.parse_response(data)
91+
92+
if payload.get('error'):
93+
return payload
94+
return Vehicle_Doors.parse_response(payload.get('data'))
9195

9296
class Vehicle_Fuel(Resource):
9397
URL = '/getEnergyService'
@@ -108,8 +112,10 @@ def parse_response(data):
108112

109113
def get(self, id):
110114
payload = GM_Api.post(self.URL, Vehicle_Fuel.body(id))
111-
data = payload.get('data')
112-
return Vehicle_Fuel.parse_response(data)
115+
116+
if payload.get('error'):
117+
return payload
118+
return Vehicle_Fuel.parse_response(payload.get('data'))
113119

114120
class Vehicle_Battery(Resource):
115121
URL = '/getEnergyService'
@@ -130,8 +136,10 @@ def parse_response(data):
130136

131137
def get(self, id):
132138
payload = GM_Api.post(self.URL, Vehicle_Battery.body(id))
133-
data = payload.get('data')
134-
return Vehicle_Battery.parse_response(data)
139+
140+
if payload.get('error'):
141+
return payload
142+
return Vehicle_Battery.parse_response(payload.get('data'))
135143

136144
class Vehicle_Engine(Resource):
137145
URL = '/actionEngineService'
@@ -156,8 +164,10 @@ def parse_response(data):
156164
def post(self, id):
157165
args = parser.parse_args()
158166
payload = GM_Api.post(self.URL, Vehicle_Engine.body(id, args.get('action')))
159-
data = payload.get('actionResult')
160-
return Vehicle_Engine.parse_response(data)
167+
168+
if payload.get('error'):
169+
return payload
170+
return Vehicle_Engine.parse_response(payload.get('actionResult'))
161171

162172
api.add_resource(Vehicle_Name, '/vehicles/<id>')
163173
api.add_resource(Vehicle_Doors, '/vehicles/<id>/doors')

test_server.py

+8
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,11 @@ def test_vehicle_engine(client, mocker):
172172
resp = client.post('/vehicles/1234/engine', json={'action': 'STOP'})
173173
mock.assert_called_with('/actionEngineService', {'id': '1234', 'command': 'STOP_VEHICLE'})
174174
assert(resp.json == {'status': 'error'})
175+
176+
def test_errors(client, mocker):
177+
mock = mocker.patch('gm_api.GM_Api.post')
178+
mock.return_value = {'error': 'Vehicle id: 1000 not found.'}
179+
180+
resp = client.get('/vehicles/1000')
181+
mock.assert_called_with('/getVehicleInfoService', {'id': '1000'})
182+
assert(resp.json == {'error': 'Vehicle id: 1000 not found.'})

0 commit comments

Comments
 (0)