def set_service_config(self): service1 = BrainServiceConfiguration("ask") service1._classname = "programy.services.rest.GenericRESTService" service1._host = "localhost" service2 = BrainServiceConfiguration("test") service2._classname = "programy.services.rest.GenericRESTService" service2._host = "localhost" services_config = BrainServicesConfiguration() services_config._services = {"ask": service1, "test": service2} ServiceFactory.preload_services(services_config)
def test_call_GeneralRest_response_empty(self): service_config = BrainServiceConfiguration("__PUBLISHEDREST__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDREST__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._host = TemplateWordNode("hostname") root.append(node) service = ServiceFactory.get_service("__PUBLISHEDREST__") service.set_response("") self.assertEqual("", node.resolve(self._client_context)) conversation = self._client_context.bot.get_conversation( self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text( self._client_context, "Hello", self._client_context.bot.sentence_splitter) conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) self.assertEqual("", node.resolve(self._client_context))
def test_call_PublishedBot_response_default(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botName = "testbot" node._userId = TemplateWordNode('1234567890') node._default = "unknown" node.append(TemplateWordNode("Hello")) root.append(node) service = ServiceFactory.get_service("__PUBLISHEDBOT__") service.set_response("") self.set_collection_botnames() self.assertEqual("unknown", node.resolve(self._client_context)) conversation = self._client_context.bot.get_conversation( self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text( self._client_context, "Hello", self._client_context.bot.sentence_splitter) conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) self.assertEqual("unknown", node.resolve(self._client_context)) self.assertEqual("unknown", question.property('__SUBAGENT_EXTBOT__.testbot'))
def test_call_CustomService_response_default(self): service_config = BrainServiceConfiguration("mock") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['mock'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._service = "mock" node._default = "unknown" node.append(TemplateWordNode("Hello")) root.append(node) service = ServiceFactory.get_service("mock") service.set_response("") self.assertEqual("unknown", node.resolve(self._client_context)) conversation = self._client_context.bot.get_conversation( self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text( self._client_context, "Hello", self._client_context.bot.sentence_splitter) conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) self.assertEqual("unknown", node.resolve(self._client_context)) self.assertEqual("unknown", question.property('__SUBAGENT__.mock'))
def test_call_GeneralRest(self): service_config = BrainServiceConfiguration("__PUBLISHEDREST__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDREST__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._host = TemplateWordNode("hostname") node._method = TemplateWordNode("POST") node._query = TemplateWordNode('"userid":"1234567890"') node._header = TemplateWordNode('"Content-Type":"application/json"') node._body = TemplateWordNode("Hello") root.append(node) self.assertEqual("asked", node.resolve(self._client_context)) conversation = self._client_context.bot.get_conversation( self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text( self._client_context, "Hello", self._client_context.bot.sentence_splitter) conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) self.assertEqual("asked", node.resolve(self._client_context)) self.assertEqual("asked", question.property('__SUBAGENT_BODY__'))
def test_load_services(self): service_config = BrainServiceConfiguration("mock") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['mock'] = service_config ServiceFactory.preload_services(brain_config.services) self.assertIsNotNone(ServiceFactory.get_service("mock")) self.assertIsInstance(ServiceFactory.get_service("mock"), MockService)
def test_load_services(self): service_config = BrainServiceConfiguration("mock") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['mock'] = service_config ServiceFactory.preload_services(brain_config.services) self.assertIsNotNone(ServiceFactory.get_service("mock")) self.assertIsInstance(ServiceFactory.get_service("mock"), MockService)
def test_call_GeneralRest_only_host(self): service_config = BrainServiceConfiguration("__PUBLISHEDREST__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDREST__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._host = TemplateWordNode("hostname") root.append(node) self.assertEqual("asked", node.resolve(self._client_context))
def test_format_get_url(self): client = TestClient() client_context = client.create_client_context("testid") config = BrainServiceConfiguration("rest") config._classname = "programy.testclass" config._method = "GET" config._host = "localhost" config._port = 8080 config._url = "/api/v1.0/ask" service = ProgramyRESTService(config, api=None) self.assertEquals("/api/v1.0/ask?question=Hello&userid=testid", service._format_get_url("/api/v1.0/ask", client_context, "Hello"))
def test_parse_response(self): client = TestClient() client_context = client.create_client_context("testid") config = BrainServiceConfiguration("rest") config._classname = "programy.testclass" config._method = "GET" config._host = "localhost" config._port = 8080 config._url = "/api/v1.0/ask" service = ProgramyRESTService(config, api=None) self.assertEquals("Hello", service._parse_response('[{"response": {"answer": "Hello"}}]'))
def test_parse_response(self): client = TestClient() client_context = client.create_client_context("testid") config = BrainServiceConfiguration("rest") config._classname = "programy.testclass" config._method = "GET" config._host = "localhost" config._port = 8080 config._url = "/api/v1.0/ask" service = ProgramyRESTService(config, api=None) self.assertEqual("Hello", service._parse_response('[{"response": {"answer": "Hello"}}]'))
def test_format_get_url(self): client = TestClient() client_context = client.create_client_context("testid") config = BrainServiceConfiguration("rest") config._classname = "programy.testclass" config._method = "GET" config._host = "localhost" config._port = 8080 config._url = "/api/v1.0/ask" service = ProgramyRESTService(config, api=None) self.assertEqual("/api/v1.0/ask?question=Hello&userid=testid", service._format_get_url("/api/v1.0/ask", client_context, "Hello"))
def test_call_PublishedBot_deleteValiables(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botId = "testBot" node._deleteVariable = TemplateWordNode('true') node.append(TemplateWordNode("Hello")) root.append(node) self.assertEqual("asked", node.resolve(self._client_context))
def test_format_payload(self): client = TestClient() client_context = client.create_client_context("testid") config = BrainServiceConfiguration("rest") config._classname = "programy.testclass" config._method = "GET" config._host = "localhost" config._port = 8080 config._url = "/api/v1.0/ask" service = ProgramyRESTService(config, api=None) self.assertEquals({ 'question': 'Hello', 'userid': 'testid' }, service._format_payload(client_context, "Hello"))
def test_call_CustomService_response_none(self): service_config = BrainServiceConfiguration("mock") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['mock'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._service = "mock" node.append(TemplateWordNode("Hello")) root.append(node) service = ServiceFactory.get_service("mock") service.set_response(None) self.assertEqual(None, node.resolve(self._client_context))
def test_call_PublishedBot_response_none(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botId = "testBot" node.append(TemplateWordNode("Hello")) root.append(node) service = ServiceFactory.get_service("__PUBLISHEDBOT__") service.set_response(None) self.assertIsNone(node.resolve(self._client_context))
def test_call_service(self): service_config = BrainServiceConfiguration("mock") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['mock'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node.service = "mock" root.append(node) node.append(TemplateWordNode("Hello")) self.assertEqual("asked", node.resolve(self._client_context))
def test_call_PublishedBot_only_botname(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botName = "testbot" node._userId = TemplateWordNode('1234567890') root.append(node) node.append(TemplateWordNode("Hello")) self.set_collection_botnames() self.assertEqual("asked", node.resolve(self._client_context))
def test_call_PublishedBot_topic(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botId = "testBot" node.append(TemplateWordNode("Hello")) root.append(node) conversation = self._client_context.bot.get_conversation( self._client_context) conversation.set_property('topic', 'morning') self.assertEqual("asked", node.resolve(self._client_context)) node._topic = TemplateWordNode("evening") self.assertEqual("asked", node.resolve(self._client_context))
def test_call_PublishedBot(self): service_config = BrainServiceConfiguration("__PUBLISHEDBOT__") service_config._classname = 'programytest.services.test_service.MockService' brain_config = BrainConfiguration() brain_config.services._services['__PUBLISHEDBOT__'] = service_config ServiceFactory.preload_services(brain_config.services) root = TemplateNode() node = TemplateSRAIXNode() node._botName = "testbot" node._locale = TemplateWordNode('ja-JP') node._time = TemplateWordNode('2019-01-01T00:00:00+09:00') node._userId = TemplateWordNode('1234567890') node._topic = TemplateWordNode('*') node._deleteVariable = TemplateWordNode('false') node._metadata = TemplateWordNode('1234567890') node._config = TemplateWordNode('{"config":{"logLevel":"debug"}}') node.append(TemplateWordNode("Hello")) root.append(node) self.set_collection_botnames() self.assertEqual("asked", node.resolve(self._client_context)) conversation = self._client_context.bot.get_conversation( self._client_context) self.assertIsNotNone(conversation) question = Question.create_from_text( self._client_context, "Hello", self._client_context.bot.sentence_splitter) conversation.record_dialog(question) self.assertIsNotNone(conversation.current_question()) service = ServiceFactory.get_service("__PUBLISHEDBOT__") service.set_response('{"response": "asked"}') self.assertEqual("asked", node.resolve(self._client_context)) self.assertEqual('{"testbot": {"response": "asked"}}', question.property('__SUBAGENT_EXTBOT__'))