From 1edc827bca96aef338ddc2ff1f6fa3d867702533 Mon Sep 17 00:00:00 2001 From: Jamil Date: Tue, 2 Jul 2024 12:59:23 -0700 Subject: [PATCH] =?UTF-8?q?feat(portal):=20enable=20welcome=20email=20send?= =?UTF-8?q?ing=20on=20manually=20provisionned=20o=E2=80=A6=20(#5679)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …idc users (#5127) Currently we can only send a welcome email to oidc users who have already logged in once. For manually provisionned oidc users, we can't. This PR aims to solve this issue --------- Co-authored-by: Antoine --- .../web/lib/web/components/core_components.ex | 3 +- .../web/test/web/live/actors/show_test.exs | 45 ++++++++++++++++++- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/elixir/apps/web/lib/web/components/core_components.ex b/elixir/apps/web/lib/web/components/core_components.ex index 578b1f44a..02de65900 100644 --- a/elixir/apps/web/lib/web/components/core_components.ex +++ b/elixir/apps/web/lib/web/components/core_components.ex @@ -926,7 +926,8 @@ defmodule Web.CoreComponents do end def identity_has_email?(identity) do - not is_nil(provider_email(identity)) or identity.provider.adapter == :email + not is_nil(provider_email(identity)) or identity.provider.adapter == :email or + identity.provider_identifier =~ "@" end defp provider_email(identity) do diff --git a/elixir/apps/web/test/web/live/actors/show_test.exs b/elixir/apps/web/test/web/live/actors/show_test.exs index 5696a1b71..2bcfca2a4 100644 --- a/elixir/apps/web/test/web/live/actors/show_test.exs +++ b/elixir/apps/web/test/web/live/actors/show_test.exs @@ -501,7 +501,34 @@ defmodule Web.Live.Actors.ShowTest do } ) - oidc_identity = Fixtures.Auth.create_identity(account: account, actor: actor) + {oidc_provider, _bypass} = + Fixtures.Auth.start_and_create_openid_connect_provider(account: account) + + oidc_manually_provisioned_identity = + Fixtures.Auth.create_identity( + account: account, + actor: actor, + provider: oidc_provider, + provider_identifier: Fixtures.Auth.email() + ) + + oidc_identity = + Fixtures.Auth.create_identity( + account: account, + actor: actor, + provider: oidc_provider, + provider_state: %{ + "userinfo" => %{"email" => Fixtures.Auth.email()} + } + ) + + oidc_identity_with_no_email = + Fixtures.Auth.create_identity( + account: account, + actor: actor, + provider: oidc_provider, + provider_identifier: "sub123" + ) email_identity = Fixtures.Auth.create_identity(account: account, actor: actor, provider: email_provider) @@ -524,9 +551,23 @@ defmodule Web.Live.Actors.ShowTest do |> element("#identity-#{google_identity.id} button", "Send Welcome Email") |> has_element?() - refute lv + assert lv + |> element( + "#identity-#{oidc_manually_provisioned_identity.id} button", + "Send Welcome Email" + ) + |> has_element?() + + assert lv |> element("#identity-#{oidc_identity.id} button", "Send Welcome Email") |> has_element?() + + refute lv + |> element( + "#identity-#{oidc_identity_with_no_email.id} button", + "Send Welcome Email" + ) + |> has_element?() end test "allows deleting identities", %{