password_hash: Comeonin.Pbkdf2.hashpwsalt("guy")
}
+ @deactivated %User{
+ id: 1,
+ name: "dude",
+ password_hash: Comeonin.Pbkdf2.hashpwsalt("guy"),
+ info: %{"deactivated" => true}
+ }
+
@session_opts [
store: :cookie,
key: "_test",
describe "without an authorization header" do
test "it halts the application" do
- conn = build_conn()
- |> Plug.Session.call(Plug.Session.init(@session_opts))
- |> fetch_session
- |> AuthenticationPlug.call(%{})
+ conn =
+ build_conn()
+ |> Plug.Session.call(Plug.Session.init(@session_opts))
+ |> fetch_session
+ |> AuthenticationPlug.call(%{})
assert conn.status == 403
assert conn.halted == true
end
test "it assigns a nil user if the 'optional' option is used" do
- conn = build_conn()
- |> Plug.Session.call(Plug.Session.init(@session_opts))
- |> fetch_session
- |> AuthenticationPlug.call(%{optional: true})
+ conn =
+ build_conn()
+ |> Plug.Session.call(Plug.Session.init(@session_opts))
+ |> fetch_session
+ |> AuthenticationPlug.call(%{optional: true})
- assert %{ user: nil } == conn.assigns
+ assert %{user: nil} == conn.assigns
end
end
build_conn()
|> Plug.Session.call(Plug.Session.init(@session_opts))
|> fetch_session
- |> AuthenticationPlug.call(%{optional: true, fetcher: &fetch_nil/1 })
+ |> AuthenticationPlug.call(%{optional: true, fetcher: &fetch_nil/1})
- assert %{ user: nil } == conn.assigns
+ assert %{user: nil} == conn.assigns
end
end
|> put_req_header("authorization", header)
|> AuthenticationPlug.call(opts)
- assert %{ user: nil } == conn.assigns
+ assert %{user: nil} == conn.assigns
end
end
header = basic_auth_enc("dude", "guy")
- conn = conn
+ conn =
+ conn
|> Plug.Session.call(Plug.Session.init(@session_opts))
|> fetch_session
|> put_req_header("authorization", header)
|> AuthenticationPlug.call(opts)
- assert %{ user: @user } == conn.assigns
+ assert %{user: @user} == conn.assigns
assert get_session(conn, :user_id) == @user.id
assert conn.halted == false
end
end
+ describe "with a correct authorization header for an deactiviated user" do
+ test "it halts the appication", %{conn: conn} do
+ opts = %{
+ optional: false,
+ fetcher: fn _ -> @deactivated end
+ }
+
+ header = basic_auth_enc("dude", "guy")
+
+ conn =
+ conn
+ |> Plug.Session.call(Plug.Session.init(@session_opts))
+ |> fetch_session
+ |> put_req_header("authorization", header)
+ |> AuthenticationPlug.call(opts)
+
+ assert conn.status == 403
+ assert conn.halted == true
+ end
+ end
+
describe "with a user_id in the session for an existing user" do
test "it assigns the user", %{conn: conn} do
opts = %{
header = basic_auth_enc("dude", "THIS IS WRONG")
- conn = conn
+ conn =
+ conn
|> Plug.Session.call(Plug.Session.init(@session_opts))
|> fetch_session
|> put_session(:user_id, @user.id)
|> put_req_header("authorization", header)
|> AuthenticationPlug.call(opts)
- assert %{ user: @user } == conn.assigns
+ assert %{user: @user} == conn.assigns
assert get_session(conn, :user_id) == @user.id
assert conn.halted == false
end
describe "with an assigned user" do
test "it does nothing, returning the incoming conn", %{conn: conn} do
- conn = conn
- |> assign(:user, @user)
+ conn =
+ conn
+ |> assign(:user, @user)
conn_result = AuthenticationPlug.call(conn, %{})