Improve Federation boundaries

This commit is contained in:
rustra
2020-01-23 21:59:50 +01:00
parent 8ca5c0b320
commit 3577fe42e1
67 changed files with 314 additions and 227 deletions

View File

@@ -14,6 +14,8 @@ defmodule Mobilizon.ActorsTest do
alias Mobilizon.Federation.ActivityPub
alias MobilizonWeb.Upload.Uploader
describe "actors" do
@valid_attrs %{
summary: "some description",
@@ -241,12 +243,12 @@ defmodule Mobilizon.ActorsTest do
%URI{path: "/media/" <> banner_path} = URI.parse(banner_url)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> avatar_path
)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> banner_path
)
@@ -271,12 +273,12 @@ defmodule Mobilizon.ActorsTest do
refute actor.suspended
refute File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> avatar_path
)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> banner_path
)
end
@@ -300,12 +302,12 @@ defmodule Mobilizon.ActorsTest do
%URI{path: "/media/" <> banner_path} = URI.parse(banner_url)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> avatar_path
)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> banner_path
)
@@ -334,12 +336,12 @@ defmodule Mobilizon.ActorsTest do
assert %Tombstone{} = Tombstone.find_tombstone(comment1_url)
refute File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> avatar_path
)
refute File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> banner_path
)
end

View File

@@ -6,8 +6,8 @@ defmodule Mobilizon.Service.Admin.ActionLogTest do
use Mobilizon.DataCase
import Mobilizon.Factory
import Mobilizon.Service.Admin.ActionLog
alias Mobilizon.Admin
alias Mobilizon.Admin.ActionLog
alias Mobilizon.Reports.{Note, Report}
@@ -27,7 +27,7 @@ defmodule Mobilizon.Service.Admin.ActionLogTest do
target_id: report_id,
action: :update,
actor: moderator
}} = log_action(moderator, "update", report)
}} = Admin.log_action(moderator, "update", report)
end
test "log the creation of a report note", %{moderator: moderator} do
@@ -40,7 +40,7 @@ defmodule Mobilizon.Service.Admin.ActionLogTest do
target_id: note_id,
action: :create,
actor: moderator
}} = log_action(moderator, "create", report)
}} = Admin.log_action(moderator, "create", report)
end
end
end

View File

@@ -5,6 +5,8 @@ defmodule Mobilizon.MediaTest do
alias Mobilizon.{Config, Media}
alias MobilizonWeb.Upload.Uploader
describe "media" do
setup [:ensure_local_uploader]
alias Mobilizon.Media.Picture
@@ -49,7 +51,7 @@ defmodule Mobilizon.MediaTest do
%URI{path: "/media/" <> path} = URI.parse(picture.file.url)
assert File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> path
)
@@ -57,7 +59,7 @@ defmodule Mobilizon.MediaTest do
assert_raise Ecto.NoResultsError, fn -> Media.get_picture!(picture.id) end
refute File.exists?(
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/" <> path
)
end

View File

@@ -3,10 +3,10 @@
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Mobilizon.Federation.Plug.FederatingTest do
defmodule MobilizonWeb.Plug.FederatingTest do
use MobilizonWeb.ConnCase
alias Mobilizon.Federation.Plugs.Federating
alias MobilizonWeb.Plugs.Federating
test "returns and halt the conn when federating is disabled" do
Mobilizon.Config.put([:instance, :federating], false)

View File

@@ -3,7 +3,7 @@
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Mobilizon.Federation.Plugs.MappedSignatureToIdentityTest do
defmodule MobilizonWeb.Plugs.MappedSignatureToIdentityTest do
use MobilizonWeb.ConnCase
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney

View File

