Exemple #1
0
    def test_check_api_key_required_key_invalid(self):
        arguments = MockArgumentParser()
        client = MockWebChatBotClient(arguments)
        self.assertIsNotNone(client)

        request = unittest.mock.Mock
        request.args = {'KEY2'}

        client.configuration.client_configuration._use_api_keys = True
        client._api_keys = ['KEY1']

        response = client.check_api_key(request)
        self.assertIsNotNone(response)
        self.assertEqual("Unauthorised Access", response)
Exemple #2
0
    def test_client_start_no_initial_question(self):
        telegram_bot = MockTelegramBot()
        arguments = MockArgumentParser()
        client = MockTelegramBotClient(arguments)
        self.assertIsNotNone(client)

        client.response = None

        message = MockMessage("test123", None)
        update = MockUpdate(message)

        client.start(telegram_bot, update)

        self.assertIsNone(telegram_bot._text)
Exemple #3
0
    def test_client_unknown_no_response(self):
        telegram_bot = MockTelegramBot()
        arguments = MockArgumentParser()
        client = MockTelegramBotClient(arguments)
        self.assertIsNotNone(client)

        client.response = None

        message = MockMessage("test123", None)
        update = MockUpdate(message)

        client.message(telegram_bot, update)

        self.assertIsNone(telegram_bot._text)
    def test_handle_message_request(self):
        arguments = MockArgumentParser()
        client = MockLineBotClient(arguments, line_bot=MockLineApi("TOKEN"), parser=MockWebhookParser("SECRET"))
        self.assertIsNotNone(client)

        body = '{"events": [{"type": "message", "source": {"source_id": "test", "type": "text", "user": {"user_id": "User123"}}}]}'
        signature = "SIGNATURE"

        client.handle_message_request(body, signature)

        self.assertIsNotNone(client._line_bot_api)
        self.assertIsNotNone(client._line_bot_api._messages)
        self.assertIsInstance(client._line_bot_api._messages, TextSendMessage)
        self.assertEqual("Unknown command", client._line_bot_api._messages.text)
Exemple #5
0
 def test_verify_api_key_usage_active(self):
     arguments = MockArgumentParser()
     client = SanicYadlanClient("yadlan", arguments)
     self.assertIsNotNone(client)
     client.configuration.client_configuration._use_api_keys = True
     client.configuration.client_configuration._api_key_file = os.path.dirname(
         __file__) + os.sep + ".." + os.sep + ".." + os.sep + "api_keys.txt"
     client.load_api_keys()
     request = unittest.mock.Mock()
     request.args = {}
     request.args['apikey'] = '11111111'
     self.assertEqual(({
         'error': 'Unauthorized access'
     }, 401), client.verify_api_key_usage(request))
Exemple #6
0
    def test_get_api_key_exists(self):
        arguments = MockArgumentParser()
        client = MockWebChatBotClient(arguments)
        self.assertIsNotNone(client)
        client.initialise()

        client.api_keys.api_keys = ['KEY1', 'KEY2']

        request = unittest.mock.Mock
        request.args = {'apikey': 'KEY1'}

        key = client.api_keys.get_api_key(request)
        self.assertIsNotNone(key)
        self.assertEqual('KEY1', key)
Exemple #7
0
    def test_receive_message_post(self):
        arguments = MockArgumentParser()
        client = MockTwilioBotClient(arguments, twilio_client=MockTwilioClient("SID", "TOKEN"))
        self.assertIsNotNone(client)

        client.test_question = "Hi there"

        request = unittest.mock.Mock()
        request.method = 'POST'
        request.form = {"From": "+447777777888", "Body": "Hello"}

        response = client.receive_message(request)
        self.assertIsNotNone(response)
        self.assertEqual('<?xml version="1.0" encoding="UTF-8"?><Response><Message to="+447777777888">Hi there</Message></Response>', response)
