Example #1
0
def test_sync_failed_get_command_permission_for_guild(
    dispike_object: Dispike, ):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/1234/permissions"
    ).mock(return_value=Response(
        500,
        json={
            "id": "1123123123123",
            "application_id": "0000",
            "guild_id": "1111",
            "permissions": [{
                "id": "1234",
                "type": 2,
                "permission": True,
            }],
        },
    ))

    dispike_object._application_id == "0000"

    with pytest.raises(DiscordAPIError):
        _get_commands = dispike_object.get_command_permission_in_guild(
            command_id="1234", guild_id=1111)

    dispike_object._application_id = "APPID"
Example #2
0
def test_valid_arguments_for_run_function(dispike_object: Dispike):
    with pytest.raises(ValueError):
        dispike_object.run()

    # test if ValueError is raised if unix_host and port are both set
    with pytest.raises(ValueError):
        dispike_object.run(unix_socket="unix://testingDispikeObject", port=21332)
Example #3
0
def test_sync_get_command_permission_for_guild(dispike_object: Dispike, ):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/1234/permissions"
    ).mock(return_value=Response(
        200,
        json={
            "id": "1123123123123",
            "application_id": "0000",
            "guild_id": "1111",
            "permissions": [{
                "id": "1234",
                "type": 2,
                "permission": True,
            }],
        },
    ))

    dispike_object._application_id == "0000"
    _get_commands = dispike_object.get_command_permission_in_guild(
        command_id="1234", guild_id=1111)
    assert isinstance(_get_commands, GuildApplicationCommandPermissions)
    _get_commands: GuildApplicationCommandPermissions
    assert _get_commands.id == 1123123123123
    assert _get_commands.application_id == 0000
    assert len(_get_commands.permissions) == 1
    assert _get_commands.permissions[0].id == 1234
    assert _get_commands.permissions[0].type == 2
    assert _get_commands.permissions[0].permission == True
    dispike_object._application_id = "APPID"
Example #4
0
def test_sync_get_all_command_permission_for_guild(dispike_object: Dispike, ):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/permissions"
    ).mock(return_value=Response(
        200,
        json=[
            {
                "id": "1111",
                "application_id": "0000",
                "guild_id": "00",
                "permissions": [{
                    "id": "1234",
                    "type": 2,
                    "permission": True,
                }],
            },
            {
                "id": "2222",
                "application_id": "0000",
                "guild_id": "00",
                "permissions": [{
                    "id": "1234",
                    "type": 2,
                    "permission": True,
                }],
            },
            {
                "id": "3333",
                "application_id": "0000",
                "guild_id": "00",
                "permissions": [{
                    "id": "1234",
                    "type": 2,
                    "permission": True,
                }],
            },
        ],
    ))

    dispike_object._application_id == "0000"
    _get_commands = dispike_object.get_all_command_permissions_in_guild(
        guild_id=1111)

    assert len(_get_commands) == 3
    for command in _get_commands:
        assert isinstance(command, GuildApplicationCommandPermissions)
        command: GuildApplicationCommandPermissions
        assert command.id in [1111, 2222, 3333]
        assert command.application_id == 0000
        assert len(command.permissions) == 1
        assert command.permissions[0].id == 1234
        assert command.permissions[0].type == 2
        assert command.permissions[0].permission == True

    dispike_object._application_id = "APPID"
Example #5
0
def test_sync_not_found_get_command_permission_for_guild(
    dispike_object: Dispike, ):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/1234/permissions"
    ).mock(return_value=Response(404, ))

    dispike_object._application_id == "0000"

    _get_commands = dispike_object.get_command_permission_in_guild(
        command_id="1234", guild_id=1111)
    assert _get_commands == None

    dispike_object._application_id = "APPID"
Example #6
0
def test_delete_command_with_invalid_guild_combinations():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )

    with pytest.raises(TypeError):
        _current_dispike_object.delete_command(command_id=123123123123, guild_only=True)
Example #7
0
def test_bad_new_command_argument_for_edit_command():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )

    with pytest.raises(TypeError):
        _current_dispike_object.edit_command(False)
Example #8
0
def test_sync_no_permissions_get_all_command_permission_for_guild(
    dispike_object: Dispike, ):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/permissions"
    ).mock(return_value=Response(
        200,
        json=[],
    ))

    dispike_object._application_id == "0000"
    _get_commands = dispike_object.get_all_command_permissions_in_guild(
        guild_id=1111)

    assert len(_get_commands) == 0

    dispike_object._application_id = "APPID"
Example #9
0
def test_get_commands_globally_call_invalid_incoming(dispike_object: Dispike):
    respx.get(f"https://discord.com/api/v8/applications/APPID/commands").mock(
        return_value=Response(
            200,
            json=[
                {
                    "id":
                    "1234",
                    "application_id":
                    "7890",
                    "name":
                    "mccoolbotv1",
                    "options": [{
                        "type": 6,
                        "name": "wave",
                        "description": "wave at a person"
                    }],
                },
                {
                    "id":
                    "3344",
                    "application_id":
                    "7890",
                    "description":
                    "send a message",
                    "options": [{
                        "type": 3,
                        "name": "message",
                        "description": "send a message"
                    }],
                },
            ],
        ))
    with pytest.raises(ValidationError):
        _get_commands = dispike_object.get_commands()
Example #10
0
def test_no_guild_id_passed_but_guild_only_argument_for_edit_command():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )

    with pytest.raises(TypeError):
        _current_dispike_object.edit_command(
            new_command=[], guild_only=True, command_id=1122122
        )
Example #11
0
def test_invalid_reset_registration(dispike_object: Dispike):
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )

    with pytest.raises(Exception):
        _current_dispike_object.reset_registration(
            new_bot_token=tuple(0, 0, 0), new_application_id={1: None}
        )
Example #12
0
async def test_default_ctx_argument_name():
    from dispike import Dispike

    d = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="NotNeeded",
        application_id="NotNeeded",
    )
    assert d._cache_router._user_defined_setting_ctx_value == "ctx"
Example #13
0
def dispike_object():
    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(
        encoder=HexEncoder)

    return Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )
Example #14
0
def test_reset_registeration(dispike_object: Dispike):
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(
        encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )

    assert _current_dispike_object.reset_registration(
        new_bot_token="NewBotToken",
        new_application_id="newApplicationId") == True
    assert _current_dispike_object._registrator.request_headers != dispike_object._registrator.request_headers
    assert _current_dispike_object._application_id != dispike_object._application_id
Example #15
0
def test_reset_registration_with_no_initial_bot_token(dispike_object: Dispike):
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    _current_dispike_object = Dispike(
        client_public_key=verification_key.decode(),
        application_id="APPID",
    )

    assert (
        _current_dispike_object.reset_registration(
            new_bot_token="BOTTOKEN", new_application_id=None
        )
        == True
    )
    assert _current_dispike_object._bot_token == "BOTTOKEN"
    assert _current_dispike_object._application_id == "APPID"
Example #16
0
def dispike_object_no_bot_token():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    return Dispike(
        client_public_key=verification_key.decode(),
        application_id="APPID",
    )
Example #17
0
def test_if_skip_verification_argument():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(encoder=HexEncoder)

    set_to_false = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
    )
    set_to_true = Dispike(
        client_public_key=verification_key.decode(),
        bot_token="BOTTOKEN",
        application_id="APPID",
        middleware_testing_skip_verification_key_request=True,
    )

    assert set_to_false._testing_skip_verification_key_request == False
    assert set_to_true._testing_skip_verification_key_request == True
Example #18
0
async def test_detect_functions_with_event_decorator(dispike_object: Dispike):
    class SampleEventCollectionClass(interactions.EventCollection):
        @interactions.on("sampleEventCollectionFunction")
        async def sample_interaction_function(*args, **kwargs):
            pass

    assert (
        SampleEventCollectionClass.sample_interaction_function
        in dispike_object._detect_functions_with_event_decorator(
            collection=SampleEventCollectionClass
        )
    )
Example #19
0
def test_single_edit_command_globally(dispike_object: Dispike,
                                      example_edit_command: DiscordCommand):
    respx.patch("https://discord.com/api/v8/applications/APPID/commands").mock(
        return_value=Response(
            200,
            json=example_edit_command.dict(),
        ))
    _edit_command = dispike_object.edit_command(
        new_command=example_edit_command)
    assert isinstance(_edit_command,
                      DiscordCommand) == True, type(_edit_command)
    assert _edit_command.id == example_edit_command.id
    assert _edit_command.name == example_edit_command.name
Example #20
0
def test_delete_command_guild_only(dispike_object: Dispike,
                                   example_edit_command: DiscordCommand):
    respx.delete(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands/1234"
    ).mock(return_value=Response(
        204,
        json=example_edit_command.dict(),
    ))
    _delete_command = dispike_object.delete_command(
        command_id=1234,
        guild_only=True,
        guild_id_passed="EXAMPLE_GUILD",
    )
    assert _delete_command == True
Example #21
0
def test_failed_delete_command_guild_only(
        dispike_object: Dispike, example_edit_command: DiscordCommand):
    respx.delete(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands/1234"
    ).mock(return_value=Response(
        500,
        json=example_edit_command.dict(),
    ))

    with pytest.raises(DiscordAPIError):
        _delete_command = dispike_object.delete_command(
            command_id=1234,
            guild_only=True,
            guild_id_passed="EXAMPLE_GUILD",
        )
Example #22
0
def test_failed_single_edit_command_guild_only(
        dispike_object: Dispike, example_edit_command: DiscordCommand):
    respx.patch(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands/1234"
    ).mock(return_value=Response(
        401,
        json=example_edit_command.dict(),
    ))

    _edit_command = dispike_object.edit_command(
        new_command=example_edit_command,
        command_id=1234,
        guild_only=True,
        guild_id_passed="EXAMPLE_GUILD",
    )
    assert _edit_command == False
Example #23
0
def test_bulk_edit_command_globally(dispike_object: Dispike,
                                    example_edit_command: DiscordCommand):
    respx.patch("https://discord.com/api/v8/applications/APPID/commands").mock(
        return_value=Response(
            200,
            json=[example_edit_command.dict(),
                  example_edit_command.dict()],
        ))
    _edit_command = dispike_object.edit_command(
        new_command=example_edit_command, bulk=True)
    assert isinstance(_edit_command, list) == True
    assert len(_edit_command) == 2
    for command in _edit_command:
        assert isinstance(command, DiscordCommand)
        assert command.id == example_edit_command.id
        assert command.name == example_edit_command.name
Example #24
0
def test_initalization():
    from nacl.encoding import HexEncoder
    from nacl.signing import SigningKey

    _generated_signing_key = SigningKey.generate()
    verification_key = _generated_signing_key.verify_key.encode(
        encoder=HexEncoder)

    assert (isinstance(
        Dispike(
            client_public_key=verification_key.decode(),
            bot_token="BOTTOKEN",
            application_id="APPID",
        ),
        Dispike,
    ) == True)
Example #25
0
def test_failed_set_command_permission(dispike_object: Dispike, ):
    respx.put(
        "https://discord.com/api/v8/applications/APPID/guilds/1111/commands/1234/permissions"
    ).mock(return_value=Response(500, ))

    _set_commands = dispike_object.set_command_permission(
        command_id=1234,
        guild_id=1111,
        new_permissions=NewApplicationPermission(permissions=[
            ApplicationCommandPermissions(
                permission=True,
                type=ApplicationCommandPermissionType.ROLE,
                id=1234)
        ]),
    )
    assert _set_commands == False
Example #26
0
def test_get_commands_guild_only_call_successful(dispike_object: Dispike):

    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands"
    ).mock(return_value=Response(
        200,
        json=[
            {
                "id":
                "1234",
                "application_id":
                "7890",
                "name":
                "mccoolbotv1",
                "description":
                "McCoolbot is the coolest bot around.",
                "options": [{
                    "type": 6,
                    "name": "wave",
                    "description": "wave at a person"
                }],
            },
            {
                "id":
                "3344",
                "application_id":
                "7890",
                "name":
                "mccoolbotv2",
                "description":
                "send a message",
                "options": [{
                    "type": 3,
                    "name": "message",
                    "description": "send a message"
                }],
            },
        ],
    ))
    _get_commands = dispike_object.get_commands(
        guild_only=True, guild_id_passed="EXAMPLE_GUILD")
    for item in _get_commands:
        assert isinstance(item, IncomingApplicationCommand) == True

    assert len(_get_commands) == 2
Example #27
0
def test_get_commands_guild_only_call_fail(dispike_object: Dispike):
    respx.get(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands"
    ).mock(return_value=Response(
        404,
        json=[
            {
                "id":
                "1234",
                "application_id":
                "7890",
                "name":
                "mccoolbotv1",
                "description":
                "McCoolbot is the coolest bot around.",
                "options": [{
                    "type": 6,
                    "name": "wave",
                    "description": "wave at a person"
                }],
            },
            {
                "id":
                "3344",
                "application_id":
                "7890",
                "name":
                "mccoolbotv2",
                "description":
                "send a message",
                "options": [{
                    "type": 3,
                    "name": "message",
                    "description": "send a message"
                }],
            },
        ],
    ))
    with pytest.raises(DiscordAPIError):
        _get_commands = dispike_object.get_commands(
            guild_only=True, guild_id_passed="EXAMPLE_GUILD")
Example #28
0
def test_bulk_edit_command_guild_only(dispike_object: Dispike,
                                      example_edit_command: DiscordCommand):
    respx.put(
        "https://discord.com/api/v8/applications/APPID/guilds/EXAMPLE_GUILD/commands"
    ).mock(return_value=Response(
        200,
        json=[example_edit_command.dict(),
              example_edit_command.dict()],
    ))
    _edit_command = dispike_object.edit_command(
        new_command=[example_edit_command, example_edit_command],
        guild_only=True,
        bulk=True,
        guild_id_passed="EXAMPLE_GUILD",
    )
    assert isinstance(_edit_command, list) == True
    assert len(_edit_command) == 2
    for command in _edit_command:
        assert isinstance(command, DiscordCommand)
        assert command.id == example_edit_command.id
        assert command.name == example_edit_command.name
Example #29
0
def test_failed_delete_command_globally(dispike_object: Dispike, ):
    respx.delete("https://discord.com/api/v8/applications/APPID/commands/1234"
                 ).mock(return_value=Response(500, ))
    with pytest.raises(DiscordAPIError):
        _delete_command = dispike_object.delete_command(command_id=1234)
Example #30
0
def test_get_commands_invalid_guild_id_passed(dispike_object: Dispike):
    with pytest.raises(TypeError):
        dispike_object.get_commands(guild_only=True)