@@ -158,7 +158,11 @@ defmodule MobilizonWeb.Resolvers.EventResolverTest do
assert json_response(res, 200)["data"]["createEvent"]["title"] == "come to my event"
{id, ""} = json_response(res, 200)["data"]["createEvent"]["id"] |> Integer.parse()
assert_enqueued(worker: Workers.BuildSearch, args: %{event_id: id, op: :insert_search_event})
assert_enqueued(
worker: Workers.BuildSearch,
args: %{event_id: id, op: :insert_search_event}
)
end
test "create_event/3 creates an event and escapes title and description", %{
@@ -204,7 +208,11 @@ defmodule MobilizonWeb.Resolvers.EventResolverTest do
"<b>My description</b> <img src=\"http://placekitten.com/g/200/300\" />"
{id, ""} = res["data"]["createEvent"]["id"] |> Integer.parse()
assert_enqueued(worker: Workers.BuildSearch, args: %{event_id: id, op: :insert_search_event})
assert_enqueued(
worker: Workers.BuildSearch,
args: %{event_id: id, op: :insert_search_event}
)
end
test "create_event/3 creates an event as a draft", %{conn: conn, actor: actor, user: user} do

View File

@@ -5,10 +5,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
use Bamboo.Test
alias Mobilizon.{Actors, Users}
alias Mobilizon.{Actors, Config, Users}
alias Mobilizon.Actors.Actor
alias Mobilizon.Service.Users.ResetPassword
alias Mobilizon.Users
alias Mobilizon.Users.User
alias MobilizonWeb.{AbsintheHelpers, Email}
@@ -321,8 +319,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
end
test "create_user/3 doesn't allow registration when registration is closed", %{conn: conn} do
Mobilizon.Config.put([:instance, :registrations_open], false)
Mobilizon.Config.put([:instance, :registration_email_whitelist], [])
Config.put([:instance, :registrations_open], false)
Config.put([:instance, :registration_email_whitelist], [])
mutation = """
mutation createUser($email: String!, $password: String!) {
@@ -344,14 +342,14 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
)
assert hd(res["errors"])["message"] == "Registrations are not enabled"
Mobilizon.Config.put([:instance, :registrations_open], true)
Config.put([:instance, :registrations_open], true)
end
test "create_user/3 doesn't allow registration when user email is not on the whitelist", %{
conn: conn
} do
Mobilizon.Config.put([:instance, :registrations_open], false)
Mobilizon.Config.put([:instance, :registration_email_whitelist], ["random.org"])
Config.put([:instance, :registrations_open], false)
Config.put([:instance, :registration_email_whitelist], ["random.org"])
mutation = """
mutation createUser($email: String!, $password: String!) {
@@ -373,15 +371,15 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
)
assert hd(res["errors"])["message"] == "Your email is not on the whitelist"
Mobilizon.Config.put([:instance, :registrations_open], true)
Mobilizon.Config.put([:instance, :registration_email_whitelist], [])
Config.put([:instance, :registrations_open], true)
Config.put([:instance, :registration_email_whitelist], [])
end
test "create_user/3 allows registration when user email domain is on the whitelist", %{
conn: conn
} do
Mobilizon.Config.put([:instance, :registrations_open], false)
Mobilizon.Config.put([:instance, :registration_email_whitelist], ["demo.tld"])
Config.put([:instance, :registrations_open], false)
Config.put([:instance, :registration_email_whitelist], ["demo.tld"])
mutation = """
mutation createUser($email: String!, $password: String!) {
@@ -404,13 +402,13 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
refute res["errors"]
assert res["data"]["createUser"]["email"] == @user_creation.email
Mobilizon.Config.put([:instance, :registrations_open], true)
Mobilizon.Config.put([:instance, :registration_email_whitelist], [])
Config.put([:instance, :registrations_open], true)
Config.put([:instance, :registration_email_whitelist], [])
end
test "create_user/3 allows registration when user email is on the whitelist", %{conn: conn} do
Mobilizon.Config.put([:instance, :registrations_open], false)
Mobilizon.Config.put([:instance, :registration_email_whitelist], [@user_creation.email])
Config.put([:instance, :registrations_open], false)
Config.put([:instance, :registration_email_whitelist], [@user_creation.email])
mutation = """
mutation createUser($email: String!, $password: String!) {
@@ -433,8 +431,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
refute res["errors"]
assert res["data"]["createUser"]["email"] == @user_creation.email
Mobilizon.Config.put([:instance, :registrations_open], true)
Mobilizon.Config.put([:instance, :registration_email_whitelist], [])
Config.put([:instance, :registrations_open], true)
Config.put([:instance, :registration_email_whitelist], [])
end
test "register_person/3 doesn't register a profile from an unknown email", context do
@@ -637,7 +635,7 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
"You requested again a confirmation email too soon"
# Hammer time !
Mobilizon.Users.update_user(user, %{
Users.update_user(user, %{
confirmation_sent_at: Timex.shift(user.confirmation_sent_at, hours: -3)
})
@@ -709,8 +707,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
test "test reset_password/3 with valid email", context do
{:ok, %User{} = user} = Users.register(%{email: "toto@tata.tld", password: "p4ssw0rd"})
%Actor{} = insert(:actor, user: user)
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
%User{reset_password_token: reset_password_token} = Mobilizon.Users.get_user!(user.id)
{:ok, _email_sent} = Email.User.send_password_reset_email(user)
%User{reset_password_token: reset_password_token} = Users.get_user!(user.id)
mutation = """
mutation {
@@ -734,8 +732,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
test "test reset_password/3 with a password too short", context do
%User{} = user = insert(:user)
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
%User{reset_password_token: reset_password_token} = Mobilizon.Users.get_user!(user.id)
{:ok, _email_sent} = Email.User.send_password_reset_email(user)
%User{reset_password_token: reset_password_token} = Users.get_user!(user.id)
mutation = """
mutation {
@@ -760,8 +758,8 @@ defmodule MobilizonWeb.Resolvers.UserResolverTest do
test "test reset_password/3 with an invalid token", context do
%User{} = user = insert(:user)
{:ok, _email_sent} = ResetPassword.send_password_reset_email(user)
%User{} = Mobilizon.Users.get_user!(user.id)
{:ok, _email_sent} = Email.User.send_password_reset_email(user)
%User{} = Users.get_user!(user.id)
mutation = """
mutation {

View File

@@ -9,6 +9,7 @@ defmodule Mobilizon.UploadTest do
alias Mobilizon.Config
alias MobilizonWeb.Upload
alias MobilizonWeb.Upload.Uploader
describe "Storing a file with the Local uploader" do
setup [:ensure_local_uploader]
@@ -184,7 +185,7 @@ defmodule Mobilizon.UploadTest do
test "delete a not existing file" do
file =
Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <>
Config.get!([Uploader.Local, :uploads]) <>
"/not_existing/definitely.jpg"
refute File.exists?(file)
@@ -214,6 +215,6 @@ defmodule Mobilizon.UploadTest do
assert String.starts_with?(url, MobilizonWeb.Endpoint.url() <> "/media/")
%URI{path: "/media/" <> path} = URI.parse(url)
{Config.get!([MobilizonWeb.Uploaders.Local, :uploads]) <> "/" <> path, url}
{Config.get!([Uploader.Local, :uploads]) <> "/" <> path, url}
end
end

View File

@@ -30,7 +30,7 @@ defmodule MobilizonWeb.ConnCase do
@endpoint MobilizonWeb.Endpoint
def auth_conn(%Plug.Conn{} = conn, %User{} = user) do
{:ok, token, _claims} = MobilizonWeb.Guardian.encode_and_sign(user)
{:ok, token, _claims} = MobilizonWeb.Auth.Guardian.encode_and_sign(user)
conn
|> Plug.Conn.put_req_header("authorization", "Bearer #{token}")

View File

@@ -19,6 +19,9 @@ defmodule Mobilizon.DataCase do
alias Mobilizon.Config
alias Mobilizon.Storage.Repo
alias MobilizonWeb.Upload
alias MobilizonWeb.Upload.Uploader
using do
quote do
alias Mobilizon.Storage.Repo
@@ -55,16 +58,16 @@ defmodule Mobilizon.DataCase do
end
def ensure_local_uploader(_context) do
uploader = Config.get([MobilizonWeb.Upload, :uploader])
filters = Config.get([MobilizonWeb.Upload, :filters])
uploader = Config.get([Upload, :uploader])
filters = Config.get([Upload, :filters])
unless uploader == MobilizonWeb.Uploaders.Local || filters != [] do
Config.put([MobilizonWeb.Upload, :uploader], MobilizonWeb.Uploaders.Local)
Config.put([MobilizonWeb.Upload, :filters], [])
unless uploader == Uploader.Local || filters != [] do
Config.put([Upload, :uploader], Uploader.Local)
Config.put([Upload, :filters], [])
on_exit(fn ->
Config.put([MobilizonWeb.Upload, :uploader], uploader)
Config.put([MobilizonWeb.Upload, :filters], filters)
Config.put([Upload, :uploader], uploader)
Config.put([Upload, :filters], filters)
end)
end

View File

@@ -1,10 +1,11 @@
defmodule Mix.Tasks.Mobilizon.UsersTest do
use Mobilizon.DataCase
import Mobilizon.Factory
alias Mobilizon.Users
alias Mobilizon.Users.User
alias Mix.Tasks.Mobilizon.Users.{New, Delete, Show, Modify}
import Mobilizon.Factory
Mix.shell(Mix.Shell.Process)