Skip to content

4.13.0 — 2026-06-30

← 4.13.1 | 4.12.1 → | ↑ 4.x series

Added

Adapters - Keycloak

  • Group Management - Added full group lifecycle management to KeycloakPort, AsyncKeycloakPort, and their adapters.
    • create_group, update_group, delete_group for group CRUD.
    • get_group, get_group_by_path, get_group_children, get_groups, get_subgroups, groups_count for retrieval and hierarchy traversal.
  • Group Membership - Added methods for managing user membership and group access control.
    • group_user_add and group_user_remove to attach or detach users from groups.
    • group_set_permissions to toggle group-level authorization.
    • get_group_members to list members of a group.
  • Group Role Mappings - Added realm- and client-level role assignment for groups.
    • get_group_realm_roles, assign_group_realm_roles, delete_group_realm_roles.
    • get_group_client_roles, assign_group_client_roles, delete_group_client_roles.
    • get_composite_client_roles_of_group, get_client_role_groups, get_realm_role_groups for composite and reverse lookups.

Adapters - Redis

  • Database Flush - Added flushdb to RedisPort, AsyncRedisPort, and their adapters for deleting all keys in the current database, with an optional asynchronous flag.
  • RESP3 Protocol - Added REDIS__PROTOCOL configuration (Literal[2, 3], default 3) to select the RESP protocol version across standalone, cluster, and sentinel connections.
  • Sentinel Authentication - Added REDIS__SENTINEL_PASSWORD config for authenticating against sentinel nodes when distinct from the data-node password.
  • Cluster Read Balancing - Cluster connections now apply LoadBalancingStrategy.ROUND_ROBIN when CLUSTER_READ_FROM_REPLICAS is enabled.

Changed

Configs - Redis

  • Protocol Field Replacement - Replaced RedisConfig.VERSION (REDIS__VERSION) with RedisConfig.PROTOCOL (REDIS__PROTOCOL), now typed as Literal[2, 3] for the RESP protocol version. Update environment files accordingly.

Adapters - Redis

  • Async Iterator Typing - Async scan iterators (scan_iter, sscan_iter) now return AsyncIterator[bytes | str] instead of Iterator[bytes | str].

Tests

Tests - Redis Adapter

  • Cluster Test Container - Added RedisClusterTestContainer managing a six-node Redis cluster for integration coverage.
  • Cluster Scenarios - Extended the Redis feature suite with cluster configurations for both sync and async adapters, adding cluster as a recognized adapter type in step definitions.
  • Expanded BDD Coverage - Added scenarios covering strings, expiry/TTL, counters, multi-key operations, key types, pipelines, and flushdb across mock, container, and cluster adapters.

Tests - Keycloak Adapter

  • Group Scenarios - Added BDD coverage for group CRUD, membership, permissions, and realm/client role mappings.

Dependencies

  • Test Images - Bumped Keycloak test container image from keycloak/keycloak:26.6.3 to keycloak/keycloak:26.6.4.
  • Lockfile - Regenerated uv.lock to align with current constraints.