Fix more specs.

This commit is contained in:
lain 2018-02-25 17:48:31 +01:00
parent d3b0167854
commit 4ea2a41014
8 changed files with 24 additions and 19 deletions

View File

@ -136,7 +136,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
tags = activity.data["object"]["tag"] || [] tags = activity.data["object"]["tag"] || []
possibly_sensitive = activity.data["object"]["sensitive"] || Enum.member?(tags, "nsfw") possibly_sensitive = activity.data["object"]["sensitive"] || Enum.member?(tags, "nsfw")
tags = if possibly_sensitive, do: ["nsfw" | tags], else: tags tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
summary = activity.data["object"]["summary"] summary = activity.data["object"]["summary"]
content = if !!summary and summary != "" do content = if !!summary and summary != "" do

View File

@ -44,7 +44,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
def fetch_user_statuses(user, opts \\ %{}) do def fetch_user_statuses(user, opts \\ %{}) do
opts = opts opts = opts
|> Map.put("type", ["Create", "Announce", "Follow"]) |> Map.put("type", ["Create", "Announce", "Follow"])
ActivityPub.fetch_activities([], opts) ActivityPub.fetch_public_activities(opts)
|> activities_to_statuses(%{for: user}) |> activities_to_statuses(%{for: user})
end end

1
test/fixtures/avatar_data_uri vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -8,9 +8,11 @@ defmodule Pleroma.Builders.ActivityBuilder do
"id" => Pleroma.Web.ActivityPub.Utils.generate_object_id, "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id,
"actor" => user.ap_id, "actor" => user.ap_id,
"to" => ["https://www.w3.org/ns/activitystreams#Public"], "to" => ["https://www.w3.org/ns/activitystreams#Public"],
"type" => "Create",
"object" => %{ "object" => %{
"type" => "Note", "type" => "Note",
"content" => "test" "content" => "test",
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
} }
} }
Map.merge(activity, data) Map.merge(activity, data)
@ -23,7 +25,7 @@ defmodule Pleroma.Builders.ActivityBuilder do
def insert_list(times, data \\ %{}, opts \\ %{}) do def insert_list(times, data \\ %{}, opts \\ %{}) do
Enum.map(1..times, fn (n) -> Enum.map(1..times, fn (n) ->
{:ok, activity} = insert(data) {:ok, activity} = insert(data, opts)
activity activity
end) end)
end end
@ -32,7 +34,7 @@ defmodule Pleroma.Builders.ActivityBuilder do
user = Pleroma.Factory.insert(:user) user = Pleroma.Factory.insert(:user)
public = build(%{"id" => 1}, %{user: user}) public = build(%{"id" => 1}, %{user: user})
non_public = build(%{"id" => 2, "to" => []}, %{user: user}) non_public = build(%{"id" => 2, "to" => [user.follower_address]}, %{user: user})
{:ok, public} = ActivityPub.insert(public) {:ok, public} = ActivityPub.insert(public)
{:ok, non_public} = ActivityPub.insert(non_public) {:ok, non_public} = ActivityPub.insert(non_public)

File diff suppressed because one or more lines are too long

View File

