예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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, [])
예제 #4
0
 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"
예제 #5
0
    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()
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #12
0
    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)
예제 #13
0
    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),
        )