Exemple #8
0
    def test_facebook_client_init(self):
        arguments = MockArgumentParser()
        client = MockFacebookBotClient(arguments)
        self.assertIsNotNone(client)

        self.assertEquals("FACEBOOK_VERIFY_TOKEN", client._verify_token)
        self.assertEquals("FACEBOOK_ACCESS_TOKEN", client._access_token)

        self.assertIsInstance(client.get_client_configuration(),
                              FacebookConfiguration)
        self.assertEquals('ProgramY AIML2.0 Facebook Client',
                          client.get_description())

        self.assertIsInstance(client._facebook_bot, FacebookBot)
Exemple #9
0
 def test_verify_api_key_usage_active(self):
     arguments = MockArgumentParser()
     client = SanicRestBotClient("sanic", arguments)
     self.assertIsNotNone(client)
     client.configuration.client_configuration._use_api_keys = True
     client.configuration.client_configuration._api_key_file = os.path.dirname(
         __file__
     ) + os.sep + ".." + os.sep + ".." + os.sep + "api_keys.txt"
     client.load_api_keys()
     request = unittest.mock.Mock()
     request.raw_args = {}
     request.raw_args['apikey'] = '11111111'
     self.assertEqual((None, None),
                      client.verify_api_key_usage(request))
Exemple #10
0
    def test_receive_message_invalid_message(self):
        arguments = MockArgumentParser()
        client = MockKikBotClient(arguments,
                                  kik_bot=MockKikApi(bot="test",
                                                     api_key="KEY"))
        self.assertIsNotNone(client)

        request = unittest.mock.Mock()
        request.headers = MockHeaders()
        request.json = {"messages": [{"body": "Hello", "type": "text"}]}

        response = client.receive_message(request)
        self.assertIsNotNone(response)
        self.assertEquals("403 FORBIDDEN", response.status)
Exemple #11
0
    def test_handle_message(self):
        arguments = MockArgumentParser()
        client = MockFacebookBotClient(arguments)
        client.test_question = "Hi there"

        inner_message = unittest.mock.Mock()
        inner_message.get.return_value = "hello"

        message = {'message': inner_message, 'sender': {'id': 'user1'}}

        client.handle_message(message)

        self.assertEquals("user1", client._facebook_bot._recipient_id)
        self.assertEquals("Hi there", client._facebook_bot._message)
Exemple #12
0
    def test_process_facebook_message(self):
        arguments = MockArgumentParser()
        client = MockFacebookBotClient(arguments)
        client.test_question = "Hi there"

        message = unittest.mock.Mock()
        message.get.return_value = "hello"

        messaging = [{'message': message, 'sender': {'id': 'user1'}}]

        client.process_facebook_message(messaging)

        self.assertEquals("user1", client._facebook_bot._recipient_id)
        self.assertEquals("Hi there", client._facebook_bot._message)
    def test_ask_question(self):
        arguments = MockArgumentParser()
        client = SanicYadlanClient("yadlan", arguments)
        self.assertIsNotNone(client)
        client.configuration.client_configuration._debug = True

        request = unittest.mock.Mock()
        request.body = b'{"userId": "1234567890", "utterance": "Hello"}'

        response, _ = client.process_request(request)
        self.assertIsNotNone(response)
        self.assertEqual("1234567890", response['userId'])
        self.assertEqual("Hello.", response['utterance'])
        self.assertEqual("", response['response'])
Exemple #14
0
    def test_client_unknown(self):
        telegram_bot = MockTelegramBot()
        arguments = MockArgumentParser()
        client = MockTelegramBotClient(arguments)
        self.assertIsNotNone(client)

        client._response = "Unknown Question"

        message = MockMessage("test123", None)
        update = MockUpdate(message)

        client.message(telegram_bot, update)

        self.assertEquals("test123", telegram_bot._chat_id)
        self.assertEquals("Unknown Question", telegram_bot._text)
Exemple #15
0
    def test_client_message(self):
        telegram_bot = MockTelegramBot()
        arguments = MockArgumentParser()
        client = MockTelegramBotClient(arguments)
        self.assertIsNotNone(client)

        client._response = "Hi there"

        message = MockMessage("test123", "Hello")
        update = MockUpdate(message)

        client.message(telegram_bot, update)

        self.assertEquals("test123", telegram_bot._chat_id)
        self.assertEquals("Hi there", telegram_bot._text)
