diff --git a/test/plug/static_test.exs b/test/plug/static_test.exs index ce89a145..b8fe369c 100644 --- a/test/plug/static_test.exs +++ b/test/plug/static_test.exs @@ -313,6 +313,29 @@ defmodule Plug.StaticTest do assert get_resp_header(conn, "vary") == ["Accept-Encoding"] end + test "call/2 serves files from the app directory using a :from with an application name and directory" do + app_dir = Application.app_dir(:plug) + fixture = Path.join(app_dir, "tmp.txt") + + try do + :ok = File.write!(fixture, "ABCD") + + opts = [ + at: "priv/static", + from: {:plug, "."} + ] + + conn = + conn(:get, "/priv/static/tmp.txt") + |> call(opts) + + assert conn.status == 200 + assert conn.resp_body == "ABCD" + after + :ok = File.rm!(fixture) + end + end + test "raises an exception if :from isn't a binary or an atom" do assert_raise ArgumentError, fn -> defmodule ExceptionPlug do @@ -843,4 +866,16 @@ defmodule Plug.StaticTest do assert conn.status == 200 end + + test "init/1 preserves a two-tuple :from with an application name and directory" do + assert %{from: {:foo, "foo/bar/foobar"}} = + Plug.Static.init( + at: "/", + from: {:foo, "foo/bar/foobar"} + ) + end + + test "init/1 transforms an application name :from to a two-tuple :from with the application name and a directory" do + assert %{from: {:foo, "priv/static"}} = Plug.Static.init(at: "/", from: :foo) + end end