Ejemplo n.º 1
0
    def api_builder(
            text: str,
            from_id: int = 92540660,
            on_datetime: datetime.datetime = datetime.datetime.fromtimestamp(
                1620678005),
            n_messages: int = 1):
        # Все подобрано как отвечает реальный ВК, поэтому дважды подумайте, прежде чем менять
        # Забрал с https://github.com/timoniq/vkbottle/blob/c6ebefb/tests/bot_test.py
        def callback(data: dict):
            # Этот парень нужен
            if "groups.getById" in data["url"]:
                return {"response": [{"id": 1}]}
            # И этот тоже
            elif "groups.getLongPollServer" in data["url"]:
                return {"response": {"ts": 1, "server": "!SERVER!", "key": ""}}
            # И этот тоже
            elif "!SERVER!" in data["url"]:
                return raw_message_builder(text=text,
                                           from_id=from_id,
                                           on_datetime=on_datetime,
                                           n_messages=n_messages)
            # Отправка сообщений со стороны бота.
            elif "messages.send" in data["url"]:
                target_data = data['data']
                if 'keyboard' in target_data:
                    try:
                        json.dumps(target_data['keyboard'])
                    except TypeError:
                        target_data['keyboard'] = target_data[
                            'keyboard'].get_json()
                return json.dumps({"response": {**data['data'], **{"r": 1}}})

        # Создадим API, в котором клиент будет ходить на коллбеки выше ВМЕСТО vk.com
        api = API("token")
        api.http._session = MockedClient(None, callback=callback)
        return api
Ejemplo n.º 2
0
async def test_client():
    client = MockedClient("some text")
    text = await client.request_text("https://example.com")
    await client.close()
    assert text == "some text"
Ejemplo n.º 3
0
async def test_session_manager():
    session_manager = ManySessionManager(lambda: MockedClient("some text"))
    async with session_manager as session:
        assert await session.request_text("GET", "https://example.com") == "some text"
Ejemplo n.º 4
0
def set_http_callback(api: API, callback: Callable[[dict], Any]):
    api.http_client = MockedClient(callback=callback)
Ejemplo n.º 5
0
def set_http_callback(api: API, callback: typing.Callable[[dict], typing.Any]):
    api.http._session = MockedClient(callback=callback)