mirror of
https://github.com/we-promise/sure.git
synced 2026-09-09 00:24:15 +00:00
75 lines
2.9 KiB
Ruby
75 lines
2.9 KiB
Ruby
require "test_helper"
|
|
|
|
class Admin::SsoIdentityBlocksControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@block = SsoIdentityBlock.create!(
|
|
provider: "openid_connect",
|
|
uid_digest: SsoIdentityBlock.digest("removed-subject"),
|
|
identity_label: "removed-user@example.com"
|
|
)
|
|
end
|
|
|
|
test "super admin can allow a removed SSO identity again" do
|
|
sign_in users(:sure_support_staff)
|
|
|
|
assert_difference -> { SsoIdentityBlock.count }, -1 do
|
|
assert_difference -> { SsoAuditLog.by_event("identity_unblocked").count }, 1 do
|
|
delete admin_sso_identity_block_url(@block)
|
|
end
|
|
end
|
|
|
|
assert_redirected_to admin_users_path
|
|
assert_equal "The SSO identity can sign in or create an account again.", flash[:notice]
|
|
|
|
audit_log = SsoAuditLog.by_event("identity_unblocked").last
|
|
assert_equal users(:sure_support_staff).id, audit_log.metadata["actor_user_id"]
|
|
assert_equal @block.id, audit_log.metadata["identity_block_id"]
|
|
assert_equal @block.provider, audit_log.provider
|
|
end
|
|
|
|
test "super admin sees the identity unblocked notice in German" do
|
|
user = users(:sure_support_staff)
|
|
user.update!(locale: "de")
|
|
sign_in user
|
|
|
|
delete admin_sso_identity_block_url(@block)
|
|
|
|
assert_redirected_to admin_users_path
|
|
assert_equal "Die SSO-Identität kann wieder für die Anmeldung oder Kontoerstellung verwendet werden.", flash[:notice]
|
|
assert_equal "Die SSO-Identität kann wieder für die Anmeldung oder Kontoerstellung verwendet werden.",
|
|
I18n.t("admin.sso_identity_blocks.destroy.success", locale: :de, fallback: false)
|
|
end
|
|
|
|
test "super admin sees the removed identity recovery section in German" do
|
|
user = users(:sure_support_staff)
|
|
user.update!(locale: "de")
|
|
sign_in user
|
|
|
|
get admin_users_url
|
|
|
|
assert_response :success
|
|
assert_includes response.body, "Entfernte SSO-Identitäten"
|
|
assert_includes response.body, "Mit diesen Identitäten kann kein Konto erstellt oder erneut verknüpft werden. Lass eine Identität nur dann wieder zu, wenn sie versehentlich entfernt wurde."
|
|
assert_includes response.body, "Wieder zulassen"
|
|
assert_includes response.body,
|
|
"Möchtest du die SSO-Identität #{@block.identity_label} wieder für die Anmeldung oder Kontoerstellung zulassen?"
|
|
refute_includes response.body, "Removed SSO identities"
|
|
|
|
%w[title description allow_again confirm].each do |key|
|
|
assert I18n.exists?("admin.users.index.removed_sso_identities.#{key}", :de, fallback: false)
|
|
end
|
|
end
|
|
|
|
test "regular user cannot allow a removed SSO identity again" do
|
|
sign_in users(:family_member)
|
|
|
|
assert_no_difference -> { SsoIdentityBlock.count } do
|
|
assert_no_difference -> { SsoAuditLog.by_event("identity_unblocked").count } do
|
|
delete admin_sso_identity_block_url(@block)
|
|
end
|
|
end
|
|
|
|
assert_redirected_to root_path
|
|
end
|
|
end
|