Fix password reset for non-test env
Fixes `Plug.Conn.NotSentError` that causes a 5xx error in response
instead of 404 and 400.
Fixes pattern matching error caused by different response format
in test and non-test env: `Pleroma.Emails.Mailer.deliver_async` returns
:ok when PleromaJobQueue is enabled and `{:ok, _}` when it's disabled.
In tests, it's disabled.
			
			
This commit is contained in:
		
							parent
							
								
									ce73d5f6a5
								
							
						
					
					
						commit
						4bf2bb9cff
					
				
					 5 changed files with 10 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -1826,10 +1826,10 @@ def password_reset(conn, params) do
 | 
			
		|||
      |> json("")
 | 
			
		||||
    else
 | 
			
		||||
      {:error, "unknown user"} ->
 | 
			
		||||
        put_status(conn, :not_found)
 | 
			
		||||
        send_resp(conn, :not_found, "")
 | 
			
		||||
 | 
			
		||||
      {:error, _} ->
 | 
			
		||||
        put_status(conn, :bad_request)
 | 
			
		||||
        send_resp(conn, :bad_request, "")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -221,6 +221,8 @@ def password_reset(nickname_or_email) do
 | 
			
		|||
      user
 | 
			
		||||
      |> UserEmail.password_reset_email(token_record.token)
 | 
			
		||||
      |> Mailer.deliver_async()
 | 
			
		||||
 | 
			
		||||
      {:ok, :enqueued}
 | 
			
		||||
    else
 | 
			
		||||
      false ->
 | 
			
		||||
        {:error, "bad user identifier"}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -440,10 +440,10 @@ def password_reset(conn, params) do
 | 
			
		|||
      json_response(conn, :no_content, "")
 | 
			
		||||
    else
 | 
			
		||||
      {:error, "unknown user"} ->
 | 
			
		||||
        put_status(conn, :not_found)
 | 
			
		||||
        send_resp(conn, :not_found, "")
 | 
			
		||||
 | 
			
		||||
      {:error, _} ->
 | 
			
		||||
        put_status(conn, :bad_request)
 | 
			
		||||
        send_resp(conn, :bad_request, "")
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3849,14 +3849,14 @@ test "it sends an email to user", %{user: user} do
 | 
			
		|||
    test "it returns 404 when user is not found", %{conn: conn, user: user} do
 | 
			
		||||
      conn = post(conn, "/auth/password?email=nonexisting_#{user.email}")
 | 
			
		||||
      assert conn.status == 404
 | 
			
		||||
      refute conn.resp_body
 | 
			
		||||
      assert conn.resp_body == ""
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "it returns 400 when user is not local", %{conn: conn, user: user} do
 | 
			
		||||
      {:ok, user} = Repo.update(Changeset.change(user, local: false))
 | 
			
		||||
      conn = post(conn, "/auth/password?email=#{user.email}")
 | 
			
		||||
      assert conn.status == 400
 | 
			
		||||
      refute conn.resp_body
 | 
			
		||||
      assert conn.resp_body == ""
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1119,14 +1119,14 @@ test "it sends an email to user", %{user: user} do
 | 
			
		|||
    test "it returns 404 when user is not found", %{conn: conn, user: user} do
 | 
			
		||||
      conn = post(conn, "/api/account/password_reset?email=nonexisting_#{user.email}")
 | 
			
		||||
      assert conn.status == 404
 | 
			
		||||
      refute conn.resp_body
 | 
			
		||||
      assert conn.resp_body == ""
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "it returns 400 when user is not local", %{conn: conn, user: user} do
 | 
			
		||||
      {:ok, user} = Repo.update(Changeset.change(user, local: false))
 | 
			
		||||
      conn = post(conn, "/api/account/password_reset?email=#{user.email}")
 | 
			
		||||
      assert conn.status == 400
 | 
			
		||||
      refute conn.resp_body
 | 
			
		||||
      assert conn.resp_body == ""
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue