Beispiel #1
0
 async def test_parse_sapcai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = [{"name": "sapcai"}]
         sapcai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({}, opsdroid=opsdroid)
         match_sapcai(sapcai_intent)(skill)
         message = Message("Hello", "user", "default", mock_connector)
         with amock.patch("opsdroid.parsers.sapcai.parse_sapcai"):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 1)
             for task in tasks:
                 await task
Beispiel #2
0
 async def test_parse_sapcai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = [{"name": "sapcai"}]
         sapcai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({}, opsdroid=opsdroid)
         match_sapcai(sapcai_intent)(skill)
         message = Message("Hello", "user", "default", mock_connector)
         with amock.patch('opsdroid.parsers.sapcai.parse_sapcai'):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 1)
             for task in tasks:
                 await task
Beispiel #3
0
 async def test_parse_sapcai(self):
     with OpsDroid() as opsdroid:
         opsdroid.config["parsers"] = {"sapcai": {"enabled": True}}
         sapcai_intent = ""
         skill = amock.CoroutineMock()
         mock_connector = Connector({}, opsdroid=opsdroid)
         match_sapcai(sapcai_intent)(skill)
         message = Message(text="Hello",
                           user="******",
                           target="default",
                           connector=mock_connector)
         with amock.patch("opsdroid.parsers.sapcai.parse_sapcai"):
             tasks = await opsdroid.parse(message)
             self.assertEqual(len(tasks), 2)
Beispiel #4
0
    async def test_parse_sapcai_with_entities(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("weather")(mock_skill))

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

            with amock.patch.object(sapcai, "call_sapcai") as mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    "results": {
                        "uuid": "f058ad85-d089-40e1-a910-a76990d36180",
                        "intents": [
                            {
                                "slug": "weather",
                                "confidence": 0.97,
                                "description": "weather",
                            }
                        ],
                        "entities": {
                            "location": [
                                {
                                    "formatted": "London, UK",
                                    "lat": 51.5073509,
                                    "lng": -0.1277583,
                                    "type": "locality",
                                    "place": "ChIJdd4hrwug2EcRmSrV3Vo6llI",
                                    "raw": "london",
                                    "confidence": 0.99,
                                    "country": "gb",
                                }
                            ]
                        },
                        "language": "en",
                        "processing_language": "en",
                        "version": "1903.6.2",
                        "timestamp": "2019-06-02T12:22:57.216286+00:00",
                        "status": 200,
                        "source": "whats the weather in london",
                        "act": "wh-query",
                        "type": "desc:desc",
                        "sentiment": "neutral",
                    },
                    "message": "Requests rendered with success",
                }

                [skill] = await sapcai.parse_sapcai(
                    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")
Beispiel #5
0
    async def test_parse_sapcai(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(
                text="Hello", user="******", target="default", connector=mock_connector
            )

            with amock.patch.object(sapcai, "call_sapcai") as mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    "results": {
                        "uuid": "f482bddd-a9d7-41ae-aae3-6e64ad3f02dc",
                        "source": "hello",
                        "intents": [{"slug": "greetings", "confidence": 0.99}],
                        "act": "assert",
                        "type": None,
                        "sentiment": "vpositive",
                        "entities": {},
                        "language": "en",
                        "processing_language": "en",
                        "version": "2.10.1",
                        "timestamp": "2017-11-15T07:41:48.935990+00:00",
                        "status": 200,
                    }
                }
                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]
                )
                self.assertEqual(mock_skill, skills[0]["skill"])
    async def test_parse_sapcai_raises(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {'name': 'sapcai', 'access-token': "test"}
                ]
            mock_skill = await self.getRaisingMockSkill()
            mock_skill.config = {
                "name": "mocked-skill"
            }
            opsdroid.skills.append(match_sapcai('greetings')(mock_skill))

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

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results':
                        {
                            "uuid": "f482bddd-a9d7-41ae-aae3-6e64ad3f02dc",
                            "source": "hello",
                            "intents": [
                                {
                                    "slug": "greetings",
                                    "confidence": 0.99
                                }
                            ],
                            "act": "assert",
                            "type": None,
                            "sentiment": "vpositive",
                            "entities": {},
                            "language": "en",
                            "processing_language": "en",
                            "version": "2.10.1",
                            "timestamp": "2017-11-15T07:41:48.935990+00:00",
                            "status": 200
                        }
                }

                skills = await sapcai.parse_sapcai(
                    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')
    async def test_parse_sapcai_low_score(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [
                    {
                        'name': 'sapcai',
                        'access-token': "test",
                        "min-score": 1.0
                    }
                ]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {
                "name": "greetings"
            }
            opsdroid.skills.append(match_sapcai('intent')(mock_skill))

            mock_connector = amock.CoroutineMock()
            message = Message("Hello", "user", "default", mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results':
                        {
                            "uuid": "f482bddd-a9d7-41ae-aae3-6e64ad3f02dc",
                            "source": "hello",
                            "intents": [
                                {
                                    "slug": "greetings",
                                    "confidence": 0.99
                                }
                            ],
                            "act": "assert",
                            "type": None,
                            "sentiment": "vpositive",
                            "entities": {},
                            "language": "en",
                            "processing_language": "en",
                            "version": "2.10.1",
                            "timestamp": "2017-11-15T07:41:48.935990+00:00",
                            "status": 200
                        }
                }
                await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
Beispiel #8
0
    async def test_parse_sapcai_raises(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [{
                'name': 'sapcai',
                'access-token': "test"
            }]
            mock_skill = await self.getRaisingMockSkill()
            mock_skill.config = {"name": "mocked-skill"}
            opsdroid.skills.append(match_sapcai('greetings')(mock_skill))

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

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results': {
                        "uuid": "f482bddd-a9d7-41ae-aae3-6e64ad3f02dc",
                        "source": "hello",
                        "intents": [{
                            "slug": "greetings",
                            "confidence": 0.99
                        }],
                        "act": "assert",
                        "type": None,
                        "sentiment": "vpositive",
                        "entities": {},
                        "language": "en",
                        "processing_language": "en",
                        "version": "2.10.1",
                        "timestamp": "2017-11-15T07:41:48.935990+00:00",
                        "status": 200
                    }
                }

                skills = await sapcai.parse_sapcai(
                    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')
Beispiel #9
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)
Beispiel #10
0
    async def test_parse_sapcai_failure(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(
                text="", user="******", target="default", connector=mock_connector
            )

            with amock.patch.object(sapcai, "call_sapcai") as mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    "results": None,
                    "message": "Text is empty",
                }
                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message, opsdroid.config["parsers"][0]
                )
                self.assertFalse(skills)