@ -75,17 +75,17 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do
date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601 date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601
{:ok, convo_object} = Object.context_mapping("2hu") |> Repo.insert {:ok, convo_object} = Object.context_mapping("2hu") |> Repo.insert
to = [
User.ap_followers(user),
"https://www.w3.org/ns/activitystreams#Public",
mentioned_user.ap_id
]
activity = %Activity{ activity = %Activity{
id: 1, id: 1,
data: %{ data: %{
"type" => "Create", "type" => "Create",
"id" => "id", "id" => "id",
"to" => [ "to" => to,
User.ap_followers(user),
"https://www.w3.org/ns/activitystreams#Public",
mentioned_user.ap_id
],
"actor" => User.ap_id(user), "actor" => User.ap_id(user),
"object" => %{ "object" => %{
"published" => date, "published" => date,
@ -108,7 +108,8 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do
"published" => date, "published" => date,
"context" => "2hu" "context" => "2hu"
}, },
local: false local: false,
recipients: to
} }
expected_html = "<span>2hu</span><br />alert('YAY')Some <img height='32px' width='32px' alt='2hu' title='2hu' src='corndog.png' /> content mentioning <a href=\"#{mentioned_user.ap_id}\">@shp</a>" expected_html = "<span>2hu</span><br />alert('YAY')Some <img height='32px' width='32px' alt='2hu' title='2hu' src='corndog.png' /> content mentioning <a href=\"#{mentioned_user.ap_id}\">@shp</a>"
@ -134,7 +135,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do
"favorited" => false, "favorited" => false,
"repeated" => false, "repeated" => false,
"external_url" => "some url", "external_url" => "some url",
"tags" => ["content", "mentioning", "nsfw"], "tags" => ["nsfw", "content", "mentioning"],
"activity_type" => "post", "activity_type" => "post",
"possibly_sensitive" => true, "possibly_sensitive" => true,
"uri" => activity.data["object"]["id"] "uri" => activity.data["object"]["id"]

View File

@ -218,6 +218,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
test "with user_id", %{conn: conn} do test "with user_id", %{conn: conn} do
user = insert(:user) user = insert(:user)
{:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user}) {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user})
|> IO.inspect
conn = get(conn, "/api/statuses/user_timeline.json", %{"user_id" => user.id}) conn = get(conn, "/api/statuses/user_timeline.json", %{"user_id" => user.id})
response = json_response(conn, 200) response = json_response(conn, 200)
@ -376,9 +377,10 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
end end
test "with credentials", %{conn: conn, user: current_user} do test "with credentials", %{conn: conn, user: current_user} do
avatar_image = File.read!("test/fixtures/avatar_data_uri")
conn = conn conn = conn
|> with_credentials(current_user.nickname, "test") |> with_credentials(current_user.nickname, "test")
|> post("/api/qvitter/update_avatar.json", %{img: Pleroma.Web.ActivityPub.ActivityPubTest.data_uri}) |> post("/api/qvitter/update_avatar.json", %{img: avatar_image})
current_user = Repo.get(User, current_user.id) current_user = Repo.get(User, current_user.id)
assert is_map(current_user.avatar) assert is_map(current_user.avatar)

View File

@ -38,9 +38,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert get_in(activity.data, ["object", "type"]) == "Note" assert get_in(activity.data, ["object", "type"]) == "Note"
assert get_in(activity.data, ["object", "actor"]) == user.ap_id assert get_in(activity.data, ["object", "actor"]) == user.ap_id
assert get_in(activity.data, ["actor"]) == user.ap_id assert get_in(activity.data, ["actor"]) == user.ap_id
assert Enum.member?(get_in(activity.data, ["to"]), User.ap_followers(user)) assert Enum.member?(get_in(activity.data, ["cc"]), User.ap_followers(user))
assert Enum.member?(get_in(activity.data, ["to"]), "https://www.w3.org/ns/activitystreams#Public") assert Enum.member?(get_in(activity.data, ["to"]), "https://www.w3.org/ns/activitystreams#Public")
assert Enum.member?(get_in(activity.data, ["to"]), "shp") assert Enum.member?(get_in(activity.data, ["cc"]), "shp")
assert activity.local == true assert activity.local == true
assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} = activity.data["object"]["emoji"] assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} = activity.data["object"]["emoji"]
@ -80,7 +80,6 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
assert get_in(reply.data, ["object", "context"]) == get_in(activity.data, ["object", "context"]) assert get_in(reply.data, ["object", "context"]) == get_in(activity.data, ["object", "context"])
assert get_in(reply.data, ["object", "inReplyTo"]) == get_in(activity.data, ["object", "id"]) assert get_in(reply.data, ["object", "inReplyTo"]) == get_in(activity.data, ["object", "id"])
assert get_in(reply.data, ["object", "inReplyToStatusId"]) == activity.id assert get_in(reply.data, ["object", "inReplyToStatusId"]) == activity.id
assert Enum.member?(get_in(reply.data, ["to"]), user.ap_id)
end end
test "fetch public statuses, excluding remote ones." do test "fetch public statuses, excluding remote ones." do
@ -99,7 +98,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
%{ public: activity, user: user } = ActivityBuilder.public_and_non_public %{ public: activity, user: user } = ActivityBuilder.public_and_non_public
insert(:note_activity, %{local: false}) insert(:note_activity, %{local: false})
follower = insert(:user, following: [User.ap_followers(user)]) follower = insert(:user, following: [user.follower_address])
statuses = TwitterAPI.fetch_public_and_external_statuses(follower) statuses = TwitterAPI.fetch_public_and_external_statuses(follower)