diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 36 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 43 | ||||
| -rw-r--r-- | test/web/common_api/common_api_test.exs | 39 | ||||
| -rw-r--r-- | test/web/mastodon_api/views/status_view_test.exs | 9 | ||||
| -rw-r--r-- | test/web/pleroma_api/controllers/scrobble_controller_test.exs | 63 | 
5 files changed, 190 insertions, 0 deletions
| diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index f28fd6871..a203d1d30 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -257,6 +257,42 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      end    end +  describe "listen activities" do +    test "does not increase user note count" do +      user = insert(:user) + +      {:ok, activity} = +        ActivityPub.listen(%{ +          to: ["https://www.w3.org/ns/activitystreams#Public"], +          actor: user, +          context: "", +          object: %{ +            "actor" => user.ap_id, +            "to" => ["https://www.w3.org/ns/activitystreams#Public"], +            "artist" => "lain", +            "title" => "lain radio episode 1", +            "length" => 180_000, +            "type" => "Audio" +          } +        }) + +      assert activity.actor == user.ap_id + +      user = User.get_cached_by_id(user.id) +      assert user.info.note_count == 0 +    end + +    test "can be fetched into a timeline" do +      _listen_activity_1 = insert(:listen) +      _listen_activity_2 = insert(:listen) +      _listen_activity_3 = insert(:listen) + +      timeline = ActivityPub.fetch_activities([], %{"type" => ["Listen"]}) + +      assert length(timeline) == 3 +    end +  end +    describe "create activities" do      test "removes doubled 'to' recipients" do        user = insert(:user) diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index a35db71dc..2c6357fe6 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -177,6 +177,35 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do               end)      end +    test "it works for incoming listens" do +      data = %{ +        "@context" => "https://www.w3.org/ns/activitystreams", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "cc" => [], +        "type" => "Listen", +        "id" => "http://mastodon.example.org/users/admin/listens/1234/activity", +        "actor" => "http://mastodon.example.org/users/admin", +        "object" => %{ +          "type" => "Audio", +          "id" => "http://mastodon.example.org/users/admin/listens/1234", +          "attributedTo" => "http://mastodon.example.org/users/admin", +          "title" => "lain radio episode 1", +          "artist" => "lain", +          "album" => "lain radio", +          "length" => 180_000 +        } +      } + +      {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + +      object = Object.normalize(activity) + +      assert object.data["title"] == "lain radio episode 1" +      assert object.data["artist"] == "lain" +      assert object.data["album"] == "lain radio" +      assert object.data["length"] == 180_000 +    end +      test "it rewrites Note votes to Answers and increments vote counters on question activities" do        user = insert(:user) @@ -1190,6 +1219,20 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert is_nil(modified["bcc"])      end + +    test "it can handle Listen activities" do +      listen_activity = insert(:listen) + +      {:ok, modified} = Transmogrifier.prepare_outgoing(listen_activity.data) + +      assert modified["type"] == "Listen" + +      user = insert(:user) + +      {:ok, activity} = CommonAPI.listen(user, %{"title" => "lain radio episode 1"}) + +      {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) +    end    end    describe "user upgrade" do diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f28a66090..0f4a5eb25 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -510,4 +510,43 @@ defmodule Pleroma.Web.CommonAPITest do        assert {:error, "Already voted"} == CommonAPI.vote(other_user, object, [1])      end    end + +  describe "listen/2" do +    test "returns a valid activity" do +      user = insert(:user) + +      {:ok, activity} = +        CommonAPI.listen(user, %{ +          "title" => "lain radio episode 1", +          "album" => "lain radio", +          "artist" => "lain", +          "length" => 180_000 +        }) + +      object = Object.normalize(activity) + +      assert object.data["title"] == "lain radio episode 1" + +      assert Visibility.get_visibility(activity) == "public" +    end + +    test "respects visibility=private" do +      user = insert(:user) + +      {:ok, activity} = +        CommonAPI.listen(user, %{ +          "title" => "lain radio episode 1", +          "album" => "lain radio", +          "artist" => "lain", +          "length" => 180_000, +          "visibility" => "private" +        }) + +      object = Object.normalize(activity) + +      assert object.data["title"] == "lain radio episode 1" + +      assert Visibility.get_visibility(activity) == "private" +    end +  end  end diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index c17d0ef95..683132f8d 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -608,4 +608,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      assert status.visibility == "list"    end + +  test "successfully renders a Listen activity (pleroma extension)" do +    listen_activity = insert(:listen) + +    status = StatusView.render("listen.json", activity: listen_activity) + +    assert status.length == listen_activity.data["object"]["length"] +    assert status.title == listen_activity.data["object"]["title"] +  end  end diff --git a/test/web/pleroma_api/controllers/scrobble_controller_test.exs b/test/web/pleroma_api/controllers/scrobble_controller_test.exs new file mode 100644 index 000000000..881f8012c --- /dev/null +++ b/test/web/pleroma_api/controllers/scrobble_controller_test.exs @@ -0,0 +1,63 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do +  use Pleroma.Web.ConnCase + +  alias Pleroma.Web.CommonAPI +  import Pleroma.Factory + +  describe "POST /api/v1/pleroma/scrobble" do +    test "works correctly", %{conn: conn} do +      user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> post("/api/v1/pleroma/scrobble", %{ +          "title" => "lain radio episode 1", +          "artist" => "lain", +          "album" => "lain radio", +          "length" => "180000" +        }) + +      assert %{"title" => "lain radio episode 1"} = json_response(conn, 200) +    end +  end + +  describe "GET /api/v1/pleroma/accounts/:id/scrobbles" do +    test "works correctly", %{conn: conn} do +      user = insert(:user) + +      {:ok, _activity} = +        CommonAPI.listen(user, %{ +          "title" => "lain radio episode 1", +          "artist" => "lain", +          "album" => "lain radio" +        }) + +      {:ok, _activity} = +        CommonAPI.listen(user, %{ +          "title" => "lain radio episode 2", +          "artist" => "lain", +          "album" => "lain radio" +        }) + +      {:ok, _activity} = +        CommonAPI.listen(user, %{ +          "title" => "lain radio episode 3", +          "artist" => "lain", +          "album" => "lain radio" +        }) + +      conn = +        conn +        |> get("/api/v1/pleroma/accounts/#{user.id}/scrobbles") + +      result = json_response(conn, 200) + +      assert length(result) == 3 +    end +  end +end | 
