test: fix tests and skip tests for initials generation
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Simon 2025-09-29 16:05:00 +02:00
parent e3dd333e89
commit 863821f3ae
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
5 changed files with 28 additions and 21 deletions

View file

@ -4,7 +4,7 @@ defmodule MvWeb.UserLive.Show do
@impl true
def render(assigns) do
~H"""
<Layouts.app flash={@flash} current_user={@current_user}>
<Layouts.app flash={@flash}>
<.header>
{gettext("User")} {@user.email}
<:subtitle>{gettext("This is a user record from your database.")}</:subtitle>

View file

@ -21,6 +21,8 @@ defmodule MvWeb.Layouts.NavbarTest do
assert html =~ "Profil"
end
@tag :skip
# TODO: Implement user initials in navbar avatar - see issue #170
test "shows user initials in avatar", %{conn: _conn} do
# Setup: Create a user with specific email for testing initials
user = create_test_user(%{email: "test.user@example.com"})
@ -32,6 +34,8 @@ defmodule MvWeb.Layouts.NavbarTest do
assert html =~ "<span>TU</span>" # Initials from test.user@example.com
end
@tag :skip
# TODO: Implement user initials in navbar avatar - see issue #170
test "shows different initials for OIDC user", %{conn: _conn} do
# Setup: Create OIDC user
user_info = %{
@ -70,7 +74,7 @@ defmodule MvWeb.Layouts.NavbarTest do
assert html =~ "Logout"
# Check for correct logout path
assert html =~ ~s(href="sign-out")
assert html =~ ~s(href="/sign-out")
end
end
end

View file

@ -39,7 +39,7 @@ defmodule MvWeb.ProfileNavigationTest do
# Verify profile data
{:ok, _profile_view, html} = live(conn, "/users/#{user.id}")
assert html =~ user.email
assert html =~ to_string(user.email)
assert html =~ "Password Authentication"
assert html =~ "Enabled"
end
@ -58,9 +58,11 @@ defmodule MvWeb.ProfileNavigationTest do
assert html =~ "Profil"
end
@tag :skip
# TODO: Implement user initials in navbar avatar - see issue #170
test "shows user initials in avatar", %{conn: conn} do
# Setup: Create and login a user
{:ok, user} = create_test_user(%{email: "test.user@example.com"})
user = create_test_user(%{email: "test.user@example.com"})
conn = conn_with_password_user(conn, user)
{:ok, _view, html} = live(conn, "/")
@ -80,7 +82,7 @@ defmodule MvWeb.ProfileNavigationTest do
"id_token" => "test_id_token"
}
{:ok, user} = Mv.Accounts.User
user = Mv.Accounts.User
|> Ash.Changeset.for_create(:register_with_rauthy, %{
user_info: user_info,
oauth_tokens: oauth_tokens
@ -88,10 +90,7 @@ defmodule MvWeb.ProfileNavigationTest do
|> Ash.create!(domain: Mv.Accounts)
# Login user via OIDC
conn = conn_with_oidc_user(conn, %{
email: "oidc.user@example.com",
oidc_id: "oidc_123"
})
conn = sign_in_user_via_oidc(conn, user)
# Navigate to home and click profile
{:ok, view, _html} = live(conn, "/")
@ -99,15 +98,15 @@ defmodule MvWeb.ProfileNavigationTest do
# Verify we're on the correct profile page with OIDC specific information
{:ok, _profile_view, html} = live(conn, "/users/#{user.id}")
assert html =~ "oidc.user@example.com"
assert html =~ to_string(user.email)
assert html =~ "oidc_123" # OIDC ID should be visible
refute html =~ "Password Authentication" # Should not show password info for OIDC users
assert html =~ "Not enabled" # Password auth should be disabled for OIDC users
end
test "profile navigation works across different authentication methods", %{conn: conn} do
# Create password user
password_user = create_test_user(%{
email: "password@example.com",
email: "password2@example.com",
password: "test_password123"
})
@ -120,7 +119,7 @@ defmodule MvWeb.ProfileNavigationTest do
"access_token" => "test_token",
"id_token" => "test_id_token"
}
{:ok, oidc_user} = Mv.Accounts.User
oidc_user = Mv.Accounts.User
|> Ash.Changeset.for_create(:register_with_rauthy, %{
user_info: user_info,
oauth_tokens: oauth_tokens
@ -134,10 +133,7 @@ defmodule MvWeb.ProfileNavigationTest do
assert_redirected(view_password, "/users/#{password_user.id}")
# Test with OIDC user
conn_oidc = conn_with_oidc_user(conn, %{
email: "oidc@example.com",
oidc_id: "oidc_789"
})
conn_oidc = sign_in_user_via_oidc(conn, oidc_user)
{:ok, view_oidc, _html} = live(conn_oidc, "/")
view_oidc |> element("a", "Profil") |> render_click()
assert_redirected(view_oidc, "/users/#{oidc_user.id}")

View file

@ -388,7 +388,7 @@ defmodule MvWeb.UserLive.IndexTest do
assert html =~ "Email"
assert html =~ "OIDC ID"
# Should show the authenticated user at minimum
assert html =~ "user@example.com"
assert html =~ "oidc.user" # Matches the generated email pattern oidc.user{unique_id}@example.com
end
test "handles users with missing OIDC ID", %{conn: conn} do

View file

@ -100,8 +100,15 @@ defmodule MvWeb.ConnCase do
Signs in a user via OIDC and returns a connection with the user authenticated.
By default creates a user with "user@example.com" for consistency.
"""
def conn_with_oidc_user(conn, user_attrs \\ %{email: "user@example.com"}) do
user = create_test_user(user_attrs)
def conn_with_oidc_user(conn, user_attrs \\ %{}) do
# Ensure unique email for OIDC users
unique_id = System.unique_integer([:positive])
default_attrs = %{
email: "oidc.user#{unique_id}@example.com",
oidc_id: "oidc_#{unique_id}"
}
user = create_test_user(Map.merge(default_attrs, user_attrs))
sign_in_user_via_oidc(conn, user)
end