Exemplo n.º 1
0
    async def test_parse_luisai_low_score(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_luisai:
                mocked_call_luisai.return_value = {
                    "query": "schedule meeting",
                    "topScoringIntent": {
                        "intent": "Calendar.Add",
                        "score": 0.900492251,
                    },
                    "intents": [{
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    }],
                    "entities": [],
                }
                await luisai.parse_luisai(opsdroid, opsdroid.skills, message,
                                          opsdroid.config["parsers"][0])

            self.assertFalse(mock_skill.called)
Exemplo n.º 2
0
    async def test_parse_luisai_low_score(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_luisai:
                mocked_call_luisai.return_value = {
                    "query": "schedule meeting",
                    "topScoringIntent": {
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    },
                    "intents": [{
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    }],
                    "entities": []
                }
                await luisai.parse_luisai(opsdroid, opsdroid.skills, message,
                                          opsdroid.config['parsers'][0])

            self.assertFalse(mock_skill.called)
Exemplo n.º 3
0
    async def test_parse_luisai_failure(self):
        with OpsDroid() as opsdroid:
            opsdroid.config["parsers"] = [{
                "name": "luisai",
                "appid": "test",
                "appkey": "test",
                "verbose": True
            }]
            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_luisai:
                mocked_call_luisai.return_value = {"statusCode": 401}
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config["parsers"][0])
                self.assertFalse(skills)
Exemplo n.º 4
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)
Exemplo n.º 5
0
 async def test_parse_luisai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = [{"name": "luisai"}]
         luisai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({}, opsdroid=opsdroid)
         match_luisai_intent(luisai_intent)(skill)
         message = Message("Hello world", "user", "default", mock_connector)
         with amock.patch('opsdroid.parsers.luisai.parse_luisai'):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 1)
             for task in tasks:
                 await task
Exemplo n.º 6
0
 async def test_parse_luisai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = [{"name": "luisai"}]
         luisai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({})
         match_luisai_intent(luisai_intent)(skill)
         message = Message("Hello world", "user", "default", mock_connector)
         with amock.patch('opsdroid.parsers.luisai.parse_luisai'):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 1)
             for task in tasks:
                 await task
Exemplo n.º 7
0
async def test_match_luisai(opsdroid):
    intent = "myIntent"
    decorator = matchers.match_luisai_intent(intent)
    opsdroid.skills.append(decorator(await get_mock_skill()))
    assert len(opsdroid.skills) == 1
    assert opsdroid.skills[0].matchers[0]["luisai_intent"] == intent
    assert asyncio.iscoroutinefunction(opsdroid.skills[0]) is True
Exemplo n.º 8
0
 async def test_parse_luisai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = {"luisai": {"enabled": True}}
         luisai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({}, opsdroid=opsdroid)
         match_luisai_intent(luisai_intent)(skill)
         message = Message(
             text="Hello world",
             user="******",
             target="default",
             connector=mock_connector,
         )
         with amock.patch("opsdroid.parsers.luisai.parse_luisai"):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 2)
Exemplo n.º 9
0
    async def test_parse_luisai_with_entities(self):
        with OpsDroid() as opsdroid:
            opsdroid.config["parsers"] = [{
                "name": "luisai",
                "appid": "test",
                "appkey": "test",
                "verbose": True
            }]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {"name": "weather"}
            opsdroid.skills.append(
                match_luisai_intent("weatherLocation")(mock_skill))

            mock_connector = amock.CoroutineMock()
            message = Message(
                text="whats the weather in london",
                user="******",
                target="default",
                connector=mock_connector,
            )

            with amock.patch.object(luisai,
                                    "call_luisai") as mocked_call_luisai:
                mocked_call_luisai.return_value = {
                    "query":
                    "whats the weather in london",
                    "topScoringIntent": {
                        "intent": "weatherLocation",
                        "score": 0.918992,
                    },
                    "intents": [
                        {
                            "intent": "weatherLocation",
                            "score": 0.918992
                        },
                        {
                            "intent": "None",
                            "score": 0.03931402
                        },
                    ],
                    "entities": [{
                        "entity": "london",
                        "type": "builtin.geographyV2.city",
                        "startIndex": 21,
                        "endIndex": 26,
                        "role": "location",
                    }],
                    "sentimentAnalysis": {
                        "label": "neutral",
                        "score": 0.5
                    },
                }
                [skill
                 ] = await luisai.parse_luisai(opsdroid, opsdroid.skills,
                                               message,
                                               opsdroid.config["parsers"][0])
                self.assertEqual(len(skill["message"].entities.keys()), 1)
                self.assertTrue("location" in skill["message"].entities.keys())
                self.assertEqual(
                    skill["message"].entities["location"]["value"], "london")
