[tests] Mock :crypt.crypt/2 function in AuthenticationPlugTest Closes #1114 See merge request pleroma/pleroma!1455tags/v1.1.4
@@ -8,6 +8,9 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do | |||||
alias Pleroma.Plugs.AuthenticationPlug | alias Pleroma.Plugs.AuthenticationPlug | ||||
alias Pleroma.User | alias Pleroma.User | ||||
import ExUnit.CaptureLog | |||||
import Mock | |||||
setup %{conn: conn} do | setup %{conn: conn} do | ||||
user = %User{ | user = %User{ | ||||
id: 1, | id: 1, | ||||
@@ -68,15 +71,18 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do | |||||
hash = | hash = | ||||
"$6$9psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" | "$6$9psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" | ||||
assert AuthenticationPlug.checkpw("password", hash) | |||||
refute AuthenticationPlug.checkpw("password1", hash) | |||||
with_mock :crypt, crypt: fn _password, password_hash -> password_hash end do | |||||
assert AuthenticationPlug.checkpw("password", hash) | |||||
end | |||||
end | end | ||||
test "it returns false when hash invalid" do | test "it returns false when hash invalid" do | ||||
hash = | hash = | ||||
"psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" | "psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" | ||||
refute Pleroma.Plugs.AuthenticationPlug.checkpw("password", hash) | |||||
assert capture_log(fn -> | |||||
refute Pleroma.Plugs.AuthenticationPlug.checkpw("password", hash) | |||||
end) =~ "[error] Password hash not recognized" | |||||
end | end | ||||
end | end | ||||
end | end |
@@ -5,6 +5,7 @@ | |||||
defmodule Pleroma.SignatureTest do | defmodule Pleroma.SignatureTest do | ||||
use Pleroma.DataCase | use Pleroma.DataCase | ||||
import ExUnit.CaptureLog | |||||
import Pleroma.Factory | import Pleroma.Factory | ||||
import Tesla.Mock | import Tesla.Mock | ||||
@@ -46,8 +47,10 @@ defmodule Pleroma.SignatureTest do | |||||
end | end | ||||
test "it returns error when not found user" do | test "it returns error when not found user" do | ||||
assert Signature.fetch_public_key(make_fake_conn("test-ap_id")) == | |||||
{:error, :error} | |||||
assert capture_log(fn -> | |||||
assert Signature.fetch_public_key(make_fake_conn("test-ap_id")) == | |||||
{:error, :error} | |||||
end) =~ "[error] Could not decode user" | |||||
end | end | ||||
test "it returns error if public key is empty" do | test "it returns error if public key is empty" do | ||||
@@ -67,8 +70,10 @@ defmodule Pleroma.SignatureTest do | |||||
end | end | ||||
test "it returns error when not found user" do | test "it returns error when not found user" do | ||||
assert Signature.refetch_public_key(make_fake_conn("test-ap_id")) == | |||||
{:error, {:error, :ok}} | |||||
assert capture_log(fn -> | |||||
assert Signature.refetch_public_key(make_fake_conn("test-ap_id")) == | |||||
{:error, {:error, :ok}} | |||||
end) =~ "[error] Could not decode user" | |||||
end | end | ||||
end | end | ||||
@@ -5,6 +5,8 @@ | |||||
defmodule Pleroma.UploadTest do | defmodule Pleroma.UploadTest do | ||||
use Pleroma.DataCase | use Pleroma.DataCase | ||||
import ExUnit.CaptureLog | |||||
alias Pleroma.Upload | alias Pleroma.Upload | ||||
alias Pleroma.Uploaders.Uploader | alias Pleroma.Uploaders.Uploader | ||||
@@ -77,8 +79,12 @@ defmodule Pleroma.UploadTest do | |||||
test "it returns error" do | test "it returns error" do | ||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") | File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") | ||||
assert Upload.store(@upload_file) == {:error, "Errors"} | |||||
Task.await(Agent.get(TestUploaderError, fn task_pid -> task_pid end)) | |||||
assert capture_log(fn -> | |||||
assert Upload.store(@upload_file) == {:error, "Errors"} | |||||
Task.await(Agent.get(TestUploaderError, fn task_pid -> task_pid end)) | |||||
end) =~ | |||||
"[error] Elixir.Pleroma.Upload store (using Pleroma.UploadTest.TestUploaderError) failed: \"Errors\"" | |||||
end | end | ||||
end | end | ||||
@@ -89,7 +95,11 @@ defmodule Pleroma.UploadTest do | |||||
test "it returns error" do | test "it returns error" do | ||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") | File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") | ||||
assert Upload.store(@upload_file) == {:error, "Uploader callback timeout"} | |||||
assert capture_log(fn -> | |||||
assert Upload.store(@upload_file) == {:error, "Uploader callback timeout"} | |||||
end) =~ | |||||
"[error] Elixir.Pleroma.Upload store (using Pleroma.UploadTest.TestUploader) failed: \"Uploader callback timeout\"" | |||||
end | end | ||||
end | end | ||||
@@ -24,12 +24,16 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do | |||||
{Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, | {Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, | ||||
{Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]} | {Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]} | ||||
] do | ] do | ||||
conn = get(conn, "/api/v2/search", %{"q" => "2hu"}) | |||||
assert results = json_response(conn, 200) | |||||
assert results["accounts"] == [] | |||||
assert results["statuses"] == [] | |||||
capture_log(fn -> | |||||
results = | |||||
conn | |||||
|> get("/api/v2/search", %{"q" => "2hu"}) | |||||
|> json_response(200) | |||||
assert results["accounts"] == [] | |||||
assert results["statuses"] == [] | |||||
end) =~ | |||||
"[error] Elixir.Pleroma.Web.MastodonAPI.SearchController search error: %RuntimeError{message: \"Oops\"}" | |||||
end | end | ||||
end | end | ||||
@@ -99,14 +103,16 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do | |||||
{Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, | {Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]}, | ||||
{Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]} | {Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]} | ||||
] do | ] do | ||||
conn = | |||||
conn | |||||
|> get("/api/v1/search", %{"q" => "2hu"}) | |||||
assert results = json_response(conn, 200) | |||||
assert results["accounts"] == [] | |||||
assert results["statuses"] == [] | |||||
capture_log(fn -> | |||||
results = | |||||
conn | |||||
|> get("/api/v1/search", %{"q" => "2hu"}) | |||||
|> json_response(200) | |||||
assert results["accounts"] == [] | |||||
assert results["statuses"] == [] | |||||
end) =~ | |||||
"[error] Elixir.Pleroma.Web.MastodonAPI.SearchController search error: %RuntimeError{message: \"Oops\"}" | |||||
end | end | ||||
end | end | ||||
@@ -4,7 +4,10 @@ | |||||
defmodule Pleroma.Web.OStatus.OStatusControllerTest do | defmodule Pleroma.Web.OStatus.OStatusControllerTest do | ||||
use Pleroma.Web.ConnCase | use Pleroma.Web.ConnCase | ||||
import ExUnit.CaptureLog | |||||
import Pleroma.Factory | import Pleroma.Factory | ||||
alias Pleroma.Object | alias Pleroma.Object | ||||
alias Pleroma.User | alias Pleroma.User | ||||
alias Pleroma.Web.CommonAPI | alias Pleroma.Web.CommonAPI | ||||
@@ -27,24 +30,28 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do | |||||
user = insert(:user) | user = insert(:user) | ||||
salmon = File.read!("test/fixtures/salmon.xml") | salmon = File.read!("test/fixtures/salmon.xml") | ||||
conn = | |||||
conn | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert capture_log(fn -> | |||||
conn = | |||||
conn | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert response(conn, 200) | |||||
assert response(conn, 200) | |||||
end) =~ "[error]" | |||||
end | end | ||||
test "decodes a salmon with a changed magic key", %{conn: conn} do | test "decodes a salmon with a changed magic key", %{conn: conn} do | ||||
user = insert(:user) | user = insert(:user) | ||||
salmon = File.read!("test/fixtures/salmon.xml") | salmon = File.read!("test/fixtures/salmon.xml") | ||||
conn = | |||||
conn | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert capture_log(fn -> | |||||
conn = | |||||
conn | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert response(conn, 200) | |||||
assert response(conn, 200) | |||||
end) =~ "[error]" | |||||
# Set a wrong magic-key for a user so it has to refetch | # Set a wrong magic-key for a user so it has to refetch | ||||
salmon_user = User.get_cached_by_ap_id("http://gs.example.org:4040/index.php/user/1") | salmon_user = User.get_cached_by_ap_id("http://gs.example.org:4040/index.php/user/1") | ||||
@@ -61,12 +68,14 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do | |||||
|> Ecto.Changeset.put_embed(:info, info_cng) | |> Ecto.Changeset.put_embed(:info, info_cng) | ||||
|> User.update_and_set_cache() | |> User.update_and_set_cache() | ||||
conn = | |||||
build_conn() | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert capture_log(fn -> | |||||
conn = | |||||
build_conn() | |||||
|> put_req_header("content-type", "application/atom+xml") | |||||
|> post("/users/#{user.nickname}/salmon", salmon) | |||||
assert response(conn, 200) | |||||
assert response(conn, 200) | |||||
end) =~ "[error]" | |||||
end | end | ||||
end | end | ||||