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"
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)
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"
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"
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"
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)
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)
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"
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()
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 )
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} )
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"
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", )
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
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"
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", )
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
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 ) )
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
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
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", )
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
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
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)
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
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
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")
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
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)
def test_get_commands_invalid_guild_id_passed(dispike_object: Dispike): with pytest.raises(TypeError): dispike_object.get_commands(guild_only=True)