Exemple #16
0
    def test_kik_client_init(self):
        arguments = MockArgumentParser()
        client = MockKikBotClient(arguments,
                                  kik_bot=MockKikApi(bot="test",
                                                     api_key="KEY"))
        self.assertIsNotNone(client)

        self.assertEqual("KIK_BOT_API_KEY", client._bot_api_key)

        self.assertIsInstance(client.get_client_configuration(),
                              KikConfiguration)
        self.assertEqual('ProgramY AIML2.0 Kik Client',
                         client.get_description())

        self.assertIsInstance(client._kik_bot, KikApi)
Exemple #17
0
    def test_xmpp_bot_client_init(self):
        arguments = MockArgumentParser()
        client = MockXmppBotClient(arguments)
        self.assertIsNotNone(client)
        self.assertIsNotNone(client.get_client_configuration())
        self.assertIsInstance(client.get_client_configuration(),
                              XmppConfiguration)
        self.assertEqual('ProgramY AIML2.0 Client', client.get_description())
        self.assertEqual('XMPPUSERNAME', client._username)
        self.assertEqual('XMPPPASSWORD', client._password)
        self.assertEqual("Server", client._server)
        self.assertEqual(8080, client._port)

        self.assertFalse(client._render_callback())
        self.assertIsInstance(client.renderer, TextRenderer)
    def test_poll(self):
        arguments = MockArgumentParser()
        client = MockTwitterBotClient(arguments)
        self.assertIsNotNone(client)
        self.assertTrue(client.connect())

        client._username = "******"
        client._username_len = 9

        client.configuration.client_configuration._use_direct_message = True
        client.configuration.client_configuration._auto_follow = True
        client.configuration.client_configuration._use_status = True
        client.configuration.client_configuration._polling_interval = 0

        client._poll(-1, -1)
    def test_format_success_response(self):
        arguments = MockArgumentParser()
        client = SanicYadlanClient("yadlan", arguments)
        self.assertIsNotNone(client)

        request = unittest.mock.Mock()
        request.body = b'{"userId": "1234567890"}'
        userInfo = UserInfo(client, request)

        response = client.format_success_response("1234567890", "Hello", "Hi", userInfo)
        self.assertIsNotNone(response)
        self.assertEqual("1234567890", response['userId'])
        self.assertEqual("Hello", response['utterance'])
        self.assertEqual("Hi", response['response'])
        self.assertEqual("None", response['topic'])
Exemple #20
0
    def test_process_request_no_api_key(self):
        arguments = MockArgumentParser()
        client = MockSanicYadlanClient(arguments)
        self.assertIsNotNone(client)
        client.configuration.client_configuration._use_api_keys = True

        request = unittest.mock.Mock()
        request.args = {}
        request.body = b'{"userId": "1234567890", "utterance": "Hello"}'

        client.answer = "Hi"

        response, status = client.process_request(request)
        self.assertIsNotNone(response)
        self.assertEqual(status, 401)
Exemple #21
0
    def test_parse_messages(self):
        arguments = MockArgumentParser()
        client = MockSlackBotClient(arguments)
        client._starterbot_id = "U024BE7LH"
        client.test_question = "Hi there"

        events = []
        events.append({"type": "message", "text": "<@U024BE7LH> Hello", "channel": "test"})

        client.parse_messages(events)

        self.assertIsNotNone(client.response_sent)
        self.assertEqual("Hi there", client.response_sent)
        self.assertIsNotNone(client.channel_sent)
        self.assertEqual("test", client.channel_sent)
Exemple #22
0
    def test_init(self):
        config = RestConfiguration("test")
        self.assertIsNotNone(config)

        handler = MockRestBasicAuthorizationHandler(config)
        self.assertIsNotNone(handler)
        handler.auth_token = "1234567890"

        arguments = MockArgumentParser()
        client = RestBotClient("testrest", arguments)
        self.assertIsNotNone(client)
        client.license_keys.add_key('BASIC_AUTH_TOKEN', "1234567890")

        handler.initialise(client)
        self.assertEquals("1234567890", handler._basic_auth_token)
    def test_receive_message_valid_message(self):
        arguments = MockArgumentParser()
        client = MockKikBotClient(arguments,
                                  kik_bot=MockKikApi(bot="test",
                                                     api_key="KEY"))
        self.assertIsNotNone(client)

        request = unittest.mock.Mock()
        request.from_user = "******"
        request.headers = MockHeaders("LKHLKJGKJHGKJHGKJHGHJK")
        request.json = {"messages": [{"body": "Hello", "type": "text"}]}

        response = client.receive_message(request)
        self.assertIsNotNone(response)
        self.assertEqual("200 OK", response.status)
