Browse Source

TimelineController: Keys are atoms now.

Closes #2078
Closes #2070
message-debug-mode
lain 3 years ago
parent
commit
cfc99fe05c
2 changed files with 44 additions and 5 deletions
  1. +4
    -5
      lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
  2. +40
    -0
      test/web/mastodon_api/controllers/timeline_controller_test.exs

+ 4
- 5
lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex View File

@@ -182,11 +182,10 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do
with %Pleroma.List{title: _title, following: following} <- Pleroma.List.get(id, user) do
params =
params
|> Map.new(fn {key, value} -> {to_string(key), value} end)
|> Map.put("type", "Create")
|> Map.put("blocking_user", user)
|> Map.put("user", user)
|> Map.put("muting_user", user)
|> Map.put(:type, "Create")
|> Map.put(:blocking_user, user)
|> Map.put(:user, user)
|> Map.put(:muting_user, user)

# we must filter the following list for the user to avoid leaking statuses the user
# does not actually have permission to see (for more info, peruse security issue #270).


+ 40
- 0
test/web/mastodon_api/controllers/timeline_controller_test.exs View File

@@ -333,6 +333,46 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do
describe "list" do
setup do: oauth_access(["read:lists"])

test "does not contain retoots", %{user: user, conn: conn} do
other_user = insert(:user)
{:ok, activity_one} = CommonAPI.post(user, %{status: "Marisa is cute."})
{:ok, activity_two} = CommonAPI.post(other_user, %{status: "Marisa is stupid."})
{:ok, _} = CommonAPI.repeat(activity_one.id, other_user)

{:ok, list} = Pleroma.List.create("name", user)
{:ok, list} = Pleroma.List.follow(list, other_user)

conn = get(conn, "/api/v1/timelines/list/#{list.id}")

assert [%{"id" => id}] = json_response_and_validate_schema(conn, :ok)

assert id == to_string(activity_two.id)
end

test "works with pagination", %{user: user, conn: conn} do
other_user = insert(:user)
{:ok, list} = Pleroma.List.create("name", user)
{:ok, list} = Pleroma.List.follow(list, other_user)

Enum.each(1..30, fn i ->
CommonAPI.post(other_user, %{status: "post number #{i}"})
end)

res =
get(conn, "/api/v1/timelines/list/#{list.id}?limit=1")
|> json_response_and_validate_schema(:ok)

assert length(res) == 1

[first] = res

res =
get(conn, "/api/v1/timelines/list/#{list.id}?max_id=#{first["id"]}&limit=30")
|> json_response_and_validate_schema(:ok)

assert length(res) == 29
end

test "list timeline", %{user: user, conn: conn} do
other_user = insert(:user)
{:ok, _activity_one} = CommonAPI.post(user, %{status: "Marisa is cute."})


Loading…
Cancel
Save