From cddab5700b4903ba280fada57a79b8efe10f0bf6 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 15 Dec 2018 17:34:37 +0100 Subject: WebFinger: Sends a 400 when resource param is missing, fix XRD typo in test --- test/web/web_finger/web_finger_controller_test.exs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/web_finger/web_finger_controller_test.exs b/test/web/web_finger/web_finger_controller_test.exs index cac003e76..3bc878532 100644 --- a/test/web/web_finger/web_finger_controller_test.exs +++ b/test/web/web_finger/web_finger_controller_test.exs @@ -29,9 +29,18 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do response = build_conn() - |> put_req_header("accept", "application/jrd+json") + |> put_req_header("accept", "application/xrd+xml") |> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") assert response(response, 200) end + + test "Sends a 400 when resource param is missing" do + response = + build_conn() + |> put_req_header("accept", "application/xrd+xml,application/jrd+json") + |> get("/.well-known/webfinger") + + assert response(response, 400) + end end -- cgit v1.2.3 From e8537208bd9af701cbfc788ca307b8352306a36b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 15 Dec 2018 22:38:39 +0300 Subject: Add a captcha mock for tests --- test/support/captcha_mock.ex | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 test/support/captcha_mock.ex (limited to 'test') diff --git a/test/support/captcha_mock.ex b/test/support/captcha_mock.ex new file mode 100644 index 000000000..9d79f2e95 --- /dev/null +++ b/test/support/captcha_mock.ex @@ -0,0 +1,10 @@ +defmodule Pleroma.Captcha.Mock do + alias Pleroma.Captcha.Service + @behaviour Service + + @impl Service + def new(), do: %{type: :mock} + + @impl Service + def validate(_token, _captcha), do: true +end -- cgit v1.2.3 From 5f96c2d216c2728367dfdacb2dbbfc92eb30ce3c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 15 Dec 2018 23:38:19 +0300 Subject: Add a test for kocaptcha --- test/captcha_test.ex | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/captcha_test.ex (limited to 'test') diff --git a/test/captcha_test.ex b/test/captcha_test.ex new file mode 100644 index 000000000..3942cb051 --- /dev/null +++ b/test/captcha_test.ex @@ -0,0 +1,41 @@ +defmodule Pleroma.CaptchaTest do + use ExUnit.Case + + import Tesla.Mock + + @ets_options [:ordered_set, :private, :named_table, {:read_concurrency, true}] + + describe "Kocaptcha" do + + setup do + ets_name = Pleroma.Captcha.Kocaptcha.Ets + ^ets_name = :ets.new(ets_name, @ets_options) + + mock fn + %{method: :get, url: "http://localhost:9093/new"} -> + json( + %{ + md5: "63615261b77f5354fb8c4e4986477555", + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + } + ) + end + + :ok + end + + test "new and validate" do + assert Pleroma.Captcha.Kocaptcha.new() == %{ + type: :kocaptcha, + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + } + + assert Pleroma.Captcha.Kocaptcha.validate( + "afa1815e14e29355e6c8f6b143a39fa2", + "7oEy8c" + ) + end + end +end -- cgit v1.2.3 From c859cd1d61d81db4999c594ef61164d752d76145 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 15 Dec 2018 23:39:23 +0300 Subject: Fix style --- test/captcha_test.ex | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'test') diff --git a/test/captcha_test.ex b/test/captcha_test.ex index 3942cb051..98e8da79b 100644 --- a/test/captcha_test.ex +++ b/test/captcha_test.ex @@ -6,36 +6,33 @@ defmodule Pleroma.CaptchaTest do @ets_options [:ordered_set, :private, :named_table, {:read_concurrency, true}] describe "Kocaptcha" do - setup do ets_name = Pleroma.Captcha.Kocaptcha.Ets ^ets_name = :ets.new(ets_name, @ets_options) - mock fn + mock(fn %{method: :get, url: "http://localhost:9093/new"} -> - json( - %{ - md5: "63615261b77f5354fb8c4e4986477555", - token: "afa1815e14e29355e6c8f6b143a39fa2", - url: "/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" - } - ) - end + json(%{ + md5: "63615261b77f5354fb8c4e4986477555", + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + }) + end) :ok end test "new and validate" do assert Pleroma.Captcha.Kocaptcha.new() == %{ - type: :kocaptcha, - token: "afa1815e14e29355e6c8f6b143a39fa2", - url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" - } + type: :kocaptcha, + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + } assert Pleroma.Captcha.Kocaptcha.validate( - "afa1815e14e29355e6c8f6b143a39fa2", - "7oEy8c" - ) + "afa1815e14e29355e6c8f6b143a39fa2", + "7oEy8c" + ) end end end -- cgit v1.2.3 From 36f1af232a3e34594617f2044652d7d02b19a234 Mon Sep 17 00:00:00 2001 From: link0ff Date: Sun, 16 Dec 2018 02:14:23 +0200 Subject: Add tests for Mix tasks --- test/tasks/user.exs | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 test/tasks/user.exs (limited to 'test') diff --git a/test/tasks/user.exs b/test/tasks/user.exs new file mode 100644 index 000000000..9f0942ba7 --- /dev/null +++ b/test/tasks/user.exs @@ -0,0 +1,225 @@ +defmodule Mix.Tasks.Pleroma.UserTest do + alias Pleroma.User + use Pleroma.DataCase + + import Pleroma.Factory + import ExUnit.CaptureIO + + setup_all do + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + + :ok + end + + describe "running new" do + test "user is created" do + # just get random data + unsaved = build(:user) + + # prepare to answer yes + send(self(), {:mix_shell_input, :yes?, true}) + + Mix.Tasks.Pleroma.User.run([ + "new", + unsaved.nickname, + unsaved.email, + "--name", + unsaved.name, + "--bio", + unsaved.bio, + "--password", + "test", + "--moderator", + "--admin" + ]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ "user will be created" + assert_received {:mix_shell, :yes?, [message]} + assert message =~ "Continue" + assert_received {:mix_shell, :info, [message]} + assert message =~ "created" + + user = User.get_by_nickname(unsaved.nickname) + assert user.name == unsaved.name + assert user.email == unsaved.email + assert user.bio == unsaved.bio + assert user.info.is_moderator + assert user.info.is_admin + end + + test "user is not created" do + unsaved = build(:user) + + # prepare to answer no + send(self(), {:mix_shell_input, :yes?, false}) + Mix.Tasks.Pleroma.User.run(["new", unsaved.nickname, unsaved.email]) + assert_received {:mix_shell, :info, [message]} + assert message =~ "user will be created" + assert_received {:mix_shell, :yes?, [message]} + assert message =~ "Continue" + assert_received {:mix_shell, :info, [message]} + assert message =~ "will not be created" + + refute User.get_by_nickname(unsaved.nickname) + end + end + + describe "running rm" do + test "user is deleted" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["rm", user.nickname]) + assert_received {:mix_shell, :info, [message]} + assert message =~ " deleted" + + user = User.get_by_nickname(user.nickname) + assert user.info.deactivated + end + + test "no user to delete" do + Mix.Tasks.Pleroma.User.run(["rm", "nonexistant"]) + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running toggle_activated" do + test "user is deactivated" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) + assert_received {:mix_shell, :info, [message]} + assert message =~ " deactivated" + + user = User.get_by_nickname(user.nickname) + assert user.info.deactivated + end + + test "user is activated" do + user = insert(:user, info: %{deactivated: true}) + + Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) + assert_received {:mix_shell, :info, [message]} + assert message =~ " activated" + + user = User.get_by_nickname(user.nickname) + refute user.info.deactivated + end + + test "no user to toggle" do + Mix.Tasks.Pleroma.User.run(["toggle_activated", "nonexistant"]) + assert_received {:mix_shell, :error, [message]} + assert message =~ "No user" + end + end + + describe "running unsubscribe" do + test "user is unsubscribed" do + followed = insert(:user) + user = insert(:user, %{following: [User.ap_followers(followed)]}) + + Mix.Tasks.Pleroma.User.run(["unsubscribe", user.nickname]) + assert_received {:mix_shell, :info, [message]} + assert message =~ "Deactivating" + assert_received {:mix_shell, :info, [message]} + assert message =~ "Unsubscribing" + # Note that the task has delay :timer.sleep(500) + assert_received {:mix_shell, :info, [message]} + assert message =~ "Successfully unsubscribed" + + user = User.get_by_nickname(user.nickname) + assert length(user.following) == 0 + assert user.info.deactivated + end + + test "no user to unsubscribe" do + Mix.Tasks.Pleroma.User.run(["unsubscribe", "nonexistant"]) + assert_received {:mix_shell, :error, [message]} + assert message =~ "No user" + end + end + + describe "running set" do + test "All statuses set" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["set", user.nickname, "--moderator", "--admin", "--locked"]) + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Moderator status .* true" + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Locked status .* true" + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Admin status .* true" + + user = User.get_by_nickname(user.nickname) + assert user.info.is_moderator + assert user.info.locked + assert user.info.is_admin + end + + test "All statuses unset" do + user = insert(:user, info: %{is_moderator: true, locked: true, is_admin: true}) + + Mix.Tasks.Pleroma.User.run([ + "set", + user.nickname, + "--no-moderator", + "--no-admin", + "--no-locked" + ]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Moderator status .* false" + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Locked status .* false" + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r"Admin status .* false" + + user = User.get_by_nickname(user.nickname) + refute user.info.is_moderator + refute user.info.locked + refute user.info.is_admin + end + + test "no user to set status" do + Mix.Tasks.Pleroma.User.run(["set", "nonexistant", "--moderator"]) + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running reset_password" do + test "password reset token is generated" do + user = insert(:user) + + assert capture_io(fn -> + Mix.Tasks.Pleroma.User.run(["reset_password", user.nickname]) + end) =~ "URL:" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Generated" + end + + test "no user to reset password" do + Mix.Tasks.Pleroma.User.run(["reset_password", "nonexistant"]) + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running invite" do + test "invite token is generated" do + assert capture_io(fn -> + Mix.Tasks.Pleroma.User.run(["invite"]) + end) =~ "http" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Generated" + end + end +end -- cgit v1.2.3 From 2e72d49e373abf2957df82db6f8031c62936f9ba Mon Sep 17 00:00:00 2001 From: vaartis Date: Sun, 16 Dec 2018 07:35:45 +0000 Subject: Rename captcha_test.ex to exs --- test/captcha_test.ex | 38 -------------------------------------- test/captcha_test.exs | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 38 deletions(-) delete mode 100644 test/captcha_test.ex create mode 100644 test/captcha_test.exs (limited to 'test') diff --git a/test/captcha_test.ex b/test/captcha_test.ex deleted file mode 100644 index 98e8da79b..000000000 --- a/test/captcha_test.ex +++ /dev/null @@ -1,38 +0,0 @@ -defmodule Pleroma.CaptchaTest do - use ExUnit.Case - - import Tesla.Mock - - @ets_options [:ordered_set, :private, :named_table, {:read_concurrency, true}] - - describe "Kocaptcha" do - setup do - ets_name = Pleroma.Captcha.Kocaptcha.Ets - ^ets_name = :ets.new(ets_name, @ets_options) - - mock(fn - %{method: :get, url: "http://localhost:9093/new"} -> - json(%{ - md5: "63615261b77f5354fb8c4e4986477555", - token: "afa1815e14e29355e6c8f6b143a39fa2", - url: "/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" - }) - end) - - :ok - end - - test "new and validate" do - assert Pleroma.Captcha.Kocaptcha.new() == %{ - type: :kocaptcha, - token: "afa1815e14e29355e6c8f6b143a39fa2", - url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" - } - - assert Pleroma.Captcha.Kocaptcha.validate( - "afa1815e14e29355e6c8f6b143a39fa2", - "7oEy8c" - ) - end - end -end diff --git a/test/captcha_test.exs b/test/captcha_test.exs new file mode 100644 index 000000000..98e8da79b --- /dev/null +++ b/test/captcha_test.exs @@ -0,0 +1,38 @@ +defmodule Pleroma.CaptchaTest do + use ExUnit.Case + + import Tesla.Mock + + @ets_options [:ordered_set, :private, :named_table, {:read_concurrency, true}] + + describe "Kocaptcha" do + setup do + ets_name = Pleroma.Captcha.Kocaptcha.Ets + ^ets_name = :ets.new(ets_name, @ets_options) + + mock(fn + %{method: :get, url: "http://localhost:9093/new"} -> + json(%{ + md5: "63615261b77f5354fb8c4e4986477555", + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + }) + end) + + :ok + end + + test "new and validate" do + assert Pleroma.Captcha.Kocaptcha.new() == %{ + type: :kocaptcha, + token: "afa1815e14e29355e6c8f6b143a39fa2", + url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + } + + assert Pleroma.Captcha.Kocaptcha.validate( + "afa1815e14e29355e6c8f6b143a39fa2", + "7oEy8c" + ) + end + end +end -- cgit v1.2.3 From 4c783e35c09c74097257ce56fde74025db0024c6 Mon Sep 17 00:00:00 2001 From: eal Date: Sun, 16 Dec 2018 13:15:34 +0200 Subject: Mastodon API: Fix PUT /api/web/settings --- test/web/mastodon_api/mastodon_api_controller_test.exs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test') diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e8275d4ab..aec0f851c 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1415,4 +1415,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do assert result["stats"]["user_count"] == 2 assert result["stats"]["status_count"] == 1 end + + test "put settings", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> put("/api/web/settings", %{"data" => %{"programming" => "socks"}}) + + assert result = json_response(conn, 200) + + user = User.get_cached_by_ap_id(user.ap_id) + assert user.info.settings == %{"programming" => "socks"} + end end -- cgit v1.2.3 From 7c235b8874d575cb1582b1fca2817a8db492bf4c Mon Sep 17 00:00:00 2001 From: link0ff Date: Sun, 16 Dec 2018 18:04:31 +0200 Subject: Add more Mix task tests in relay_test.exs and uploads_test.exs. Rename test/tasks/user.exs to test/tasks/user_test.exs. --- test/tasks/relay_test.exs | 65 ++++++++++++ test/tasks/uploads_test.exs | 47 +++++++++ test/tasks/user.exs | 225 ---------------------------------------- test/tasks/user_test.exs | 247 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 359 insertions(+), 225 deletions(-) create mode 100644 test/tasks/relay_test.exs create mode 100644 test/tasks/uploads_test.exs delete mode 100644 test/tasks/user.exs create mode 100644 test/tasks/user_test.exs (limited to 'test') diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs new file mode 100644 index 000000000..737293865 --- /dev/null +++ b/test/tasks/relay_test.exs @@ -0,0 +1,65 @@ +defmodule Mix.Tasks.Pleroma.RelayTest do + alias Pleroma.Activity + alias Pleroma.Web.ActivityPub.{ActivityPub, Relay, Utils} + alias Pleroma.User + use Pleroma.DataCase + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + + :ok + end + + describe "running follow" do + test "relay is followed" do + target_instance = "http://mastodon.example.org/users/admin" + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + local_user = Relay.get_actor() + assert local_user.ap_id =~ "/relay" + + target_user = User.get_by_ap_id(target_instance) + refute target_user.local + + activity = Utils.fetch_latest_follow(local_user, target_user) + assert activity.data["type"] == "Follow" + assert activity.data["actor"] == local_user.ap_id + assert activity.data["object"] == target_user.ap_id + end + end + + describe "running unfollow" do + test "relay is unfollowed" do + target_instance = "http://mastodon.example.org/users/admin" + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + %User{ap_id: follower_id} = local_user = Relay.get_actor() + target_user = User.get_by_ap_id(target_instance) + follow_activity = Utils.fetch_latest_follow(local_user, target_user) + + Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance]) + + cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"]) + assert cancelled_activity.data["state"] == "cancelled" + + [undo_activity] = + ActivityPub.fetch_activities([], %{ + "type" => "Undo", + "actor_id" => follower_id, + "limit" => 1 + }) + + assert undo_activity.data["type"] == "Undo" + assert undo_activity.data["actor"] == local_user.ap_id + assert undo_activity.data["object"] == cancelled_activity.data + end + end +end diff --git a/test/tasks/uploads_test.exs b/test/tasks/uploads_test.exs new file mode 100644 index 000000000..a76e96df5 --- /dev/null +++ b/test/tasks/uploads_test.exs @@ -0,0 +1,47 @@ +defmodule Mix.Tasks.Pleroma.UploadsTest do + alias Pleroma.Upload + use Pleroma.DataCase + + import Mock + + setup_all do + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + + :ok + end + + describe "running migrate_local" do + test "uploads migrated" do + with_mock Upload, + store: fn %Upload{name: _file, path: _path}, _opts -> {:ok, %{}} end do + Mix.Tasks.Pleroma.Uploads.run(["migrate_local", "S3"]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Migrating files from local" + + assert_received {:mix_shell, :info, [message]} + + assert %{"total_count" => total_count} = + Regex.named_captures(~r"^Found (?\d+) uploads$", message) + + assert_received {:mix_shell, :info, [message]} + + assert %{"count" => ^total_count, "total_count" => ^total_count} = + Regex.named_captures( + ~r"^Uploaded (?\d+)/(?\d+) files$", + message + ) + end + end + + test "nonexistent uploader" do + assert_raise RuntimeError, ~r/The uploader .* is not an existing/, fn -> + Mix.Tasks.Pleroma.Uploads.run(["migrate_local", "nonexistent"]) + end + end + end +end diff --git a/test/tasks/user.exs b/test/tasks/user.exs deleted file mode 100644 index 9f0942ba7..000000000 --- a/test/tasks/user.exs +++ /dev/null @@ -1,225 +0,0 @@ -defmodule Mix.Tasks.Pleroma.UserTest do - alias Pleroma.User - use Pleroma.DataCase - - import Pleroma.Factory - import ExUnit.CaptureIO - - setup_all do - Mix.shell(Mix.Shell.Process) - - on_exit(fn -> - Mix.shell(Mix.Shell.IO) - end) - - :ok - end - - describe "running new" do - test "user is created" do - # just get random data - unsaved = build(:user) - - # prepare to answer yes - send(self(), {:mix_shell_input, :yes?, true}) - - Mix.Tasks.Pleroma.User.run([ - "new", - unsaved.nickname, - unsaved.email, - "--name", - unsaved.name, - "--bio", - unsaved.bio, - "--password", - "test", - "--moderator", - "--admin" - ]) - - assert_received {:mix_shell, :info, [message]} - assert message =~ "user will be created" - assert_received {:mix_shell, :yes?, [message]} - assert message =~ "Continue" - assert_received {:mix_shell, :info, [message]} - assert message =~ "created" - - user = User.get_by_nickname(unsaved.nickname) - assert user.name == unsaved.name - assert user.email == unsaved.email - assert user.bio == unsaved.bio - assert user.info.is_moderator - assert user.info.is_admin - end - - test "user is not created" do - unsaved = build(:user) - - # prepare to answer no - send(self(), {:mix_shell_input, :yes?, false}) - Mix.Tasks.Pleroma.User.run(["new", unsaved.nickname, unsaved.email]) - assert_received {:mix_shell, :info, [message]} - assert message =~ "user will be created" - assert_received {:mix_shell, :yes?, [message]} - assert message =~ "Continue" - assert_received {:mix_shell, :info, [message]} - assert message =~ "will not be created" - - refute User.get_by_nickname(unsaved.nickname) - end - end - - describe "running rm" do - test "user is deleted" do - user = insert(:user) - - Mix.Tasks.Pleroma.User.run(["rm", user.nickname]) - assert_received {:mix_shell, :info, [message]} - assert message =~ " deleted" - - user = User.get_by_nickname(user.nickname) - assert user.info.deactivated - end - - test "no user to delete" do - Mix.Tasks.Pleroma.User.run(["rm", "nonexistant"]) - assert_received {:mix_shell, :error, [message]} - assert message =~ "No local user" - end - end - - describe "running toggle_activated" do - test "user is deactivated" do - user = insert(:user) - - Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) - assert_received {:mix_shell, :info, [message]} - assert message =~ " deactivated" - - user = User.get_by_nickname(user.nickname) - assert user.info.deactivated - end - - test "user is activated" do - user = insert(:user, info: %{deactivated: true}) - - Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) - assert_received {:mix_shell, :info, [message]} - assert message =~ " activated" - - user = User.get_by_nickname(user.nickname) - refute user.info.deactivated - end - - test "no user to toggle" do - Mix.Tasks.Pleroma.User.run(["toggle_activated", "nonexistant"]) - assert_received {:mix_shell, :error, [message]} - assert message =~ "No user" - end - end - - describe "running unsubscribe" do - test "user is unsubscribed" do - followed = insert(:user) - user = insert(:user, %{following: [User.ap_followers(followed)]}) - - Mix.Tasks.Pleroma.User.run(["unsubscribe", user.nickname]) - assert_received {:mix_shell, :info, [message]} - assert message =~ "Deactivating" - assert_received {:mix_shell, :info, [message]} - assert message =~ "Unsubscribing" - # Note that the task has delay :timer.sleep(500) - assert_received {:mix_shell, :info, [message]} - assert message =~ "Successfully unsubscribed" - - user = User.get_by_nickname(user.nickname) - assert length(user.following) == 0 - assert user.info.deactivated - end - - test "no user to unsubscribe" do - Mix.Tasks.Pleroma.User.run(["unsubscribe", "nonexistant"]) - assert_received {:mix_shell, :error, [message]} - assert message =~ "No user" - end - end - - describe "running set" do - test "All statuses set" do - user = insert(:user) - - Mix.Tasks.Pleroma.User.run(["set", user.nickname, "--moderator", "--admin", "--locked"]) - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Moderator status .* true" - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Locked status .* true" - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Admin status .* true" - - user = User.get_by_nickname(user.nickname) - assert user.info.is_moderator - assert user.info.locked - assert user.info.is_admin - end - - test "All statuses unset" do - user = insert(:user, info: %{is_moderator: true, locked: true, is_admin: true}) - - Mix.Tasks.Pleroma.User.run([ - "set", - user.nickname, - "--no-moderator", - "--no-admin", - "--no-locked" - ]) - - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Moderator status .* false" - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Locked status .* false" - assert_received {:mix_shell, :info, [message]} - assert message =~ ~r"Admin status .* false" - - user = User.get_by_nickname(user.nickname) - refute user.info.is_moderator - refute user.info.locked - refute user.info.is_admin - end - - test "no user to set status" do - Mix.Tasks.Pleroma.User.run(["set", "nonexistant", "--moderator"]) - assert_received {:mix_shell, :error, [message]} - assert message =~ "No local user" - end - end - - describe "running reset_password" do - test "password reset token is generated" do - user = insert(:user) - - assert capture_io(fn -> - Mix.Tasks.Pleroma.User.run(["reset_password", user.nickname]) - end) =~ "URL:" - - assert_received {:mix_shell, :info, [message]} - assert message =~ "Generated" - end - - test "no user to reset password" do - Mix.Tasks.Pleroma.User.run(["reset_password", "nonexistant"]) - assert_received {:mix_shell, :error, [message]} - assert message =~ "No local user" - end - end - - describe "running invite" do - test "invite token is generated" do - assert capture_io(fn -> - Mix.Tasks.Pleroma.User.run(["invite"]) - end) =~ "http" - - assert_received {:mix_shell, :info, [message]} - assert message =~ "Generated" - end - end -end diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs new file mode 100644 index 000000000..7479bf749 --- /dev/null +++ b/test/tasks/user_test.exs @@ -0,0 +1,247 @@ +defmodule Mix.Tasks.Pleroma.UserTest do + alias Pleroma.User + use Pleroma.DataCase + + import Pleroma.Factory + import ExUnit.CaptureIO + + setup_all do + Mix.shell(Mix.Shell.Process) + + on_exit(fn -> + Mix.shell(Mix.Shell.IO) + end) + + :ok + end + + describe "running new" do + test "user is created" do + # just get random data + unsaved = build(:user) + + # prepare to answer yes + send(self(), {:mix_shell_input, :yes?, true}) + + Mix.Tasks.Pleroma.User.run([ + "new", + unsaved.nickname, + unsaved.email, + "--name", + unsaved.name, + "--bio", + unsaved.bio, + "--password", + "test", + "--moderator", + "--admin" + ]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ "user will be created" + + assert_received {:mix_shell, :yes?, [message]} + assert message =~ "Continue" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "created" + + user = User.get_by_nickname(unsaved.nickname) + assert user.name == unsaved.name + assert user.email == unsaved.email + assert user.bio == unsaved.bio + assert user.info.is_moderator + assert user.info.is_admin + end + + test "user is not created" do + unsaved = build(:user) + + # prepare to answer no + send(self(), {:mix_shell_input, :yes?, false}) + + Mix.Tasks.Pleroma.User.run(["new", unsaved.nickname, unsaved.email]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ "user will be created" + + assert_received {:mix_shell, :yes?, [message]} + assert message =~ "Continue" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "will not be created" + + refute User.get_by_nickname(unsaved.nickname) + end + end + + describe "running rm" do + test "user is deleted" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["rm", user.nickname]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ " deleted" + + user = User.get_by_nickname(user.nickname) + assert user.info.deactivated + end + + test "no user to delete" do + Mix.Tasks.Pleroma.User.run(["rm", "nonexistent"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running toggle_activated" do + test "user is deactivated" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ " deactivated" + + user = User.get_by_nickname(user.nickname) + assert user.info.deactivated + end + + test "user is activated" do + user = insert(:user, info: %{deactivated: true}) + + Mix.Tasks.Pleroma.User.run(["toggle_activated", user.nickname]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ " activated" + + user = User.get_by_nickname(user.nickname) + refute user.info.deactivated + end + + test "no user to toggle" do + Mix.Tasks.Pleroma.User.run(["toggle_activated", "nonexistent"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No user" + end + end + + describe "running unsubscribe" do + test "user is unsubscribed" do + followed = insert(:user) + user = insert(:user, %{following: [User.ap_followers(followed)]}) + + Mix.Tasks.Pleroma.User.run(["unsubscribe", user.nickname]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Deactivating" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Unsubscribing" + + # Note that the task has delay :timer.sleep(500) + assert_received {:mix_shell, :info, [message]} + assert message =~ "Successfully unsubscribed" + + user = User.get_by_nickname(user.nickname) + assert length(user.following) == 0 + assert user.info.deactivated + end + + test "no user to unsubscribe" do + Mix.Tasks.Pleroma.User.run(["unsubscribe", "nonexistent"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No user" + end + end + + describe "running set" do + test "All statuses set" do + user = insert(:user) + + Mix.Tasks.Pleroma.User.run(["set", user.nickname, "--moderator", "--admin", "--locked"]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Moderator status .* true/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Locked status .* true/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Admin status .* true/ + + user = User.get_by_nickname(user.nickname) + assert user.info.is_moderator + assert user.info.locked + assert user.info.is_admin + end + + test "All statuses unset" do + user = insert(:user, info: %{is_moderator: true, locked: true, is_admin: true}) + + Mix.Tasks.Pleroma.User.run([ + "set", + user.nickname, + "--no-moderator", + "--no-admin", + "--no-locked" + ]) + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Moderator status .* false/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Locked status .* false/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Admin status .* false/ + + user = User.get_by_nickname(user.nickname) + refute user.info.is_moderator + refute user.info.locked + refute user.info.is_admin + end + + test "no user to set status" do + Mix.Tasks.Pleroma.User.run(["set", "nonexistent", "--moderator"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running reset_password" do + test "password reset token is generated" do + user = insert(:user) + + assert capture_io(fn -> + Mix.Tasks.Pleroma.User.run(["reset_password", user.nickname]) + end) =~ "URL:" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Generated" + end + + test "no user to reset password" do + Mix.Tasks.Pleroma.User.run(["reset_password", "nonexistent"]) + + assert_received {:mix_shell, :error, [message]} + assert message =~ "No local user" + end + end + + describe "running invite" do + test "invite token is generated" do + assert capture_io(fn -> + Mix.Tasks.Pleroma.User.run(["invite"]) + end) =~ "http" + + assert_received {:mix_shell, :info, [message]} + assert message =~ "Generated" + end + end +end -- cgit v1.2.3 From f672555ad347861617c9b9b2c323b5044e840649 Mon Sep 17 00:00:00 2001 From: href Date: Sun, 16 Dec 2018 17:15:07 +0100 Subject: Upgrade to Phoenix 1.4 --- test/web/web_finger/web_finger_controller_test.exs | 4 ---- 1 file changed, 4 deletions(-) (limited to 'test') diff --git a/test/web/web_finger/web_finger_controller_test.exs b/test/web/web_finger/web_finger_controller_test.exs index cac003e76..423e9d135 100644 --- a/test/web/web_finger/web_finger_controller_test.exs +++ b/test/web/web_finger/web_finger_controller_test.exs @@ -1,11 +1,7 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do use Pleroma.Web.ConnCase - alias Pleroma.User - alias Pleroma.Web.WebFinger.WebFingerController - import Pleroma.Factory - import ExUnit.CaptureLog import Tesla.Mock setup do -- cgit v1.2.3 From 73576ab64ef00aa012dbabae907e03faa436c212 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 16 Dec 2018 23:01:44 +0300 Subject: Fix captcha tests --- test/captcha_test.exs | 4 ++-- test/support/captcha_mock.ex | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/captcha_test.exs b/test/captcha_test.exs index 98e8da79b..2729e1382 100644 --- a/test/captcha_test.exs +++ b/test/captcha_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.CaptchaTest do ^ets_name = :ets.new(ets_name, @ets_options) mock(fn - %{method: :get, url: "http://localhost:9093/new"} -> + %{method: :get, url: "https://captcha.kotobank.ch/new"} -> json(%{ md5: "63615261b77f5354fb8c4e4986477555", token: "afa1815e14e29355e6c8f6b143a39fa2", @@ -26,7 +26,7 @@ defmodule Pleroma.CaptchaTest do assert Pleroma.Captcha.Kocaptcha.new() == %{ type: :kocaptcha, token: "afa1815e14e29355e6c8f6b143a39fa2", - url: "http://localhost:9093/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" + url: "https://captcha.kotobank.ch/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" } assert Pleroma.Captcha.Kocaptcha.validate( diff --git a/test/support/captcha_mock.ex b/test/support/captcha_mock.ex index 9d79f2e95..560d6c457 100644 --- a/test/support/captcha_mock.ex +++ b/test/support/captcha_mock.ex @@ -7,4 +7,7 @@ defmodule Pleroma.Captcha.Mock do @impl Service def validate(_token, _captcha), do: true + + @impl Service + def cleanup(_token), do: true end -- cgit v1.2.3 From ef6829382aa32c03cf8536422537a9c219bd0035 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 16 Dec 2018 23:41:11 +0300 Subject: Clean captchas up periodically, not schedule it after theyre created --- test/support/captcha_mock.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/support/captcha_mock.ex b/test/support/captcha_mock.ex index 560d6c457..898aa17b8 100644 --- a/test/support/captcha_mock.ex +++ b/test/support/captcha_mock.ex @@ -9,5 +9,5 @@ defmodule Pleroma.Captcha.Mock do def validate(_token, _captcha), do: true @impl Service - def cleanup(_token), do: true + def cleanup(), do: :ok end -- cgit v1.2.3 From b12a90491156f1b31defd7aa1b322a86867dbf2b Mon Sep 17 00:00:00 2001 From: href Date: Mon, 17 Dec 2018 17:09:06 +0100 Subject: Integration tests for mastodon websocket --- test/integration/mastodon_websocket_test.exs | 100 +++++++++++++++++++++++++ test/support/websocket_client.ex | 58 ++++++++++++++ test/web/mastodon_api/mastodon_socket_test.exs | 31 -------- 3 files changed, 158 insertions(+), 31 deletions(-) create mode 100644 test/integration/mastodon_websocket_test.exs create mode 100644 test/support/websocket_client.ex delete mode 100644 test/web/mastodon_api/mastodon_socket_test.exs (limited to 'test') diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs new file mode 100644 index 000000000..b5f3d3a47 --- /dev/null +++ b/test/integration/mastodon_websocket_test.exs @@ -0,0 +1,100 @@ +defmodule Pleroma.Integration.MastodonWebsocketTest do + use Pleroma.DataCase + + import Pleroma.Factory + + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.OAuth + alias Pleroma.Integration.WebsocketClient + alias Pleroma.Web.Streamer + + @path Pleroma.Web.Endpoint.url() + |> URI.parse() + |> Map.put(:scheme, "ws") + |> Map.put(:path, "/api/v1/streaming") + |> URI.to_string() + + setup do + GenServer.start(Streamer, %{}, name: Streamer) + + on_exit(fn -> + if pid = Process.whereis(Streamer) do + Process.exit(pid, :kill) + end + end) + end + + def start_socket(qs \\ nil, headers \\ []) do + path = + case qs do + nil -> @path + qs -> @path <> qs + end + + WebsocketClient.start_link(self(), path, headers) + end + + test "refuses invalid requests" do + assert {:error, {400, _}} = start_socket() + assert {:error, {404, _}} = start_socket("?stream=ncjdk") + end + + test "requires authentication and a valid token for protected streams" do + assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") + assert {:error, {403, _}} = start_socket("?stream=user") + end + + test "allows public streams without authentication" do + assert {:ok, _} = start_socket("?stream=public") + assert {:ok, _} = start_socket("?stream=public:local") + assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") + end + + test "receives well formatted events" do + user = insert(:user) + {:ok, _} = start_socket("?stream=public") + {:ok, activity} = CommonAPI.post(user, %{"status" => "nice echo chamber"}) + + assert_receive {:text, raw_json}, 1_000 + assert {:ok, json} = Jason.decode(raw_json) + + assert "update" == json["event"] + assert json["payload"] + assert {:ok, json} = Jason.decode(json["payload"]) + + # Note: we remove the "statuses_count" from this result as it changes in the meantime + + view_json = + Pleroma.Web.MastodonAPI.StatusView.render("status.json", activity: activity, for: nil) + |> Jason.encode!() + |> Jason.decode!() + |> put_in(["account", "statuses_count"], 0) + + assert json == view_json + end + + describe "with a valid user token" do + setup do + {:ok, app} = + Pleroma.Repo.insert( + OAuth.App.register_changeset(%OAuth.App{}, %{ + client_name: "client", + scopes: "scope", + redirect_uris: "url" + }) + ) + + user = insert(:user) + + {:ok, auth} = OAuth.Authorization.create_authorization(app, user) + + {:ok, token} = OAuth.Token.exchange_token(app, auth) + + %{user: user, token: token} + end + + test "accepts valid tokens", state do + assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") + end + end +end diff --git a/test/support/websocket_client.ex b/test/support/websocket_client.ex new file mode 100644 index 000000000..57e9bb17f --- /dev/null +++ b/test/support/websocket_client.ex @@ -0,0 +1,58 @@ +defmodule Pleroma.Integration.WebsocketClient do + # https://github.com/phoenixframework/phoenix/blob/master/test/support/websocket_client.exs + + @doc """ + Starts the WebSocket server for given ws URL. Received Socket.Message's + are forwarded to the sender pid + """ + def start_link(sender, url, headers \\ []) do + :crypto.start() + :ssl.start() + + :websocket_client.start_link( + String.to_charlist(url), + __MODULE__, + [sender], + extra_headers: headers + ) + end + + @doc """ + Closes the socket + """ + def close(socket) do + send(socket, :close) + end + + @doc """ + Sends a low-level text message to the client. + """ + def send_text(server_pid, msg) do + send(server_pid, {:text, msg}) + end + + @doc false + def init([sender], _conn_state) do + {:ok, %{sender: sender}} + end + + @doc false + def websocket_handle(frame, _conn_state, state) do + send(state.sender, frame) + {:ok, state} + end + + @doc false + def websocket_info({:text, msg}, _conn_state, state) do + {:reply, {:text, msg}, state} + end + + def websocket_info(:close, _conn_state, _state) do + {:close, <<>>, "done"} + end + + @doc false + def websocket_terminate(_reason, _conn_state, _state) do + :ok + end +end diff --git a/test/web/mastodon_api/mastodon_socket_test.exs b/test/web/mastodon_api/mastodon_socket_test.exs deleted file mode 100644 index 5d9b96861..000000000 --- a/test/web/mastodon_api/mastodon_socket_test.exs +++ /dev/null @@ -1,31 +0,0 @@ -defmodule Pleroma.Web.MastodonApi.MastodonSocketTest do - use Pleroma.DataCase - - alias Pleroma.Web.{Streamer, CommonAPI} - - import Pleroma.Factory - - test "public is working when non-authenticated" do - user = insert(:user) - - task = - Task.async(fn -> - assert_receive {:text, _}, 4_000 - end) - - fake_socket = %{ - transport_pid: task.pid, - assigns: %{} - } - - topics = %{ - "public" => [fake_socket] - } - - {:ok, activity} = CommonAPI.post(user, %{"status" => "Test"}) - - Streamer.push_to_socket(topics, "public", activity) - - Task.await(task) - end -end -- cgit v1.2.3 From de981ac5a23673797951096b64a7f5ca49630467 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 17 Dec 2018 20:53:42 +0300 Subject: Alias Kocaptcha in the test --- test/captcha_test.exs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/captcha_test.exs b/test/captcha_test.exs index 2729e1382..54ffbd92f 100644 --- a/test/captcha_test.exs +++ b/test/captcha_test.exs @@ -3,11 +3,13 @@ defmodule Pleroma.CaptchaTest do import Tesla.Mock + alias Pleroma.Captcha.Kocaptcha + @ets_options [:ordered_set, :private, :named_table, {:read_concurrency, true}] describe "Kocaptcha" do setup do - ets_name = Pleroma.Captcha.Kocaptcha.Ets + ets_name = Kocaptcha.Ets ^ets_name = :ets.new(ets_name, @ets_options) mock(fn @@ -23,13 +25,13 @@ defmodule Pleroma.CaptchaTest do end test "new and validate" do - assert Pleroma.Captcha.Kocaptcha.new() == %{ + assert Kocaptcha.new() == %{ type: :kocaptcha, token: "afa1815e14e29355e6c8f6b143a39fa2", url: "https://captcha.kotobank.ch/captchas/afa1815e14e29355e6c8f6b143a39fa2.png" } - assert Pleroma.Captcha.Kocaptcha.validate( + assert Kocaptcha.validate( "afa1815e14e29355e6c8f6b143a39fa2", "7oEy8c" ) -- cgit v1.2.3 From e4763cd459d36b2fcd22e2e4abd3a2a326a21f5f Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 17 Dec 2018 20:12:01 +0100 Subject: Fix tagging problems for existing instances. --- test/user_test.exs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'test') diff --git a/test/user_test.exs b/test/user_test.exs index 9baa5ef24..1e73770df 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -11,6 +11,23 @@ defmodule Pleroma.UserTest do :ok end + describe "when tags are nil" do + test "tagging a user" do + user = insert(:user, %{tags: nil}) + user = User.tag(user, ["cool", "dude"]) + + assert "cool" in user.tags + assert "dude" in user.tags + end + + test "untagging a user" do + user = insert(:user, %{tags: nil}) + user = User.untag(user, ["cool", "dude"]) + + assert user.tags == [] + end + end + test "ap_id returns the activity pub id for the user" do user = UserBuilder.build() -- cgit v1.2.3 From 92a5133c42f62685007877eeaa26e4d61230d995 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Mon, 17 Dec 2018 22:41:36 +0300 Subject: fix text field --- test/web/twitter_api/views/activity_view_test.exs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'test') diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 77b8d99e7..8aa9e3130 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -14,6 +14,22 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do import Pleroma.Factory import Mock + test "a create activity with a html status" do + text = """ + #Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg + """ + + {:ok, activity} = CommonAPI.post(insert(:user), %{"status" => text}) + + result = ActivityView.render("activity.json", activity: activity) + + assert result["statusnet_html"] == + "#Bike log - Commute Tuesday
https://pla.bike/posts/20181211/
#cycling #CHScycling #commute
MVIMG_20181211_054020.jpg" + + assert result["text"] == + "#Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg" + end + test "a create activity with a note" do user = insert(:user) other_user = insert(:user, %{nickname: "shp"}) -- cgit v1.2.3 From 52bda3b456528e14bb9765660aa957d31f41e54c Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 17 Dec 2018 20:55:24 +0100 Subject: Fix uploads test. --- test/tasks/uploads_test.exs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/tasks/uploads_test.exs b/test/tasks/uploads_test.exs index a76e96df5..93035abb6 100644 --- a/test/tasks/uploads_test.exs +++ b/test/tasks/uploads_test.exs @@ -30,7 +30,12 @@ defmodule Mix.Tasks.Pleroma.UploadsTest do assert_received {:mix_shell, :info, [message]} - assert %{"count" => ^total_count, "total_count" => ^total_count} = + # @logevery in Mix.Tasks.Pleroma.Uploads + count = + min(50, String.to_integer(total_count)) + |> to_string() + + assert %{"count" => ^count, "total_count" => ^total_count} = Regex.named_captures( ~r"^Uploaded (?\d+)/(?\d+) files$", message -- cgit v1.2.3 From b1860fe85af1d32de937f466ba65d03614952e31 Mon Sep 17 00:00:00 2001 From: href Date: Mon, 17 Dec 2018 22:50:59 +0100 Subject: Instance/Static runtime plug This allows to set-up an arbitrary directory which overrides most of the static files: index.html static/ emoji/ packs/ sounds/ images/ instance/ favicon.png. If the files are not present in the directory, the bundled ones in priv/static will be used. --- test/plugs/instance_static_test.exs | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/plugs/instance_static_test.exs (limited to 'test') diff --git a/test/plugs/instance_static_test.exs b/test/plugs/instance_static_test.exs new file mode 100644 index 000000000..526679aae --- /dev/null +++ b/test/plugs/instance_static_test.exs @@ -0,0 +1,43 @@ +defmodule Pleroma.Web.RuntimeStaticPlugTest do + use Pleroma.Web.ConnCase + + @dir "test/tmp/instance_static" + + setup do + static_dir = Pleroma.Config.get([:instance, :static_dir]) + Pleroma.Config.put([:instance, :static_dir], @dir) + File.mkdir_p!(@dir) + + on_exit(fn -> + Pleroma.Config.put([:instance, :static_dir], static_dir) + File.rm_rf(@dir) + end) + end + + test "overrides index" do + bundled_index = get(build_conn(), "/") + assert html_response(bundled_index, 200) == File.read!("priv/static/index.html") + + File.write!(@dir <> "/index.html", "hello world") + + index = get(build_conn(), "/") + assert html_response(index, 200) == "hello world" + end + + test "overrides any file in static/static" do + bundled_index = get(build_conn(), "/static/terms-of-service.html") + + assert html_response(bundled_index, 200) == + File.read!("priv/static/static/terms-of-service.html") + + File.mkdir!(@dir <> "/static") + File.write!(@dir <> "/static/terms-of-service.html", "plz be kind") + + index = get(build_conn(), "/static/terms-of-service.html") + assert html_response(index, 200) == "plz be kind" + + File.write!(@dir <> "/static/kaniini.html", "

rabbit hugs as a service

") + index = get(build_conn(), "/static/kaniini.html") + assert html_response(index, 200) == "

rabbit hugs as a service

" + end +end -- cgit v1.2.3 From daaa8cd66acf29eb869dd535b372f6673e9b3030 Mon Sep 17 00:00:00 2001 From: href Date: Tue, 18 Dec 2018 13:40:25 +0100 Subject: SetUserSessionIdPlugTest: try to fix random ci failures --- test/plugs/set_user_session_id_plug_test.exs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test') diff --git a/test/plugs/set_user_session_id_plug_test.exs b/test/plugs/set_user_session_id_plug_test.exs index 5edc0dab8..a5fdd4146 100644 --- a/test/plugs/set_user_session_id_plug_test.exs +++ b/test/plugs/set_user_session_id_plug_test.exs @@ -1,6 +1,8 @@ defmodule Pleroma.Plugs.SetUserSessionIdPlugTest do use Pleroma.Web.ConnCase, async: true + Code.ensure_compiled(Pleroma.User) + alias Pleroma.Plugs.SetUserSessionIdPlug alias Pleroma.User -- cgit v1.2.3