async def test_parse_witai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "witai", "access-token": "test", "min-score": 0.3 }] mock_skill = amock.CoroutineMock() match_witai("get_weather")(mock_skill) mock_connector = amock.CoroutineMock() message = Message( text="how's the weather outside", user="******", target="default", connector=mock_connector, ) with amock.patch.object(witai, "call_witai") as mocked_call: mocked_call.side_effect = ClientOSError() await witai.parse_witai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_luisai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "luisai", "appid": "test", "appkey": "test", "verbose": True, "min-score": 0.95, }] mock_skill = amock.CoroutineMock() match_luisai_intent("Calendar.Add")(mock_skill) mock_connector = amock.CoroutineMock() message = Message( text="schedule meeting", user="******", target="default", connector=mock_connector, ) with amock.patch.object(luisai, "call_luisai") as mocked_call: mocked_call.side_effect = ClientOSError() await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test__get_existing_models_exception(self): with amock.patch("aiohttp.ClientSession.get") as patched_request: patched_request.return_value = asyncio.Future() patched_request.side_effect = ClientOSError() models = await rasanlu._get_existing_models({"project": "opsdroid"}) self.assertRaises(ClientOSError) self.assertEqual(models, [])
async def test_client_error(self): job_id = uuid4().hex job = Job(id=job_id, url="url") fake_session = FakeAiohttpSession(exception=ClientOSError("boom")) (flexmock(url_check) .should_receive("ClientSession") .and_return(fake_session)) result = await url_check._process_job(job=job) assert result.job == job, "wrong job returned" assert result.status == 400, "wrong status returned"
async def fake_response(url, **data): nonlocal request request += 1 if request == 1: raise ClientOSError('foobar') class FakeResponse: async def json(self): return [dict(email='*****@*****.**', _id='abc')] return FakeResponse()
async def test_parse_witai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [ {'name': 'witai', 'access-token': 'test', 'min-score': 0.3} ] mock_skill = amock.CoroutineMock() match_witai('get_weather')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("how's the weather outside", "user", "default", mock_connector) with amock.patch.object(witai, 'call_witai') as mocked_call: mocked_call.side_effect = ClientOSError() await witai.parse_witai(opsdroid, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_sapcai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "sapcai", "access-token": "test" }] mock_skill = await self.getMockSkill() mock_skill.config = {"name": "greetings"} opsdroid.skills.append(match_sapcai("greetings")(mock_skill)) mock_connector = amock.CoroutineMock() message = Message("Hello", "user", "default", mock_connector) with amock.patch.object(sapcai, "call_sapcai") as mocked_call: mocked_call.side_effect = ClientOSError() await sapcai.parse_sapcai(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertTrue(mocked_call.called)
async def test_parse_recastai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'recastai', 'access-token': "test", }] mock_skill = amock.CoroutineMock() match_recastai('greetings')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("Hello", "user", "default", mock_connector) with amock.patch.object(recastai, 'call_recastai') \ as mocked_call: mocked_call.side_effect = ClientOSError() await recastai.parse_recastai(opsdroid, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_apiai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'apiai', 'access-token': "test", "min-score": 0.8 }] mock_skill = amock.CoroutineMock() match_apiai_action('myaction')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("Hello world", "user", "default", mock_connector) with amock.patch.object(apiai, 'call_apiai') as mocked_call: mocked_call.side_effect = ClientOSError() await apiai.parse_apiai(opsdroid, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_rasanlu_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "rasanlu", "access-token": "test", "min-score": 0.3 }] mock_skill = amock.CoroutineMock() match_rasanlu("get_weather")(mock_skill) mock_connector = amock.CoroutineMock() message = Message("how's the weather outside", "user", "default", mock_connector) with amock.patch.object(rasanlu, "call_rasanlu") as mocked_call: mocked_call.side_effect = ClientOSError() await rasanlu.parse_rasanlu(opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_dialogflow_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config["parsers"] = [{ "name": "dialogflow", "access-token": "test", "min-score": 0.8 }] mock_skill = amock.CoroutineMock() match_dialogflow_action("myaction")(mock_skill) mock_connector = amock.CoroutineMock() message = Message("Hello world", "user", "default", mock_connector) with amock.patch.object(dialogflow, "call_dialogflow") as mocked_call: mocked_call.side_effect = ClientOSError() await dialogflow.parse_dialogflow( opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_parse_luisai_raise_ClientOSError(self): with OpsDroid() as opsdroid: opsdroid.config['parsers'] = [{ 'name': 'luisai', 'appid': 'test', 'appkey': 'test', 'verbose': True, 'min-score': 0.95 }] mock_skill = amock.CoroutineMock() match_luisai_intent('Calendar.Add')(mock_skill) mock_connector = amock.CoroutineMock() message = Message("schedule meeting", "user", "default", mock_connector) with amock.patch.object(luisai, 'call_luisai') as \ mocked_call: mocked_call.side_effect = ClientOSError() await luisai.parse_luisai(opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0]) self.assertFalse(mock_skill.called) self.assertTrue(mocked_call.called)
async def test_calling_api(self): value = {'key': 1} value_text = json.dumps(value) value_bytes = value_text.encode() self.assertEqual( await self._call(value), self._make_result(value), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value, req_error=ClientError) self.assertEqual( ctx.exception.details, self._make_details(req_error='ClientError'), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value, req_error=ClientOSError(123, 'msg')) self.assertEqual( ctx.exception.details, self._make_details(req_error='ClientOSError', errno=123), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value, ctype=None) self.assertEqual( ctx.exception.details, self._make_details(value_bytes, ctype=None), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value, ctype='application/xml') self.assertEqual( ctx.exception.details, self._make_details(value_bytes, ctype='application/xml'), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value=b'\x80\x80\x80') self.assertEqual( ctx.exception.details, self._make_details(b'\x80\x80\x80'), ) with self.assertRaises(JsonApiError) as ctx: await self._call(value, status=400) self.assertEqual( ctx.exception.details, self._make_details(value_text, status=400), ) malformed_json = value_text + '{}' with self.assertRaises(JsonApiError) as ctx: await self._call(value=malformed_json) self.assertEqual( ctx.exception.details, self._make_details(malformed_json), )