75 lines
2.3 KiB
Elixir
75 lines
2.3 KiB
Elixir
|
# Pleroma: A lightweight social networking server
|
||
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
defmodule Pleroma.Web.Preload.Providers.TimelineTest do
|
||
|
use Pleroma.DataCase
|
||
|
import Pleroma.Factory
|
||
|
|
||
|
alias Pleroma.Web.CommonAPI
|
||
|
alias Pleroma.Web.Preload.Providers.Timelines
|
||
|
|
||
|
@public_url :"/api/v1/timelines/public"
|
||
|
|
||
|
describe "unauthenticated timeliness when restricted" do
|
||
|
setup do
|
||
|
svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines])
|
||
|
Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{local: true, federated: true})
|
||
|
|
||
|
on_exit(fn ->
|
||
|
Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config)
|
||
|
end)
|
||
|
|
||
|
:ok
|
||
|
end
|
||
|
|
||
|
test "return nothing" do
|
||
|
tl_data = Timelines.generate_terms(%{})
|
||
|
|
||
|
refute Map.has_key?(tl_data, "/api/v1/timelines/public")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "unauthenticated timeliness when unrestricted" do
|
||
|
setup do
|
||
|
svd_config = Pleroma.Config.get([:restrict_unauthenticated, :timelines])
|
||
|
|
||
|
Pleroma.Config.put([:restrict_unauthenticated, :timelines], %{
|
||
|
local: false,
|
||
|
federated: false
|
||
|
})
|
||
|
|
||
|
on_exit(fn ->
|
||
|
Pleroma.Config.put([:restrict_unauthenticated, :timelines], svd_config)
|
||
|
end)
|
||
|
|
||
|
{:ok, user: insert(:user)}
|
||
|
end
|
||
|
|
||
|
test "returns the timeline when not restricted" do
|
||
|
assert Timelines.generate_terms(%{})
|
||
|
|> Map.has_key?(@public_url)
|
||
|
end
|
||
|
|
||
|
test "returns public items", %{user: user} do
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 1!"})
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 2!"})
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 3!"})
|
||
|
|
||
|
assert Timelines.generate_terms(%{})
|
||
|
|> Map.fetch!(@public_url)
|
||
|
|> Enum.count() == 3
|
||
|
end
|
||
|
|
||
|
test "does not return non-public items", %{user: user} do
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 1!", "visibility" => "unlisted"})
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 2!", "visibility" => "direct"})
|
||
|
{:ok, _} = CommonAPI.post(user, %{"status" => "it's post 3!"})
|
||
|
|
||
|
assert Timelines.generate_terms(%{})
|
||
|
|> Map.fetch!(@public_url)
|
||
|
|> Enum.count() == 1
|
||
|
end
|
||
|
end
|
||
|
end
|