From d10fcc3da10e3378787850c22b5f9e50114b1ac0 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 29 Sep 2025 16:41:46 +0200 Subject: [PATCH] style: fix linting errors --- lib/mv_web/components/layouts.ex | 6 +-- lib/mv_web/components/layouts/navbar.ex | 4 +- lib/mv_web/live_user_auth.ex | 4 +- .../mv_web/components/layouts/navbar_test.exs | 48 +++++++++++-------- test/mv_web/live/profile_navigation_test.exs | 48 +++++++++++-------- test/mv_web/user_live/index_test.exs | 3 +- test/support/conn_case.ex | 1 + 7 files changed, 68 insertions(+), 46 deletions(-) diff --git a/lib/mv_web/components/layouts.ex b/lib/mv_web/components/layouts.ex index 4baae08..b7f7568 100644 --- a/lib/mv_web/components/layouts.ex +++ b/lib/mv_web/components/layouts.ex @@ -31,9 +31,10 @@ defmodule MvWeb.Layouts do attr :flash, :map, required: true, doc: "the map of flash messages" attr :current_user, :map, default: nil, doc: "the current user, if authenticated" + attr :current_scope, :map, - default: nil, - doc: "the current [scope](https://hexdocs.pm/phoenix/scopes.html)" + default: nil, + doc: "the current [scope](https://hexdocs.pm/phoenix/scopes.html)" slot :inner_block, required: true @@ -52,7 +53,6 @@ defmodule MvWeb.Layouts do """ end - @doc """ Shows the flash group with standard titles and content. diff --git a/lib/mv_web/components/layouts/navbar.ex b/lib/mv_web/components/layouts/navbar.ex index 47b4f2e..9009329 100644 --- a/lib/mv_web/components/layouts/navbar.ex +++ b/lib/mv_web/components/layouts/navbar.ex @@ -6,7 +6,9 @@ defmodule MvWeb.Layouts.Navbar do use Gettext, backend: MvWeb.Gettext use MvWeb, :verified_routes - attr :current_user, :map, required: true, doc: "The current user - navbar is only shown when user is present" + attr :current_user, :map, + required: true, + doc: "The current user - navbar is only shown when user is present" def navbar(assigns) do ~H""" diff --git a/lib/mv_web/live_user_auth.ex b/lib/mv_web/live_user_auth.ex index 8fc5224..b78ba21 100644 --- a/lib/mv_web/live_user_auth.ex +++ b/lib/mv_web/live_user_auth.ex @@ -34,8 +34,10 @@ defmodule MvWeb.LiveUserAuth do case socket.assigns do %{current_user: %{} = user} -> {:cont, assign(socket, :current_user, user)} + _ -> - {:halt, Phoenix.LiveView.redirect(socket, to: ~p"/sign-in")} + socket = Phoenix.LiveView.redirect(socket, to: ~p"/sign-in") + {:halt, socket} end end diff --git a/test/mv_web/components/layouts/navbar_test.exs b/test/mv_web/components/layouts/navbar_test.exs index 25cfe78..b6fa556 100644 --- a/test/mv_web/components/layouts/navbar_test.exs +++ b/test/mv_web/components/layouts/navbar_test.exs @@ -7,9 +7,10 @@ defmodule MvWeb.Layouts.NavbarTest do # Setup: Create a user user = create_test_user(%{email: "test@example.com"}) - html = render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ - current_user: user - }) + html = + render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ + current_user: user + }) # Test dropdown structure assert html =~ "dropdown-content" @@ -27,11 +28,13 @@ defmodule MvWeb.Layouts.NavbarTest do # Setup: Create a user with specific email for testing initials user = create_test_user(%{email: "test.user@example.com"}) - html = render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ - current_user: user - }) + html = + render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ + current_user: user + }) - assert html =~ "TU" # Initials from test.user@example.com + # Initials from test.user@example.com + assert html =~ "TU" end @tag :skip @@ -42,31 +45,36 @@ defmodule MvWeb.Layouts.NavbarTest do "sub" => "oidc_123", "preferred_username" => "oidc.user@example.com" } + oauth_tokens = %{ "access_token" => "test_token", "id_token" => "test_id_token" } - user = Mv.Accounts.User - |> Ash.Changeset.for_create(:register_with_rauthy, %{ - user_info: user_info, - oauth_tokens: oauth_tokens - }) - |> Ash.create!(domain: Mv.Accounts) + user = + Mv.Accounts.User + |> Ash.Changeset.for_create(:register_with_rauthy, %{ + user_info: user_info, + oauth_tokens: oauth_tokens + }) + |> Ash.create!(domain: Mv.Accounts) - html = render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ - current_user: user - }) + html = + render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ + current_user: user + }) - assert html =~ "OU" # Initials from oidc.user@example.com + # Initials from oidc.user@example.com + assert html =~ "OU" end test "includes all required navigation items", %{conn: _conn} do user = create_test_user(%{email: "test@example.com"}) - html = render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ - current_user: user - }) + html = + render_component(&MvWeb.Layouts.Navbar.navbar/1, %{ + current_user: user + }) # Check for all required menu items assert html =~ "Profil" diff --git a/test/mv_web/live/profile_navigation_test.exs b/test/mv_web/live/profile_navigation_test.exs index 8ec3b5f..b90c74b 100644 --- a/test/mv_web/live/profile_navigation_test.exs +++ b/test/mv_web/live/profile_navigation_test.exs @@ -66,7 +66,8 @@ defmodule MvWeb.ProfileNavigationTest do conn = conn_with_password_user(conn, user) {:ok, _view, html} = live(conn, "/") - assert html =~ "TU" # Initials from test.user@example.com + # Initials from test.user@example.com + assert html =~ "TU" end end @@ -77,17 +78,19 @@ defmodule MvWeb.ProfileNavigationTest do "sub" => "oidc_123", "preferred_username" => "oidc.user@example.com" } + oauth_tokens = %{ "access_token" => "test_token", "id_token" => "test_id_token" } - user = Mv.Accounts.User - |> Ash.Changeset.for_create(:register_with_rauthy, %{ - user_info: user_info, - oauth_tokens: oauth_tokens - }) - |> Ash.create!(domain: Mv.Accounts) + user = + Mv.Accounts.User + |> Ash.Changeset.for_create(:register_with_rauthy, %{ + user_info: user_info, + oauth_tokens: oauth_tokens + }) + |> Ash.create!(domain: Mv.Accounts) # Login user via OIDC conn = sign_in_user_via_oidc(conn, user) @@ -99,32 +102,38 @@ 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 =~ to_string(user.email) - assert html =~ "oidc_123" # OIDC ID should be visible - assert html =~ "Not enabled" # Password auth should be disabled for OIDC users + # OIDC ID should be visible + assert html =~ "oidc_123" + # Password auth should be disabled for OIDC users + assert html =~ "Not enabled" end test "profile navigation works across different authentication methods", %{conn: conn} do # Create password user - password_user = create_test_user(%{ - email: "password2@example.com", - password: "test_password123" - }) + password_user = + create_test_user(%{ + email: "password2@example.com", + password: "test_password123" + }) # Create OIDC user user_info = %{ "sub" => "oidc_789", "preferred_username" => "oidc@example.com" } + oauth_tokens = %{ "access_token" => "test_token", "id_token" => "test_id_token" } - oidc_user = Mv.Accounts.User - |> Ash.Changeset.for_create(:register_with_rauthy, %{ - user_info: user_info, - oauth_tokens: oauth_tokens - }) - |> Ash.create!(domain: Mv.Accounts) + + oidc_user = + Mv.Accounts.User + |> Ash.Changeset.for_create(:register_with_rauthy, %{ + user_info: user_info, + oauth_tokens: oauth_tokens + }) + |> Ash.create!(domain: Mv.Accounts) # Test with password user conn_password = conn_with_password_user(conn, password_user) @@ -139,5 +148,4 @@ defmodule MvWeb.ProfileNavigationTest do assert_redirected(view_oidc, "/users/#{oidc_user.id}") end end - end diff --git a/test/mv_web/user_live/index_test.exs b/test/mv_web/user_live/index_test.exs index af217e3..bb78377 100644 --- a/test/mv_web/user_live/index_test.exs +++ b/test/mv_web/user_live/index_test.exs @@ -388,7 +388,8 @@ defmodule MvWeb.UserLive.IndexTest do assert html =~ "Email" assert html =~ "OIDC ID" # Should show the authenticated user at minimum - assert html =~ "oidc.user" # Matches the generated email pattern oidc.user{unique_id}@example.com + # Matches the generated email pattern oidc.user{unique_id}@example.com + assert html =~ "oidc.user" end test "handles users with missing OIDC ID", %{conn: conn} do diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index d4263d5..0ee2364 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -103,6 +103,7 @@ defmodule MvWeb.ConnCase do 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}"