Exemple #24
0
    def test_facebook_client_init(self):
        arguments = MockArgumentParser()
        client = TestFacebookBotClient(arguments)
        self.assertIsNotNone(client)

        self.assertEquals("FACEBOOK_VERIFY_TOKEN", client._verify_token)
        self.assertEquals("FACEBOOK_ACCESS_TOKEN", client._access_token)

        self.assertEquals("Facebook",
                          client.bot.brain.properties.property("env"))

        self.assertIsInstance(client.get_client_configuration(),
                              FacebookConfiguration)

        self.assertIsInstance(client._facebook_bot, Bot)
Exemple #25
0
    def test_api_keys(self):
        arguments = MockArgumentParser()
        client = RestBotClient("testrest", arguments)
        self.assertIsNotNone(client)

        client.configuration.client_configuration._use_api_keys = True
        client.configuration.client_configuration._api_key_file = os.path.dirname(__file__) + os.sep + ".." + os.sep + "api_keys.txt"

        client.initialise()

        self.assertEqual(3, len(client.api_keys.api_keys))
        self.assertTrue(client.api_keys.is_apikey_valid("11111111"))
        self.assertTrue(client.api_keys.is_apikey_valid("22222222"))
        self.assertTrue(client.api_keys.is_apikey_valid("33333333"))
        self.assertFalse(client.api_keys.is_apikey_valid("99999999"))
Exemple #26
0
    def test_empty_config_init(self):
        arguments = MockArgumentParser()
        client = MockBotClient(arguments)

        configuration = unittest.mock.Mock()

        configuration.configurations = []

        configuration.bot_selector = "programy.clients.client.DefaultBotSelector"

        factory = BotFactory(client, configuration)
        self.assertIsNotNone(factory)

        bot = factory.select_bot()
        self.assertIsNone(bot)
    def test_twitter_init(self):
        arguments = MockArgumentParser()
        client = MockTwitterBotClient(arguments)

        self.assertIsNotNone(client.get_client_configuration())
        self.assertIsInstance(client.get_client_configuration(), TwitterConfiguration)
        self.assertEqual("ProgramY AIML2.0 Twitter Client", client.get_description())

        self.assertEqual("username", client._username)
        self.assertEqual(8, client._username_len)

        self.assertEqual("consumer_key", client._consumer_key)
        self.assertEqual("consumer_secret", client._consumer_secret)
        self.assertEqual("access_token", client._access_token)
        self.assertEqual("access_secret", client._access_token_secret)
Exemple #28
0
    def test_verify_api_key_usage(self):
        arguments = MockArgumentParser()
        client = RestBotClient("testrest", arguments)
        self.assertIsNotNone(client)

        client.configuration.client_configuration._use_api_keys = True
        client.configuration.client_configuration._api_key_file = os.path.dirname(
            __file__) + os.sep + ".." + os.sep + "api_keys.txt"

        client.initialise()

        request = MockRequest()
        request.args['apikey'] = '11111111'

        self.assertTrue(client.api_keys.verify_api_key_usage(request))
Exemple #29
0
    def test_viber_client_init(self):
        arguments = MockArgumentParser()
        client = MockViberBotClient(arguments)
        self.assertIsNotNone(client)

        self.assertEqual("VIBER_TOKEN", client._viber_token)
        self.assertIsNotNone(client._viber_bot)

        self.assertIsInstance(client.get_client_configuration(),
                              ViberConfiguration)

        self.assertIsInstance(client._viber_bot, Api)

        self.assertFalse(client._render_callback())
        self.assertIsInstance(client.renderer, TextRenderer)