Somebody25

Somebody25

ConnCase tests with different root path verified-routes warnings

Hello!

I have created an api application with phoenix 1.7.2 . I have to change the root path for the application because it is located behind a reverse proxy. To achieve this I made the following changes:
In the config.exs I change the Endpoint configuration by adding the path

config :my_app, MyAppWeb.Endpoint,
  url: [host: "localhost", path: "/v2"]

Then I configure static resources by changing the plug in endpoint.ex

plug Plug.Static,
  at: "/v2",
  from: :my_app,
  gzip: false,
  only: MyAppWeb.static_paths()

(Even though it is a api webservice, it has a static page if you access it in a browser)

Finally I added a scope to the router.ex

scope "/v2" do
    scope "/", MyAppWeb do
      pipe_through :browser

      get "/", PageController, :home
    end

    scope "/api", MyAppWeb do
      pipe_through :api

      post "/stuff", StuffController, :post
      get "/stuff", StuffController, :get
    end
  end

This works but when I try to write tests for this configuration, I get lots of verified-routes warning. My issues is, when I use the route like ~p"/api/stuff" the tests execute successfully but produce warnings link warning: no route path for MyApp.Router matches "/api/stuff". When I change the url to incorporate the different root ~p"/v2/api/stuff", the warning is gone but it doesn’t work anymore because the p sigil is resolved to /v2/v2/license/activate.

I’m sure I am just missing some configuration somewhere but I cant figure out where.

Thanks for your help!

Marked As Solved

Somebody25

Somebody25

I fixed the issue by overriding the :path attribute of the Endpoint with "/" in the test configuration. The subpath has to be included in the sigil then ~p"/v2/api/stuff".

config :my_app, MyAppWeb.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 4002],
  url: [path: "/"],

Thanks to: ConnCase tests with different root path verified-routes warnings · Issue #5476 · phoenixframework/phoenix · GitHub

Also Liked

sodapopcan

sodapopcan

If it is a bug, can you manually manipulate %Conn{} for now to set whatever :at sets? I do a similar thing when testing subdomain routes:

  def admin_live(%{conn: conn}) do
    conn = %{conn | host: "admin.myapp.local"}

    %{conn: conn}
  end

  # ...

  setup :admin_live

Where Next?

Popular in Questions Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
Kurisu
For example for a current url like http://localhost:4000/cosmetic/products?_utf8=✓&query=perfume&page=2, I would like to get: ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
nobody
How to bind a phoenix app to a specific ip address? could not find anything about that, nowhere, unfortunately, but for me this is quite...
New
earth10
Hi, I’m just starting to build a side-project with Elixir and Phoenix and doing some basic test with Elixir alone. What strikes me is th...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
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
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New

Other popular topics Top

mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
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 53690 245
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

We're in Beta

About us Mission Statement