Merge branch 'feature/user_deletion' into develop
This commit is contained in:
commit
d5a13c10ac
9 changed files with 175 additions and 26 deletions
|
|
@ -14,6 +14,13 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do
|
|||
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",
|
||||
|
|
@ -131,6 +138,26 @@ defmodule Pleroma.Plugs.AuthenticationPlugTest do
|
|||
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 = %{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
defmodule Pleroma.UserTest do
|
||||
alias Pleroma.Builders.UserBuilder
|
||||
alias Pleroma.{User, Repo}
|
||||
alias Pleroma.{User, Repo, Activity}
|
||||
alias Pleroma.Web.OStatus
|
||||
alias Pleroma.Web.Websub.WebsubClientSubscription
|
||||
alias Pleroma.Web.CommonAPI
|
||||
|
|
@ -39,6 +39,13 @@ defmodule Pleroma.UserTest do
|
|||
assert User.ap_followers(followed) in user.following
|
||||
end
|
||||
|
||||
test "can't follow a deactivated users" do
|
||||
user = insert(:user)
|
||||
followed = insert(:user, info: %{"deactivated" => true})
|
||||
|
||||
{:error, _} = User.follow(user, followed)
|
||||
end
|
||||
|
||||
test "following a remote user will ensure a websub subscription is present" do
|
||||
user = insert(:user)
|
||||
{:ok, followed} = OStatus.make_user("shp@social.heldscal.la")
|
||||
|
|
@ -325,5 +332,42 @@ defmodule Pleroma.UserTest do
|
|||
assert user in recipients
|
||||
assert addressed in recipients
|
||||
end
|
||||
end
|
||||
|
||||
test ".deactivate deactivates a user" do
|
||||
user = insert(:user)
|
||||
assert false == !!user.info["deactivated"]
|
||||
{:ok, user} = User.deactivate(user)
|
||||
assert true == user.info["deactivated"]
|
||||
end
|
||||
|
||||
test ".delete deactivates a user, all follow relationships and all create activities" do
|
||||
user = insert(:user)
|
||||
followed = insert(:user)
|
||||
follower = insert(:user)
|
||||
|
||||
{:ok, user} = User.follow(user, followed)
|
||||
{:ok, follower} = User.follow(follower, user)
|
||||
|
||||
{:ok, activity} = CommonAPI.post(user, %{"status" => "2hu"})
|
||||
{:ok, activity_two} = CommonAPI.post(follower, %{"status" => "3hu"})
|
||||
|
||||
{:ok, _, _} = CommonAPI.favorite(activity_two.id, user)
|
||||
{:ok, _, _} = CommonAPI.favorite(activity.id, follower)
|
||||
{:ok, _, _} = CommonAPI.repeat(activity.id, follower)
|
||||
|
||||
:ok = User.delete(user)
|
||||
|
||||
followed = Repo.get(User, followed.id)
|
||||
follower = Repo.get(User, follower.id)
|
||||
user = Repo.get(User, user.id)
|
||||
|
||||
assert user.info["deactivated"]
|
||||
|
||||
refute User.following?(user, followed)
|
||||
refute User.following?(followed, follower)
|
||||
|
||||
# TODO: Remove favorites, repeats, delete activities.
|
||||
|
||||
refute Repo.get(Activity, activity.id)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
20
test/web/federator_test.exs
Normal file
20
test/web/federator_test.exs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
defmodule Pleroma.Web.FederatorTest do
|
||||
alias Pleroma.Web.Federator
|
||||
use Pleroma.DataCase
|
||||
|
||||
test "enqueues an element according to priority" do
|
||||
queue = [%{item: 1, priority: 2}]
|
||||
|
||||
new_queue = Federator.enqueue_sorted(queue, 2, 1)
|
||||
assert new_queue == [%{item: 2, priority: 1}, %{item: 1, priority: 2}]
|
||||
|
||||
new_queue = Federator.enqueue_sorted(queue, 2, 3)
|
||||
assert new_queue == [%{item: 1, priority: 2}, %{item: 2, priority: 3}]
|
||||
end
|
||||
|
||||
test "pop first item" do
|
||||
queue = [%{item: 2, priority: 1}, %{item: 1, priority: 2}]
|
||||
|
||||
assert {2, [%{item: 1, priority: 2}]} = Federator.queue_pop(queue)
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue