Browse Source

Merge branch 'tests/mock-sha512-crypt' into 'develop'

[tests] Mock :crypt.crypt/2 function in AuthenticationPlugTest

Closes #1114

See merge request pleroma/pleroma!1455
tags/v1.1.4
kaniini 5 years ago
parent
commit
6e99e7c774
5 changed files with 75 additions and 39 deletions
  1. +9
    -3
      test/plugs/authentication_plug_test.exs
  2. +9
    -4
      test/signature_test.exs
  3. +13
    -3
      test/upload_test.exs
  4. +20
    -14
      test/web/mastodon_api/search_controller_test.exs
  5. +24
    -15
      test/web/ostatus/ostatus_controller_test.exs

+ 9
- 3
test/plugs/authentication_plug_test.exs View File

@@ -8,6 +8,9 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do
alias Pleroma.Plugs.AuthenticationPlug
alias Pleroma.User

import ExUnit.CaptureLog
import Mock

setup %{conn: conn} do
user = %User{
id: 1,
@@ -68,15 +71,18 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do
hash =
"$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

test "it returns false when hash invalid" do
hash =
"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

+ 9
- 4
test/signature_test.exs View File

@@ -5,6 +5,7 @@
defmodule Pleroma.SignatureTest do
use Pleroma.DataCase

import ExUnit.CaptureLog
import Pleroma.Factory
import Tesla.Mock

@@ -46,8 +47,10 @@ defmodule Pleroma.SignatureTest do
end

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

test "it returns error if public key is empty" do
@@ -67,8 +70,10 @@ defmodule Pleroma.SignatureTest do
end

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



+ 13
- 3
test/upload_test.exs View File

@@ -5,6 +5,8 @@
defmodule Pleroma.UploadTest do
use Pleroma.DataCase

import ExUnit.CaptureLog

alias Pleroma.Upload
alias Pleroma.Uploaders.Uploader

@@ -77,8 +79,12 @@ defmodule Pleroma.UploadTest do

test "it returns error" do
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

@@ -89,7 +95,11 @@ defmodule Pleroma.UploadTest do

test "it returns error" do
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



+ 20
- 14
test/web/mastodon_api/search_controller_test.exs View File

@@ -24,12 +24,16 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do
{Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]},
{Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]}
] 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

@@ -99,14 +103,16 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do
{Pleroma.User, [], [search: fn _q, _o -> raise "Oops" end]},
{Pleroma.Activity, [], [search: fn _u, _q, _o -> raise "Oops" end]}
] 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



+ 24
- 15
test/web/ostatus/ostatus_controller_test.exs View File

@@ -4,7 +4,10 @@

defmodule Pleroma.Web.OStatus.OStatusControllerTest do
use Pleroma.Web.ConnCase

import ExUnit.CaptureLog
import Pleroma.Factory

alias Pleroma.Object
alias Pleroma.User
alias Pleroma.Web.CommonAPI
@@ -27,24 +30,28 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
user = insert(:user)
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

test "decodes a salmon with a changed magic key", %{conn: conn} do
user = insert(:user)
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
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)
|> 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



Loading…
Cancel
Save