Beispiel #11
0
    async def test_parse_sapcai_no_intent(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(
                "kdjiruetosakdg",
                "user",
                "default",
                mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results':
                        {
                            'uuid': 'e4b365be-815b-4e40-99c3-7a25583b4892',
                            'source': 'kdjiruetosakdg',
                            'intents': [],
                            'act': 'assert',
                            'type': None,
                            'sentiment': 'neutral',
                            'entities': {},
                            'language': 'en',
                            'processing_language': 'en',
                            'version': '2.10.1',
                            'timestamp': '2017-11-15T07:32:42.641604+00:00',
                            'status': 200}}

                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
                self.assertLogs('_LOGGER', 'error')
                self.assertFalse(skills)
    async def test_parse_sapcai_no_intent(self):
        with OpsDroid() as opsdroid:
            opsdroid.config["parsers"] = [{"name": "sapcai", "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(
                text="kdjiruetosakdg",
                user="******",
                target="default",
                connector=mock_connector,
            )

            with amock.patch.object(sapcai,
                                    "call_sapcai") as mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    "results": {
                        "uuid": "e4b365be-815b-4e40-99c3-7a25583b4892",
                        "source": "kdjiruetosakdg",
                        "intents": [],
                        "act": "assert",
                        "type": None,
                        "sentiment": "neutral",
                        "entities": {},
                        "language": "en",
                        "processing_language": "en",
                        "version": "2.10.1",
                        "timestamp": "2017-11-15T07:32:42.641604+00:00",
                        "status": 200,
                    }
                }

                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config["parsers"][0])
                self.assertLogs("_LOGGER", "error")
                self.assertFalse(skills)
Beispiel #13
0
    async def test_parse_sapcai_no_intent(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("kdjiruetosakdg", "user", "default",
                              mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results': {
                        'uuid': 'e4b365be-815b-4e40-99c3-7a25583b4892',
                        'source': 'kdjiruetosakdg',
                        'intents': [],
                        'act': 'assert',
                        'type': None,
                        'sentiment': 'neutral',
                        'entities': {},
                        'language': 'en',
                        'processing_language': 'en',
                        'version': '2.10.1',
                        'timestamp': '2017-11-15T07:32:42.641604+00:00',
                        'status': 200
                    }
                }

                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config['parsers'][0])
                self.assertLogs('_LOGGER', 'error')
                self.assertFalse(skills)
Beispiel #14
0
    async def test_parse_sapcai_failure(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("", "user", "default", mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results': None,
                    'message': 'Text is empty'
                }
                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message,
                    opsdroid.config['parsers'][0])
                self.assertFalse(skills)
Beispiel #15
0
    async def test_parse_sapcai_failure(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("", "user", "default", mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results': None,
                    'message': 'Text is empty'
                }
                skills = await sapcai.parse_sapcai(
                    opsdroid, opsdroid.skills, message, opsdroid.config['parsers'][0])
                self.assertFalse(skills)
Beispiel #16
0
    async def test_parse_sapcai_low_score(self):
        with OpsDroid() as opsdroid:
            opsdroid.config['parsers'] = [{
                'name': 'sapcai',
                'access-token': "test",
                "min-score": 1.0
            }]
            mock_skill = await self.getMockSkill()
            mock_skill.config = {"name": "greetings"}
            opsdroid.skills.append(match_sapcai('intent')(mock_skill))

            mock_connector = amock.CoroutineMock()
            message = Message("Hello", "user", "default", mock_connector)

            with amock.patch.object(sapcai, 'call_sapcai') as \
                    mocked_call_sapcai:
                mocked_call_sapcai.return_value = {
                    'results': {
                        "uuid": "f482bddd-a9d7-41ae-aae3-6e64ad3f02dc",
                        "source": "hello",
                        "intents": [{
                            "slug": "greetings",
                            "confidence": 0.99
                        }],
                        "act": "assert",
                        "type": None,
                        "sentiment": "vpositive",
                        "entities": {},
                        "language": "en",
                        "processing_language": "en",
                        "version": "2.10.1",
                        "timestamp": "2017-11-15T07:41:48.935990+00:00",
                        "status": 200
                    }
                }
                await sapcai.parse_sapcai(opsdroid, opsdroid.skills, message,
                                          opsdroid.config['parsers'][0])
Beispiel #17
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)