Exemplo n.º 10
0
    async def test_parse_luisai_nointents(self):
        with OpsDroid() as opsdroid:
            opsdroid.config["parsers"] = [{
                "name": "luisai",
                "appid": "test",
                "appkey": "test",
                "verbose": True
            }]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {"name": "greetings"}
            opsdroid.skills.append(
                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_luisai:
                mocked_call_luisai.return_value = {
                    "query": "schedule meeting",
                    "topScoringIntent": {
                        "intent": "Calendar.Add",
                        "score": 0.900492251,
                    },
                    "entities": [],
                }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config["parsers"][0])
                self.assertFalse(skills)
Exemplo n.º 11
0
    async def test_parse_luisai_nointents(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {'name': 'luisai',
                     'appid': 'test',
                     'appkey': 'test',
                     'verbose': True}
                ]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {
                "name": "greetings"
            }
            opsdroid.skills.append(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_luisai:
                mocked_call_luisai.return_value = {
                        "query": "schedule meeting",
                        "topScoringIntent": {
                            "intent": "Calendar.Add",
                            "score": 0.900492251
                        },
                        "entities": []
                    }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
                self.assertFalse(skills)
Exemplo n.º 12
0
    async def test_parse_luisai(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [{
                'name': 'luisai',
                'appid': 'test',
                'appkey': 'test',
                'verbose': True
            }]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {"name": "greetings"}
            opsdroid.skills.append(
                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_luisai:
                mocked_call_luisai.return_value = {
                    "query": "schedule meeting",
                    "topScoringIntent": {
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    },
                    "intents": [{
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    }],
                    "entities": []
                }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config['parsers'][0])
                self.assertEqual(mock_skill, skills[0]["skill"])
Exemplo n.º 13
0
 async def test_match_luisai(self):
     with OpsDroid() as opsdroid:
         intent = "myIntent"
         decorator = matchers.match_luisai_intent(intent)
         opsdroid.skills.append(decorator(await self.getMockSkill()))
         self.assertEqual(len(opsdroid.skills), 1)
         self.assertEqual(opsdroid.skills[0].matchers[0]["luisai_intent"], intent)
         self.assertTrue(asyncio.iscoroutinefunction(opsdroid.skills[0]))
Exemplo n.º 14
0
 async def test_match_luisai(self):
     with OpsDroid() as opsdroid:
         intent = "myIntent"
         decorator = matchers.match_luisai_intent(intent)
         opsdroid.skills.append(decorator(await self.getMockSkill()))
         self.assertEqual(len(opsdroid.skills), 1)
         self.assertEqual(opsdroid.skills[0].matchers[0]["luisai_intent"], intent)
         self.assertTrue(asyncio.iscoroutinefunction(opsdroid.skills[0]))
Exemplo n.º 15
0
 async def test_match_luisai(self):
     with OpsDroid() as opsdroid:
         intent = "myIntent"
         mockedskill = mock.MagicMock()
         decorator = matchers.match_luisai_intent(intent)
         decorator(mockedskill)
         self.assertEqual(len(opsdroid.skills), 1)
         self.assertEqual(opsdroid.skills[0]["luisai_intent"], intent)
         self.assertIsInstance(opsdroid.skills[0]["skill"], mock.MagicMock)
Exemplo n.º 16
0
    async def test_parse_luisai_raises(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {'name': 'luisai',
                     'appid': 'test',
                     'appkey': 'test',
                     'verbose': True}
                ]
            mock_skill = amock.CoroutineMock()
            mock_skill.side_effect = Exception()
            opsdroid.loader.current_import_config = {
                "name": "mocked-skill"
            }
            match_luisai_intent('Calendar.Add')(mock_skill)

            mock_connector = amock.MagicMock()
            mock_connector.respond = amock.CoroutineMock()
            message = Message("schedule meeting", "user", "default",
                              mock_connector)

            with amock.patch.object(luisai, 'call_luisai') as \
                    mocked_call_luisai:
                mocked_call_luisai.return_value = {
                        "query": "schedule meeting",
                        "topScoringIntent": {
                            "intent": "Calendar.Add",
                            "score": 0.900492251
                        },
                        "intents": [
                            {
                                "intent": "Calendar.Add",
                                "score": 0.900492251
                            }
                        ],
                        "entities": []
                    }
                skills = await luisai.parse_luisai(
                    opsdroid, message, opsdroid.config['parsers'][0])
                self.assertEqual(mock_skill, skills[0]["skill"])

            await opsdroid.run_skill(
                skills[0]["skill"], skills[0]["config"], message)
            self.assertTrue(skills[0]["skill"].called)
Exemplo n.º 17
0
    async def test_parse_luisai_failure(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [{
                'name': 'luisai',
                'appid': 'test',
                'appkey': 'test',
                'verbose': True
            }]
            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_luisai:
                mocked_call_luisai.return_value = {"statusCode": 401}
                skills = await luisai.parse_luisai(
                    opsdroid, message, opsdroid.config['parsers'][0])
                self.assertFalse(skills)
Exemplo n.º 18
0
    async def test_parse_luisai_failure(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {'name': 'luisai',
                     'appid': 'test',
                     'appkey': 'test',
                     'verbose': True}
                ]
            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_luisai:
                mocked_call_luisai.return_value = {
                        "statusCode": 401
                    }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
                self.assertFalse(skills)
Exemplo n.º 19
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)
Exemplo n.º 20
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)
Exemplo n.º 21
0
    async def test_parse_luisai_raises(self):
        with OpsDroid() as opsdroid:
            opsdroid.config["parsers"] = [{
                "name": "luisai",
                "appid": "test",
                "appkey": "test",
                "verbose": True
            }]
            mock_skill = await self.getRaisingMockSkill()
            mock_skill.config = {"name": "greetings"}
            opsdroid.skills.append(
                match_luisai_intent("Calendar.Add")(mock_skill))

            mock_connector = amock.MagicMock()
            mock_connector.send = amock.CoroutineMock()
            message = Message(
                text="schedule meeting",
                user="******",
                target="default",
                connector=mock_connector,
            )

            with amock.patch.object(luisai,
                                    "call_luisai") as mocked_call_luisai:
                mocked_call_luisai.return_value = {
                    "query": "schedule meeting",
                    "topScoringIntent": {
                        "intent": "Calendar.Add",
                        "score": 0.900492251,
                    },
                    "intents": [{
                        "intent": "Calendar.Add",
                        "score": 0.900492251
                    }],
                    "entities": [],
                }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config["parsers"][0])
                self.assertEqual(mock_skill, skills[0]["skill"])

            await opsdroid.run_skill(skills[0]["skill"], skills[0]["config"],
                                     message)
            self.assertLogs("_LOGGER", "exception")
Exemplo n.º 22
0
    async def test_parse_luisai_raises(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {'name': 'luisai',
                     'appid': 'test',
                     'appkey': 'test',
                     'verbose': True}
                ]
            mock_skill = await self.getRaisingMockSkill()
            mock_skill.config = {
                "name": "greetings"
            }
            opsdroid.skills.append(match_luisai_intent('Calendar.Add')(mock_skill))

            mock_connector = amock.MagicMock()
            mock_connector.send = amock.CoroutineMock()
            message = Message("schedule meeting", "user", "default",
                              mock_connector)

            with amock.patch.object(luisai, 'call_luisai') as \
                    mocked_call_luisai:
                mocked_call_luisai.return_value = {
                        "query": "schedule meeting",
                        "topScoringIntent": {
                            "intent": "Calendar.Add",
                            "score": 0.900492251
                        },
                        "intents": [
                            {
                                "intent": "Calendar.Add",
                                "score": 0.900492251
                            }
                        ],
                        "entities": []
                    }
                skills = await luisai.parse_luisai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
                self.assertEqual(mock_skill, skills[0]["skill"])

            await opsdroid.run_skill(
                skills[0]["skill"], skills[0]["config"], message
            )
            self.assertLogs('_LOGGER', 'exception')