diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 2 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 66 | ||||
| -rw-r--r-- | test/web/common_api/common_api_utils_test.exs | 15 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 43 | ||||
| -rw-r--r-- | test/web/twitter_api/representers/activity_representer_test.exs | 3 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 27 | ||||
| -rw-r--r-- | test/web/twitter_api/views/activity_view_test.exs | 5 | ||||
| -rw-r--r-- | test/web/web_finger/web_finger_test.exs | 8 | 
8 files changed, 158 insertions, 11 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index c1ba626b7..9adce84b5 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -277,7 +277,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        {:ok, like_activity, object} = ActivityPub.like(user, object)        assert object.data["like_count"] == 1 -      {:ok, object} = ActivityPub.unlike(user, object) +      {:ok, _, _, object} = ActivityPub.unlike(user, object)        assert object.data["like_count"] == 0        assert Repo.get(Activity, like_activity.id) == nil diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 1d38661eb..87fadece2 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1,6 +1,7 @@  defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do    use Pleroma.DataCase    alias Pleroma.Web.ActivityPub.Transmogrifier +  alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.OStatus    alias Pleroma.Activity    alias Pleroma.User @@ -118,6 +119,23 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert User.following?(User.get_by_ap_id(data["actor"]), user)      end +    test "it works for incoming follow requests from hubzilla" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/hubzilla-follow-activity.json") +        |> Poison.decode!() +        |> Map.put("object", user.ap_id) +        |> Utils.normalize_params() + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" +      assert data["type"] == "Follow" +      assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" +      assert User.following?(User.get_by_ap_id(data["actor"]), user) +    end +      test "it works for incoming likes" do        user = insert(:user)        {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) @@ -135,6 +153,43 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["object"] == activity.data["object"]["id"]      end +    test "it returns an error for incoming unlikes wihout a like activity" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + +      data = +        File.read!("test/fixtures/mastodon-undo-like.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]["id"]) + +      assert Transmogrifier.handle_incoming(data) == :error +    end + +    test "it works for incoming unlikes with an existing like activity" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + +      like_data = +        File.read!("test/fixtures/mastodon-like.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]["id"]) + +      {:ok, %Activity{data: like_data, local: false}} = Transmogrifier.handle_incoming(like_data) + +      data = +        File.read!("test/fixtures/mastodon-undo-like.json") +        |> Poison.decode!() +        |> Map.put("object", like_data) +        |> Map.put("actor", like_data["actor"]) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "http://mastodon.example.org/users/admin" +      assert data["type"] == "Undo" +      assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo" +      assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2" +    end +      test "it works for incoming announces" do        data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() @@ -490,4 +545,15 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert Repo.get(WebsubClientSubscription, ws2.id)      end    end + +  describe "actor rewriting" do +    test "it fixes the actor URL property to be a proper URI" do +      data = %{ +        "url" => %{"href" => "http://example.com"} +      } + +      rewritten = Transmogrifier.maybe_fix_user_object(data) +      assert rewritten["url"] == "http://example.com" +    end +  end  end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 689bdd61e..23cce471f 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -1,5 +1,6 @@  defmodule Pleroma.Web.CommonAPI.UtilsTest do    alias Pleroma.Web.CommonAPI.Utils +  alias Pleroma.Builders.{UserBuilder}    use Pleroma.DataCase    test "it adds attachment links to a given text and attachment set" do @@ -15,4 +16,18 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do      assert res ==               "<br><a href=\"#{name}\" class='attachment'>Sakura Mana – Turned on by a Se…</a>"    end + +  describe "it confirms the password given is the current users password" do +    test "incorrect password given" do +      {:ok, user} = UserBuilder.insert() + +      assert Utils.confirm_current_password(user, %{"password" => ""}) == +               {:error, "Invalid password."} +    end + +    test "correct password given" do +      {:ok, user} = UserBuilder.insert() +      assert Utils.confirm_current_password(user, %{"password" => "test"}) == {:ok, user} +    end +  end  end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 8d79c96b1..435462769 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -354,18 +354,47 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    describe "user timelines" do      test "gets a users statuses", %{conn: conn} do -      _note = insert(:note_activity) -      note_two = insert(:note_activity) +      user_one = insert(:user) +      user_two = insert(:user) +      user_three = insert(:user) -      user = User.get_by_ap_id(note_two.data["actor"]) +      {:ok, user_three} = User.follow(user_three, user_one) -      conn = +      {:ok, activity} = CommonAPI.post(user_one, %{"status" => "HI!!!"}) + +      {:ok, direct_activity} = +        CommonAPI.post(user_one, %{ +          "status" => "Hi, @#{user_two.nickname}.", +          "visibility" => "direct" +        }) + +      {:ok, private_activity} = +        CommonAPI.post(user_one, %{"status" => "private", "visibility" => "private"}) + +      resp =          conn -        |> get("/api/v1/accounts/#{user.id}/statuses") +        |> get("/api/v1/accounts/#{user_one.id}/statuses") -      assert [%{"id" => id}] = json_response(conn, 200) +      assert [%{"id" => id}] = json_response(resp, 200) +      assert id == to_string(activity.id) + +      resp = +        conn +        |> assign(:user, user_two) +        |> get("/api/v1/accounts/#{user_one.id}/statuses") + +      assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) +      assert id_one == to_string(direct_activity.id) +      assert id_two == to_string(activity.id) + +      resp = +        conn +        |> assign(:user, user_three) +        |> get("/api/v1/accounts/#{user_one.id}/statuses") -      assert id == to_string(note_two.id) +      assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) +      assert id_one == to_string(private_activity.id) +      assert id_two == to_string(activity.id)      end      test "unimplemented pinned statuses feature", %{conn: conn} do diff --git a/test/web/twitter_api/representers/activity_representer_test.exs b/test/web/twitter_api/representers/activity_representer_test.exs index bb47d4409..16c6e7b0d 100644 --- a/test/web/twitter_api/representers/activity_representer_test.exs +++ b/test/web/twitter_api/representers/activity_representer_test.exs @@ -154,7 +154,8 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do        "tags" => ["nsfw", "content", "mentioning"],        "activity_type" => "post",        "possibly_sensitive" => true, -      "uri" => activity.data["object"]["id"] +      "uri" => activity.data["object"]["id"], +      "visibility" => "direct"      }      assert ActivityRepresenter.to_map(activity, %{ diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 896fe246d..02aba0bc8 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -800,4 +800,31 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do      user = Repo.get!(User, user.id)      assert user.bio == "Hello,<br>World! I<br> am a test."    end + +  describe "POST /api/pleroma/delete_account" do +    setup [:valid_user] + +    test "without credentials", %{conn: conn} do +      conn = post(conn, "/api/pleroma/delete_account") +      assert json_response(conn, 403) == %{"error" => "Invalid credentials."} +    end + +    test "with credentials and invalid password", %{conn: conn, user: current_user} do +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post("/api/pleroma/delete_account", %{"password" => "hi"}) + +      assert json_response(conn, 200) == %{"error" => "Invalid password."} +    end + +    test "with credentials and valid password", %{conn: conn, user: current_user} do +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post("/api/pleroma/delete_account", %{"password" => "test"}) + +      assert json_response(conn, 200) == %{"status" => "success"} +    end +  end  end diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 7f2017d3c..5b2a7466b 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -18,7 +18,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      user = insert(:user)      other_user = insert(:user, %{nickname: "shp"}) -    {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) +    {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!", "visibility" => "direct"})      result = ActivityView.render("activity.json", activity: activity) @@ -47,7 +47,8 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do        "tags" => [],        "text" => "Hey @shp!",        "uri" => activity.data["object"]["id"], -      "user" => UserView.render("show.json", %{user: user}) +      "user" => UserView.render("show.json", %{user: user}), +      "visibility" => "direct"      }      assert result == expected diff --git a/test/web/web_finger/web_finger_test.exs b/test/web/web_finger/web_finger_test.exs index 69216f393..2d6ff2656 100644 --- a/test/web/web_finger/web_finger_test.exs +++ b/test/web/web_finger/web_finger_test.exs @@ -49,6 +49,14 @@ defmodule Pleroma.Web.WebFingerTest do        {:ok, _data} = WebFinger.finger(user)      end +    test "returns the ActivityPub actor URI for an ActivityPub user with the ld+json mimetype" do +      user = "kaniini@gerzilla.de" + +      {:ok, data} = WebFinger.finger(user) + +      assert data["ap_id"] == "https://gerzilla.de/channel/kaniini" +    end +      test "returns the correctly for json ostatus users" do        user = "winterdienst@gnusocial.de" | 
