Files
sure/test/controllers/admin/sso_identity_blocks_controller_test.rb
T

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