예제 #1
0
def test_insert_retrieve_permission(bot_test_database):
    perm1 = CommandPermission(guild_id=3,
                              command_name="test",
                              permission_filter="filter1")
    perm2 = CommandPermission(guild_id=4,
                              command_name="test",
                              permission_filter="filter2")

    bot_test_database.insert_permission(perm1)
    bot_test_database.insert_permission(perm2)

    retrieved_perm = bot_test_database.retrieve_permission(
        "guild_id=%s AND command_name=%s", (3, "test"))
    assert retrieved_perm == perm1
예제 #2
0
def test_insert_retrieve_permissions(bot_test_database):
    perm1 = CommandPermission(guild_id=3,
                              command_name="test",
                              permission_filter="filter1")
    perm2 = CommandPermission(guild_id=4,
                              command_name="test",
                              permission_filter="filter2")

    bot_test_database.insert_permission(perm1)
    bot_test_database.insert_permission(perm2)

    retrieved_perms = bot_test_database.retrieve_permissions()
    assert next(retrieved_perms, None) == perm1
    assert next(retrieved_perms, None) == perm2
    assert next(retrieved_perms, None) is None
예제 #3
0
def test_load():
    permissions.load()
    assert not permissions.cache

    Database(BOT_TEST_DB_NAME).insert_permission(
        CommandPermission(guild_id=3,
                          command_name="test1",
                          permission_filter="filter"))

    permissions.load()
    assert permissions.cache
    assert permissions.cache[3]["test1"] == "filter"
예제 #4
0
def set_permission_filter(guild_id: int, command_wrapper: FunctionWrapper,
                          permission_filter: str) -> None:
    """Updates the permission filter in this guild for this command to the given value.
    If given `None`, the permission entry is deleted."""
    if permission_filter is None:
        Database(DEFAULT_DB_NAME).delete_permission(guild_id,
                                                    command_wrapper.names[0])
    else:
        Database(DEFAULT_DB_NAME).insert_permission(
            CommandPermission(guild_id, command_wrapper.names[0],
                              permission_filter))
    load()
예제 #5
0
 def retrieve_permissions(self, where: str=None, where_values: tuple=None) -> Generator[CommandPermission, None, None]:
     """Returns a generator of all command permissions from the database matching the given WHERE clause."""
     fetched_rows = self.retrieve_table_data(
         table        = "permissions",
         where        = where,
         where_values = where_values,
         selection    = "guild_id, command_name, permission_filter"
     )
     for row in (fetched_rows or []):
         guild_id = row[0]
         command_name = row[1]
         permission_filter = row[2]
         yield CommandPermission(guild_id, command_name, permission_filter)
예제 #6
0
def test_permission_hash():
    permission = CommandPermission(guild_id=1, command_name="test", permission_filter="filter")
    assert permission.__hash__()
예제 #7
0
def test_permission_eq_type_mismatch():
    permission = CommandPermission(guild_id=1, command_name="test", permission_filter="filter")
    assert permission != "not a sub"
예제 #8
0
def test_permission_eq():
    permission1 = CommandPermission(guild_id=1, command_name="test", permission_filter="filter")
    permission2 = CommandPermission(guild_id=1, command_name="test", permission_filter="filter")
    permission3 = CommandPermission(guild_id=3, command_name="test", permission_filter="filter")
    assert permission1 == permission2
    assert permission1 != permission3
예제 #9
0
def test_permission_init_str_id():
    permission = CommandPermission(guild_id="1", command_name="test", permission_filter="filter")
    assert permission.guild_id == 1