mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-27 10:40:22 -07:00
[PR #7418/fd0d05d6 backport][stable-7] Bugfix: keycloak_identity_provider does not handle mapper changes properly (#7774)
Bugfix: keycloak_identity_provider does not handle mapper changes properly (#7418)
* fix keycloak_identity_provider ITs to actually pass
- wrong identityProviderAlias in mapper configuration
* kc_identity_provider: add mapper reconfiguration regression tests
* test for removing an existing mapper
* test for adding a new mapper when others already exist
* test for module idempotency when mappers not ordered by name in ascending order
* kc_identity_provider: add bugfixes for mapper reconfigurations
* removing an existing mapper
* adding a new mapper when others already exist
* module idempotency when mappers not ordered by name in ascending order
* add changelog fragment
* prevent unnecessary update_mapper calls when there is no change
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update changelogs/fragments/7418-kc_identity_provider-mapper-reconfiguration-fixes.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/keycloak_identity_provider.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* kc_identity_provider: sort changeset mappers via name OR id to prevent potential failures in case name was not specified in playbook
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit fd0d05d6f2
)
Co-authored-by: Jakub Danek <danekja@users.noreply.github.com>
This commit is contained in:
parent
9a6eb4e028
commit
ef42314714
3 changed files with 127 additions and 10 deletions
|
@ -35,14 +35,14 @@
|
|||
syncMode: FORCE
|
||||
mappers:
|
||||
- name: "first_name"
|
||||
identityProviderAlias: "oidc-idp"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "first_name"
|
||||
user.attribute: "first_name"
|
||||
syncMode: "INHERIT"
|
||||
- name: "last_name"
|
||||
identityProviderAlias: "oidc-idp"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "last_name"
|
||||
|
@ -84,14 +84,14 @@
|
|||
syncMode: FORCE
|
||||
mappers:
|
||||
- name: "first_name"
|
||||
identityProviderAlias: "oidc-idp"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "first_name"
|
||||
user.attribute: "first_name"
|
||||
syncMode: "INHERIT"
|
||||
- name: "last_name"
|
||||
identityProviderAlias: "oidc-idp"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "last_name"
|
||||
|
@ -109,7 +109,7 @@
|
|||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Update existing identity provider (with change)
|
||||
- name: Update existing identity provider (with change, no mapper change)
|
||||
community.general.keycloak_identity_provider:
|
||||
auth_keycloak_url: "{{ url }}"
|
||||
auth_realm: "{{ admin_realm }}"
|
||||
|
@ -132,6 +132,109 @@
|
|||
- result.existing.enabled == true
|
||||
- result.end_state.enabled == false
|
||||
|
||||
- name: Update existing identity provider (delete mapper)
|
||||
community.general.keycloak_identity_provider:
|
||||
auth_keycloak_url: "{{ url }}"
|
||||
auth_realm: "{{ admin_realm }}"
|
||||
auth_username: "{{ admin_user }}"
|
||||
auth_password: "{{ admin_password }}"
|
||||
realm: "{{ realm }}"
|
||||
alias: "{{ idp }}"
|
||||
state: present
|
||||
mappers:
|
||||
- name: "first_name"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "first_name"
|
||||
user.attribute: "first_name"
|
||||
syncMode: "INHERIT"
|
||||
register: result
|
||||
|
||||
- name: Debug
|
||||
debug:
|
||||
var: result
|
||||
|
||||
- name: Assert identity provider updated
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.existing.mappers | length == 2
|
||||
- result.end_state.mappers | length == 1
|
||||
- result.end_state.mappers[0].name == "first_name"
|
||||
|
||||
- name: Update existing identity provider (add mapper)
|
||||
community.general.keycloak_identity_provider:
|
||||
auth_keycloak_url: "{{ url }}"
|
||||
auth_realm: "{{ admin_realm }}"
|
||||
auth_username: "{{ admin_user }}"
|
||||
auth_password: "{{ admin_password }}"
|
||||
realm: "{{ realm }}"
|
||||
alias: "{{ idp }}"
|
||||
state: present
|
||||
mappers:
|
||||
- name: "last_name"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "last_name"
|
||||
user.attribute: "last_name"
|
||||
syncMode: "INHERIT"
|
||||
- name: "first_name"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "first_name"
|
||||
user.attribute: "first_name"
|
||||
syncMode: "INHERIT"
|
||||
register: result
|
||||
|
||||
- name: Debug
|
||||
debug:
|
||||
var: result
|
||||
|
||||
- name: Assert identity provider updated
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.existing.mappers | length == 1
|
||||
- result.end_state.mappers | length == 2
|
||||
|
||||
- name: Update existing identity provider (no change, test mapper idempotency)
|
||||
community.general.keycloak_identity_provider:
|
||||
auth_keycloak_url: "{{ url }}"
|
||||
auth_realm: "{{ admin_realm }}"
|
||||
auth_username: "{{ admin_user }}"
|
||||
auth_password: "{{ admin_password }}"
|
||||
realm: "{{ realm }}"
|
||||
alias: "{{ idp }}"
|
||||
state: present
|
||||
mappers:
|
||||
- name: "last_name"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "last_name"
|
||||
user.attribute: "last_name"
|
||||
syncMode: "INHERIT"
|
||||
- name: "first_name"
|
||||
identityProviderAlias: "{{ idp }}"
|
||||
identityProviderMapper: "oidc-user-attribute-idp-mapper"
|
||||
config:
|
||||
claim: "first_name"
|
||||
user.attribute: "first_name"
|
||||
syncMode: "INHERIT"
|
||||
register: result
|
||||
|
||||
- name: Debug
|
||||
debug:
|
||||
var: result
|
||||
|
||||
- name: Assert identity provider updated
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Delete existing identity provider
|
||||
community.general.keycloak_identity_provider:
|
||||
auth_keycloak_url: "{{ url }}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue