ITM007

ITM007

Phoenix Gen Auth Error on NixOS

Phoenix 1.7

I am new to elixir and am working through the Elixir Phoenix Docs, while following this https://hexdocs.pm/phoenix/mix_phx_gen_auth.html. But I am getting an error when running the tests once the auth is generated. This is done with postgres, I get the same error when using sqlite.

Steps to reproduce:

  • Create new phx project
  • Install dependencies and create database
  • mix test (5 or 5 test pass)
  • mix phx.gen.auth Accounts User users
  • mix deps.get
  • mix ecto.setup
  • mix test (30 tests fail of 128)

Error:

 29) test update email form renders errors with invalid data (phx-change) (MyprojectWeb.UserSettingsLiveTest)
     test/myproject_web/live/user_settings_live_test.exs:52
     ** (KeyError) key :name not found in: %{
       __changed__: nil,
       __given__: %{
         __changed__: nil,
         field: %Phoenix.HTML.FormField{
           id: "user_email",
           name: "user[email]",
           errors: [],
           field: :email,
           form: %Phoenix.HTML.Form{
             source: #Ecto.Changeset<
               action: nil,
               changes: %{},
               errors: [email: {"did not change", []}],
               data: #Myproject.Accounts.User<>,
               valid?: false
             >,
             impl: Phoenix.HTML.FormData.Ecto.Changeset,
             id: "user",
             name: "user",
             data: #Myproject.Accounts.User<
               __meta__: #Ecto.Schema.Metadata<:loaded, "users">,
               id: 58,
               email: "user-576460752303416959@example.com",
               confirmed_at: nil,
               inserted_at: ~N[2024-05-05 18:24:05],
               updated_at: ~N[2024-05-05 18:24:05],
               ...
             >,
             hidden: [id: 58],
             params: %{},
             errors: [],
             options: [method: "put"],
             index: nil,
             action: nil
           },
           value: "user-576460752303416959@example.com"
         },
         label: "Email",
         type: "email"
       },
       field: %Phoenix.HTML.FormField{
         id: "user_email",
         name: "user[email]",
         errors: [],
         field: :email,
         form: %Phoenix.HTML.Form{
           source: #Ecto.Changeset<
             action: nil,
             changes: %{},
             errors: [email: {"did not change", []}],
             data: #Myproject.Accounts.User<>,
             valid?: false
           >,
           impl: Phoenix.HTML.FormData.Ecto.Changeset,
           id: "user",
           name: "user",
           data: #Myproject.Accounts.User<
             __meta__: #Ecto.Schema.Metadata<:loaded, "users">,
             id: 58,
             email: "user-576460752303416959@example.com",
             confirmed_at: nil,
             inserted_at: ~N[2024-05-05 18:24:05],
             updated_at: ~N[2024-05-05 18:24:05],
             ...
           >,
           hidden: [id: 58],
           params: %{},
           errors: [],
           options: [method: "put"],
           index: nil,
           action: nil
         },
         value: "user-576460752303416959@example.com"
       },
       inner_block: [],
       label: "Email",
       multiple: false,
       prompt: nil,
       rest: %{required: true},
       type: "email"
     }
     stacktrace:
       (myproject 0.1.0) lib/myproject_web/components/core_components.ex:350: anonymous fn/2 in MyprojectWeb.CoreComponents."input (overridable 1)"/1
       (myproject 0.1.0) /home/itm/Code/myproject/lib/myproject_web/live/user_settings_live.ex:21: MyprojectWeb.UserSettingsLive.render/1
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3



 30) test update email form renders errors with invalid data (phx-submit) (MyprojectWeb.UserSettingsLiveTest)
     test/myproject_web/live/user_settings_live_test.exs:68
     ** (KeyError) key :name not found in: %{
       __changed__: nil,
       __given__: %{
         __changed__: nil,
         field: %Phoenix.HTML.FormField{
           id: "user_email",
           name: "user[email]",
           errors: [],
           field: :email,
           form: %Phoenix.HTML.Form{
             source: #Ecto.Changeset<
               action: nil,
               changes: %{},
               errors: [email: {"did not change", []}],
               data: #Myproject.Accounts.User<>,
               valid?: false
             >,
             impl: Phoenix.HTML.FormData.Ecto.Changeset,
             id: "user",
             name: "user",
             data: #Myproject.Accounts.User<
               __meta__: #Ecto.Schema.Metadata<:loaded, "users">,
               id: 59,
               email: "user-576460752303418878@example.com",
               confirmed_at: nil,
               inserted_at: ~N[2024-05-05 18:24:05],
               updated_at: ~N[2024-05-05 18:24:05],
               ...
             >,
             hidden: [id: 59],
             params: %{},
             errors: [],
             options: [method: "put"],
             index: nil,
             action: nil
           },
           value: "user-576460752303418878@example.com"
         },
         label: "Email",
         type: "email"
       },
       field: %Phoenix.HTML.FormField{
         id: "user_email",
         name: "user[email]",
         errors: [],
         field: :email,
         form: %Phoenix.HTML.Form{
           source: #Ecto.Changeset<
             action: nil,
             changes: %{},
             errors: [email: {"did not change", []}],
             data: #Myproject.Accounts.User<>,
             valid?: false
           >,
           impl: Phoenix.HTML.FormData.Ecto.Changeset,
           id: "user",
           name: "user",
           data: #Myproject.Accounts.User<
             __meta__: #Ecto.Schema.Metadata<:loaded, "users">,
             id: 59,
             email: "user-576460752303418878@example.com",
             confirmed_at: nil,
             inserted_at: ~N[2024-05-05 18:24:05],
             updated_at: ~N[2024-05-05 18:24:05],
             ...
           >,
           hidden: [id: 59],
           params: %{},
           errors: [],
           options: [method: "put"],
           index: nil,
           action: nil
         },
         value: "user-576460752303418878@example.com"
       },
       inner_block: [],
       label: "Email",
       multiple: false,
       prompt: nil,
       rest: %{required: true},
       type: "email"
     }
     stacktrace:
       (myproject 0.1.0) lib/myproject_web/components/core_components.ex:350: anonymous fn/2 in MyprojectWeb.CoreComponents."input (overridable 1)"/1
       (myproject 0.1.0) /home/itm/Code/myproject/lib/myproject_web/live/user_settings_live.ex:21: MyprojectWeb.UserSettingsLive.render/1
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:396: Phoenix.LiveView.Diff.traverse/7
       (phoenix_live_view 0.18.18) lib/phoenix_live_view/diff.ex:544: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
       (elixir 1.16.2) lib/enum.ex:2528: Enum."-reduce/3-lists^foldl/2-0-"/3

.......................................................
Finished in 0.7 seconds (0.5s async, 0.2s sync)
128 tests, 30 failures

Randomized with seed 825518

Dependencies:

 defp deps do
   25    ╎ [
   24    ╎ ╎ {:bcrypt_elixir, "~> 3.0"},
   23    ╎ ╎ {:phoenix, "~> 1.7.0-rc.1", override: true},
   22    ╎ ╎ {:phoenix_ecto, "~> 4.4"},
   21    ╎ ╎ {:ecto_sql, "~> 3.6"},
   20    ╎ ╎ {:postgrex, ">= 0.0.0"},
   19    ╎ ╎ {:phoenix_html, "~> 3.0"},
   18    ╎ ╎ {:phoenix_live_reload, "~> 1.2", only: :dev},
   17    ╎ ╎ {:phoenix_live_view, "~> 0.18.3"},
   16    ╎ ╎ {:heroicons, "~> 0.5"},
   15    ╎ ╎ {:floki, ">= 0.30.0", only: :test},
   14    ╎ ╎ {:phoenix_live_dashboard, "~> 0.7.2"},
   13    ╎ ╎ {:esbuild, "~> 0.5", runtime: Mix.env() == :dev},
   12    ╎ ╎ {:tailwind, "~> 0.1.8", runtime: Mix.env() == :dev},
   11    ╎ ╎ {:swoosh, "~> 1.3"},
   10    ╎ ╎ {:finch, "~> 0.13"},
    9    ╎ ╎ {:telemetry_metrics, "~> 0.6"},
    8    ╎ ╎ {:telemetry_poller, "~> 1.0"},
    7    ╎ ╎ {:gettext, "~> 0.20"},
    6    ╎ ╎ {:jason, "~> 1.2"},
    5    ╎ ╎ {:plug_cowboy, "~> 2.5"}
    4    ╎ ]
    3    end

I am using NixOS, so I am guessing I am missing a dependency. Or maybe I may just not be following the documentation correctly? Any help would be appreciated.

Thanks! :smiley:

Marked As Solved

josevalim

josevalim

Creator of Elixir

In particular, make sure to run mix archive.install hex phx_new to get the latest.

Also Liked

al2o3cr

al2o3cr

Make 100% sure that the various pieces of Phoenix are on the correct version.

The error you’re seeing is what I’d expect if an old core_components.ex was being used with a too-new version of phx.gen.auth:

See also previous discussion: KeyError at GET /users/register key :name not found in: %{ - #7 by experimentix

Last Post!

ITM007

ITM007

Thank you, this command upgraded phoenix and solved the problem.

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a &gt; b) do {:ok, "a"} end if (a &lt; b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 55125 245
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 42716 114
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New

We're in Beta

About us Mission Statement