Merge branch 'develop' into feature/activitypub

This commit is contained in:
lain 2018-02-12 10:24:15 +01:00
commit b331cb449a
36 changed files with 139 additions and 115 deletions

View file

@ -21,4 +21,4 @@ before_script:
unit-testing: unit-testing:
stage: test stage: test
script: script:
- MIX_ENV=test mix test - MIX_ENV=test mix test --trace

View file

@ -32,7 +32,7 @@ defmodule Pleroma.Stats do
domain_count = Enum.count(peers) domain_count = Enum.count(peers)
status_query = from(u in User.local_user_query, status_query = from(u in User.local_user_query,
select: fragment("sum((?->>'note_count')::int)", u.info)) select: fragment("sum((?->>'note_count')::int)", u.info))
status_count = Repo.one(status_query) |> IO.inspect status_count = Repo.one(status_query)
user_count = Repo.aggregate(User.local_user_query, :count, :id) user_count = Repo.aggregate(User.local_user_query, :count, :id)
Agent.update(__MODULE__, fn _ -> Agent.update(__MODULE__, fn _ ->
{peers, %{domain_count: domain_count, status_count: status_count, user_count: user_count}} {peers, %{domain_count: domain_count, status_count: status_count, user_count: user_count}}

View file

@ -10,6 +10,8 @@ defmodule Pleroma.Web.OStatus.FeedRepresenter do
h = fn(str) -> [to_charlist(str)] end h = fn(str) -> [to_charlist(str)] end
last_activity = List.last(activities)
entries = activities entries = activities
|> Enum.map(fn(activity) -> |> Enum.map(fn(activity) ->
{:entry, ActivityRepresenter.to_simple_form(activity, user)} {:entry, ActivityRepresenter.to_simple_form(activity, user)}
@ -32,7 +34,15 @@ defmodule Pleroma.Web.OStatus.FeedRepresenter do
{:link, [rel: 'salmon', href: h.(OStatus.salmon_path(user))], []}, {:link, [rel: 'salmon', href: h.(OStatus.salmon_path(user))], []},
{:link, [rel: 'self', href: h.(OStatus.feed_path(user)), type: 'application/atom+xml'], []}, {:link, [rel: 'self', href: h.(OStatus.feed_path(user)), type: 'application/atom+xml'], []},
{:author, UserRepresenter.to_simple_form(user)}, {:author, UserRepresenter.to_simple_form(user)},
] ++ entries ] ++
if last_activity do
[{:link, [rel: 'next',
href: to_charlist(OStatus.feed_path(user)) ++ '?max_id=' ++ to_charlist(last_activity.id),
type: 'application/atom+xml'], []}]
else
[]
end
++ entries
}] }]
end end
end end

View file

@ -19,7 +19,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do
end end
end end
def feed(conn, %{"nickname" => nickname}) do def feed(conn, %{"nickname" => nickname} = params) do
user = User.get_cached_by_nickname(nickname) user = User.get_cached_by_nickname(nickname)
query = from activity in Activity, query = from activity in Activity,
where: fragment("?->>'actor' = ?", activity.data, ^user.ap_id), where: fragment("?->>'actor' = ?", activity.data, ^user.ap_id),
@ -27,6 +27,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do
order_by: [desc: :id] order_by: [desc: :id]
activities = query activities = query
|> restrict_max(params)
|> Repo.all |> Repo.all
response = user response = user
@ -56,6 +57,11 @@ defmodule Pleroma.Web.OStatus.OStatusController do
end end
end end
defp restrict_max(query, %{"max_id" => max_id}) do
from activity in query, where: activity.id < ^max_id
end
defp restrict_max(query, _), do: query
def salmon_incoming(conn, _) do def salmon_incoming(conn, _) do
{:ok, body, _conn} = read_body(conn) {:ok, body, _conn} = read_body(conn)
{:ok, doc} = decode_or_retry(body) {:ok, doc} = decode_or_retry(body)

View file

@ -1 +1 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Pleroma</title><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link href=/static/css/app.b3deb1dd44970d86cc6b368f36fd09d9.css rel=stylesheet></head><body style="display: none"><div id=app></div><script type=text/javascript src=/static/js/manifest.15dfe939c498cca9840c.js></script><script type=text/javascript src=/static/js/vendor.409059e5a814f448f5bc.js></script><script type=text/javascript src=/static/js/app.30c01d7540d43b760f03.js></script></body></html> <!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Pleroma</title><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link href=/static/css/app.b3deb1dd44970d86cc6b368f36fd09d9.css rel=stylesheet></head><body style="display: none"><div id=app></div><script type=text/javascript src=/static/js/manifest.f8637fb66085728d1fbd.js></script><script type=text/javascript src=/static/js/vendor.6ceb4478f308829a2829.js></script><script type=text/javascript src=/static/js/app.23c1437e78f655a31c4a.js></script></body></html>

View file

@ -0,0 +1,4 @@
<div style="margin-left:12px; margin-right:12px">
<p>This is a <a href="https://pleroma.social" target="_blank">Pleroma</a> instance.</p>
</div>

View file

@ -3,5 +3,6 @@
"background": "/static/bg.jpg", "background": "/static/bg.jpg",
"logo": "/static/logo.png", "logo": "/static/logo.png",
"defaultPath": "/main/all", "defaultPath": "/main/all",
"chatDisabled": false "chatDisabled": false,
"showInstanceSpecificPanel": false
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,2 +0,0 @@
!function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r=window.webpackJsonp;window.webpackJsonp=function(o,c){for(var p,l,s=0,i=[];s<o.length;s++)l=o[s],a[l]&&i.push.apply(i,a[l]),a[l]=0;for(p in c)Object.prototype.hasOwnProperty.call(c,p)&&(e[p]=c[p]);for(r&&r(o,c);i.length;)i.shift().call(null,t);if(c[0])return n[0]=0,t(0)};var n={},a={0:0};t.e=function(e,r){if(0===a[e])return r.call(null,t);if(void 0!==a[e])a[e].push(r);else{a[e]=[r];var n=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.src=t.p+"static/js/"+e+"."+{1:"409059e5a814f448f5bc",2:"30c01d7540d43b760f03"}[e]+".js",n.appendChild(o)}},t.m=e,t.c=n,t.p="/"}([]);
//# sourceMappingURL=manifest.15dfe939c498cca9840c.js.map

View file

@ -0,0 +1,2 @@
!function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={exports:{},id:r,loaded:!1};return e[r].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var r=window.webpackJsonp;window.webpackJsonp=function(c,o){for(var p,l,s=0,i=[];s<c.length;s++)l=c[s],n[l]&&i.push.apply(i,n[l]),n[l]=0;for(p in o)Object.prototype.hasOwnProperty.call(o,p)&&(e[p]=o[p]);for(r&&r(c,o);i.length;)i.shift().call(null,t);if(o[0])return a[0]=0,t(0)};var a={},n={0:0};t.e=function(e,r){if(0===n[e])return r.call(null,t);if(void 0!==n[e])n[e].push(r);else{n[e]=[r];var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.src=t.p+"static/js/"+e+"."+{1:"6ceb4478f308829a2829",2:"23c1437e78f655a31c4a"}[e]+".js",a.appendChild(c)}},t.m=e,t.c=a,t.p="/"}([]);
//# sourceMappingURL=manifest.f8637fb66085728d1fbd.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -50,7 +50,7 @@ defmodule Pleroma.NotificationTest do
{:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
{:ok, [notification]} = Notification.create_notifications(activity) {:ok, [notification]} = Notification.create_notifications(activity)
{:error, notification} = Notification.get(user, notification.id) {:error, _notification} = Notification.get(user, notification.id)
end end
end end
@ -72,7 +72,7 @@ defmodule Pleroma.NotificationTest do
{:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"}) {:ok, activity} = TwitterAPI.create_status(user, %{"status" => "hey @#{other_user.nickname}"})
{:ok, [notification]} = Notification.create_notifications(activity) {:ok, [notification]} = Notification.create_notifications(activity)
{:error, notification} = Notification.dismiss(user, notification.id) {:error, _notification} = Notification.dismiss(user, notification.id)
end end
end end

View file

@ -16,7 +16,7 @@ defmodule Pleroma.ObjectTest do
cs = Object.change(%Object{}, %{data: %{id: object.data["id"]}}) cs = Object.change(%Object{}, %{data: %{id: object.data["id"]}})
assert cs.valid? assert cs.valid?
{:error, result} = Repo.insert(cs) {:error, _result} = Repo.insert(cs)
end end
end end
end end

View file

@ -0,0 +1,6 @@
defmodule Pleroma.Web.OStatusMock do
import Pleroma.Factory
def handle_incoming(_doc) do
insert(:note_activity)
end
end

View file

@ -326,7 +326,7 @@ defmodule Pleroma.UserTest do
assert [addressed] == User.get_recipients_from_activity(activity) assert [addressed] == User.get_recipients_from_activity(activity)
{:ok, user} = User.follow(user, actor) {:ok, user} = User.follow(user, actor)
{:ok, user_two} = User.follow(user_two, actor) {:ok, _user_two} = User.follow(user_two, actor)
recipients = User.get_recipients_from_activity(activity) recipients = User.get_recipients_from_activity(activity)
assert length(recipients) == 2 assert length(recipients) == 2
assert user in recipients assert user in recipients

View file

@ -123,7 +123,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
describe "public fetch activities" do describe "public fetch activities" do
test "retrieves public activities" do test "retrieves public activities" do
activities = ActivityPub.fetch_public_activities _activities = ActivityPub.fetch_public_activities
%{public: public} = ActivityBuilder.public_and_non_public %{public: public} = ActivityBuilder.public_and_non_public

View file

@ -6,6 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
alias Pleroma.Web.{OStatus, CommonAPI} alias Pleroma.Web.{OStatus, CommonAPI}
import Pleroma.Factory import Pleroma.Factory
import ExUnit.CaptureLog
test "the home timeline", %{conn: conn} do test "the home timeline", %{conn: conn} do
user = insert(:user) user = insert(:user)
@ -31,23 +32,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test "the public timeline", %{conn: conn} do test "the public timeline", %{conn: conn} do
following = insert(:user) following = insert(:user)
{:ok, _activity} = TwitterAPI.create_status(following, %{"status" => "test"}) capture_log fn ->
{:ok, [_activity]} = OStatus.fetch_activity_from_url("https://shitposter.club/notice/2827873") {:ok, _activity} = TwitterAPI.create_status(following, %{"status" => "test"})
{:ok, [_activity]} = OStatus.fetch_activity_from_url("https://shitposter.club/notice/2827873")
conn = conn conn = conn
|> get("/api/v1/timelines/public", %{"local" => "False"}) |> get("/api/v1/timelines/public", %{"local" => "False"})
assert length(json_response(conn, 200)) == 2 assert length(json_response(conn, 200)) == 2
conn = build_conn() conn = build_conn()
|> get("/api/v1/timelines/public", %{"local" => "True"}) |> get("/api/v1/timelines/public", %{"local" => "True"})
assert [%{"content" => "test"}] = json_response(conn, 200) assert [%{"content" => "test"}] = json_response(conn, 200)
conn = build_conn() conn = build_conn()
|> get("/api/v1/timelines/public", %{"local" => "1"}) |> get("/api/v1/timelines/public", %{"local" => "1"})
assert [%{"content" => "test"}] = json_response(conn, 200) assert [%{"content" => "test"}] = json_response(conn, 200)
end
end end
test "posting a status", %{conn: conn} do test "posting a status", %{conn: conn} do
@ -144,7 +147,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
other_user = insert(:user) other_user = insert(:user)
{:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
{:ok, [notification]} = Notification.create_notifications(activity) {:ok, [_notification]} = Notification.create_notifications(activity)
conn = conn conn = conn
|> assign(:user, user) |> assign(:user, user)
@ -190,7 +193,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
other_user = insert(:user) other_user = insert(:user)
{:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"}) {:ok, activity} = TwitterAPI.create_status(other_user, %{"status" => "hi @#{user.nickname}"})
{:ok, [notification]} = Notification.create_notifications(activity) {:ok, [_notification]} = Notification.create_notifications(activity)
conn = conn conn = conn
|> assign(:user, user) |> assign(:user, user)
@ -338,15 +341,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test "hashtag timeline", %{conn: conn} do test "hashtag timeline", %{conn: conn} do
following = insert(:user) following = insert(:user)
{:ok, activity} = TwitterAPI.create_status(following, %{"status" => "test #2hu"}) capture_log fn ->
{:ok, [_activity]} = OStatus.fetch_activity_from_url("https://shitposter.club/notice/2827873") {:ok, activity} = TwitterAPI.create_status(following, %{"status" => "test #2hu"})
{:ok, [_activity]} = OStatus.fetch_activity_from_url("https://shitposter.club/notice/2827873")
conn = conn
|> get("/api/v1/timelines/tag/2hu")
conn = conn assert [%{"id" => id}] = json_response(conn, 200)
|> get("/api/v1/timelines/tag/2hu")
assert [%{"id" => id}] = json_response(conn, 200) assert id == to_string(activity.id)
end
assert id == to_string(activity.id)
end end
test "getting followers", %{conn: conn} do test "getting followers", %{conn: conn} do
@ -381,14 +385,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> assign(:user, user) |> assign(:user, user)
|> post("/api/v1/accounts/#{other_user.id}/follow") |> post("/api/v1/accounts/#{other_user.id}/follow")
assert %{"id" => id, "following" => true} = json_response(conn, 200) assert %{"id" => _id, "following" => true} = json_response(conn, 200)
user = Repo.get(User, user.id) user = Repo.get(User, user.id)
conn = build_conn() conn = build_conn()
|> assign(:user, user) |> assign(:user, user)
|> post("/api/v1/accounts/#{other_user.id}/unfollow") |> post("/api/v1/accounts/#{other_user.id}/unfollow")
assert %{"id" => id, "following" => false} = json_response(conn, 200) assert %{"id" => _id, "following" => false} = json_response(conn, 200)
user = Repo.get(User, user.id) user = Repo.get(User, user.id)
conn = build_conn() conn = build_conn()
@ -407,14 +411,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> assign(:user, user) |> assign(:user, user)
|> post("/api/v1/accounts/#{other_user.id}/block") |> post("/api/v1/accounts/#{other_user.id}/block")
assert %{"id" => id, "blocking" => true} = json_response(conn, 200) assert %{"id" => _id, "blocking" => true} = json_response(conn, 200)
user = Repo.get(User, user.id) user = Repo.get(User, user.id)
conn = build_conn() conn = build_conn()
|> assign(:user, user) |> assign(:user, user)
|> post("/api/v1/accounts/#{other_user.id}/unblock") |> post("/api/v1/accounts/#{other_user.id}/unblock")
assert %{"id" => id, "blocking" => false} = json_response(conn, 200) assert %{"id" => _id, "blocking" => false} = json_response(conn, 200)
end end
test "getting a list of blocks", %{conn: conn} do test "getting a list of blocks", %{conn: conn} do
@ -461,7 +465,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test "account search", %{conn: conn} do test "account search", %{conn: conn} do
user = insert(:user) user = insert(:user)
user_two = insert(:user, %{nickname: "shp@shitposter.club"}) _user_two = insert(:user, %{nickname: "shp@shitposter.club"})
user_three = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"}) user_three = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"})
conn = conn conn = conn
@ -495,12 +499,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end end
test "search fetches remote statuses", %{conn: conn} do test "search fetches remote statuses", %{conn: conn} do
conn = conn capture_log fn ->
|> get("/api/v1/search", %{"q" => "https://shitposter.club/notice/2827873"}) conn = conn
assert results = json_response(conn, 200) |> get("/api/v1/search", %{"q" => "https://shitposter.club/notice/2827873"})
assert results = json_response(conn, 200)
[status] = results["statuses"] [status] = results["statuses"]
assert status["uri"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" assert status["uri"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
end
end end
test "search fetches remote accounts", %{conn: conn} do test "search fetches remote accounts", %{conn: conn} do
@ -530,7 +536,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end end
describe "updating credentials" do describe "updating credentials" do
test "updates the user's bio" do test "updates the user's bio", %{conn: conn} do
user = insert(:user) user = insert(:user)
conn = conn conn = conn
@ -541,7 +547,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert user["note"] == "I drink #cofe" assert user["note"] == "I drink #cofe"
end end
test "updates the user's name" do test "updates the user's name", %{conn: conn} do
user = insert(:user) user = insert(:user)
conn = conn conn = conn
@ -552,7 +558,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert user["display_name"] == "markorepairs" assert user["display_name"] == "markorepairs"
end end
test "updates the user's avatar" do test "updates the user's avatar", %{conn: conn} do
user = insert(:user) user = insert(:user)
new_avatar = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} new_avatar = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"}
@ -565,7 +571,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert user["avatar"] != "https://placehold.it/48x48" assert user["avatar"] != "https://placehold.it/48x48"
end end
test "updates the user's banner" do test "updates the user's banner", %{conn: conn} do
user = insert(:user) user = insert(:user)
new_header = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} new_header = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"}
@ -579,7 +585,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end end
end end
test "get instance information" do test "get instance information", %{conn: conn} do
insert(:user, %{local: true}) insert(:user, %{local: true})
user = insert(:user, %{local: true}) user = insert(:user, %{local: true})
insert(:user, %{local: false}) insert(:user, %{local: false})

View file

@ -96,7 +96,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
user = insert(:user) user = insert(:user)
object = Object.get_cached_by_ap_id(note.data["object"]["id"]) object = Object.get_cached_by_ap_id(note.data["object"]["id"])
{:ok, announce, object} = ActivityPub.announce(user, object) {:ok, announce, _object} = ActivityPub.announce(user, object)
announce = Repo.get(Activity, announce.id) announce = Repo.get(Activity, announce.id)

View file

@ -33,6 +33,7 @@ defmodule Pleroma.Web.OStatus.FeedRepresenterTest do
<author> <author>
#{user_xml} #{user_xml}
</author> </author>
<link rel="next" href="#{OStatus.feed_path(user)}?max_id=#{note_activity.id}" type="application/atom+xml" />
<entry> <entry>
#{entry_xml} #{entry_xml}
</entry> </entry>

View file

@ -12,7 +12,7 @@ defmodule Pleroma.Web.OStatus.DeleteHandlingTest do
user = insert(:user) user = insert(:user)
object = Object.get_by_ap_id(note.data["object"]["id"]) object = Object.get_by_ap_id(note.data["object"]["id"])
{:ok, like, object} = Pleroma.Web.ActivityPub.ActivityPub.like(user, object) {:ok, like, _object} = Pleroma.Web.ActivityPub.ActivityPub.like(user, object)
incoming = File.read!("test/fixtures/delete.xml") incoming = File.read!("test/fixtures/delete.xml")
|> String.replace("tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status", note.data["object"]["id"]) |> String.replace("tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status", note.data["object"]["id"])

View file

@ -84,10 +84,3 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
assert response(conn, 200) assert response(conn, 200)
end end
end end
defmodule Pleroma.Web.OStatusMock do
import Pleroma.Factory
def handle_incoming(_doc) do
insert(:note_activity)
end
end

View file

@ -4,6 +4,7 @@ defmodule Pleroma.Web.OStatusTest do
alias Pleroma.Web.XML alias Pleroma.Web.XML
alias Pleroma.{Object, Repo, User, Activity} alias Pleroma.{Object, Repo, User, Activity}
import Pleroma.Factory import Pleroma.Factory
import ExUnit.CaptureLog
test "don't insert create notes twice" do test "don't insert create notes twice" do
incoming = File.read!("test/fixtures/incoming_note_activity.xml") incoming = File.read!("test/fixtures/incoming_note_activity.xml")
@ -91,7 +92,7 @@ defmodule Pleroma.Web.OStatusTest do
test "handle incoming retweets - Mastodon, with CW" do test "handle incoming retweets - Mastodon, with CW" do
incoming = File.read!("test/fixtures/cw_retweet.xml") incoming = File.read!("test/fixtures/cw_retweet.xml")
{:ok, [[activity, retweeted_activity]]} = OStatus.handle_incoming(incoming) {:ok, [[_activity, retweeted_activity]]} = OStatus.handle_incoming(incoming)
assert retweeted_activity.data["object"]["summary"] == "Hey." assert retweeted_activity.data["object"]["summary"] == "Hey."
end end
@ -168,19 +169,21 @@ defmodule Pleroma.Web.OStatusTest do
end end
test "handle incoming favorites - GS, websub" do test "handle incoming favorites - GS, websub" do
incoming = File.read!("test/fixtures/favorite.xml") capture_log fn ->
{:ok, [[activity, favorited_activity]]} = OStatus.handle_incoming(incoming) incoming = File.read!("test/fixtures/favorite.xml")
{:ok, [[activity, favorited_activity]]} = OStatus.handle_incoming(incoming)
assert activity.data["type"] == "Like" assert activity.data["type"] == "Like"
assert activity.data["actor"] == "https://social.heldscal.la/user/23211" assert activity.data["actor"] == "https://social.heldscal.la/user/23211"
assert activity.data["object"] == favorited_activity.data["object"]["id"] assert activity.data["object"] == favorited_activity.data["object"]["id"]
assert activity.data["id"] == "tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00" assert activity.data["id"] == "tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00"
refute activity.local refute activity.local
assert favorited_activity.data["type"] == "Create" assert favorited_activity.data["type"] == "Create"
assert favorited_activity.data["actor"] == "https://shitposter.club/user/1" assert favorited_activity.data["actor"] == "https://shitposter.club/user/1"
assert favorited_activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" assert favorited_activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
refute favorited_activity.local refute favorited_activity.local
end
end end
test "handle conversation references" do test "handle conversation references" do
@ -335,11 +338,13 @@ defmodule Pleroma.Web.OStatusTest do
describe "fetching a status by it's HTML url" do describe "fetching a status by it's HTML url" do
test "it builds a missing status from an html url" do test "it builds a missing status from an html url" do
url = "https://shitposter.club/notice/2827873" capture_log fn ->
{:ok, [activity] } = OStatus.fetch_activity_from_url(url) url = "https://shitposter.club/notice/2827873"
{:ok, [activity] } = OStatus.fetch_activity_from_url(url)
assert activity.data["actor"] == "https://shitposter.club/user/1" assert activity.data["actor"] == "https://shitposter.club/user/1"
assert activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" assert activity.data["object"]["id"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment"
end
end end
test "it works for atom notes, too" do test "it works for atom notes, too" do

View file

@ -35,7 +35,7 @@ defmodule Pleroma.Web.Salmon.SalmonTest do
end end
test "it decodes a friendica public key" do test "it decodes a friendica public key" do
key = Salmon.decode_key(@magickey_friendica) _key = Salmon.decode_key(@magickey_friendica)
end end
test "returns a public and private key from a pem" do test "returns a public and private key from a pem" do
@ -90,7 +90,7 @@ defmodule Pleroma.Web.Salmon.SalmonTest do
user = Repo.get_by(User, ap_id: activity.data["actor"]) user = Repo.get_by(User, ap_id: activity.data["actor"])
{:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user)
poster = fn (url, data, headers, options) -> poster = fn (url, _data, _headers, _options) ->
assert url == "http://example.org/salmon" assert url == "http://example.org/salmon"
end end
Salmon.publish(user, activity, poster) Salmon.publish(user, activity, poster)

View file

@ -147,7 +147,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do
follower = insert(:user) follower = insert(:user)
followed = insert(:user) followed = insert(:user)
{:ok, follow} = ActivityPub.follow(follower, followed) {:ok, _follow} = ActivityPub.follow(follower, followed)
{:ok, unfollow} = ActivityPub.unfollow(follower, followed) {:ok, unfollow} = ActivityPub.unfollow(follower, followed)
map = ActivityRepresenter.to_map(unfollow, %{user: follower}) map = ActivityRepresenter.to_map(unfollow, %{user: follower})

View file

@ -504,7 +504,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
user = insert(:user) user = insert(:user)
follower_one = insert(:user) follower_one = insert(:user)
follower_two = insert(:user) follower_two = insert(:user)
not_follower = insert(:user) _not_follower = insert(:user)
{:ok, follower_one} = User.follow(follower_one, user) {:ok, follower_one} = User.follow(follower_one, user)
{:ok, follower_two} = User.follow(follower_two, user) {:ok, follower_two} = User.follow(follower_two, user)
@ -522,7 +522,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
user = insert(:user) user = insert(:user)
followed_one = insert(:user) followed_one = insert(:user)
followed_two = insert(:user) followed_two = insert(:user)
not_followed = insert(:user) _not_followed = insert(:user)
{:ok, user} = User.follow(user, followed_one) {:ok, user} = User.follow(user, followed_one)
{:ok, user} = User.follow(user, followed_two) {:ok, user} = User.follow(user, followed_two)
@ -538,7 +538,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
user = insert(:user) user = insert(:user)
followed_one = insert(:user) followed_one = insert(:user)
followed_two = insert(:user) followed_two = insert(:user)
not_followed = insert(:user) _not_followed = insert(:user)
{:ok, user} = User.follow(user, followed_one) {:ok, user} = User.follow(user, followed_one)
{:ok, user} = User.follow(user, followed_two) {:ok, user} = User.follow(user, followed_two)
@ -553,7 +553,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
user = insert(:user) user = insert(:user)
followed_one = insert(:user) followed_one = insert(:user)
followed_two = insert(:user) followed_two = insert(:user)
not_followed = insert(:user) _not_followed = insert(:user)
{:ok, user} = User.follow(user, followed_one) {:ok, user} = User.follow(user, followed_one)
{:ok, user} = User.follow(user, followed_two) {:ok, user} = User.follow(user, followed_two)
@ -570,7 +570,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
user = insert(:user) user = insert(:user)
followed_one = insert(:user) followed_one = insert(:user)
followed_two = insert(:user) followed_two = insert(:user)
not_followed = insert(:user) _not_followed = insert(:user)
{:ok, user} = User.follow(user, followed_one) {:ok, user} = User.follow(user, followed_one)
{:ok, user} = User.follow(user, followed_two) {:ok, user} = User.follow(user, followed_two)
@ -585,7 +585,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
end end
describe "POST /api/account/update_profile.json" do describe "POST /api/account/update_profile.json" do
test "it updates a user's profile" do test "it updates a user's profile", %{conn: conn} do
user = insert(:user) user = insert(:user)
conn = conn conn = conn
@ -627,7 +627,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
end end
describe "GET /api/statusnet/tags/timeline/:tag.json" do describe "GET /api/statusnet/tags/timeline/:tag.json" do
test "it returns the tags timeline" do test "it returns the tags timeline", %{conn: conn} do
user = insert(:user) user = insert(:user)
user_two = insert(:user, %{nickname: "shp@shitposter.club"}) user_two = insert(:user, %{nickname: "shp@shitposter.club"})

View file

@ -247,7 +247,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
user = insert(:user) user = insert(:user)
User.block(user, unblocked) User.block(user, unblocked)
{:ok, user, unblocked} = TwitterAPI.unblock(user, %{"user_id" => unblocked.id}) {:ok, user, _unblocked} = TwitterAPI.unblock(user, %{"user_id" => unblocked.id})
assert user.info["blocks"] == [] assert user.info["blocks"] == []
end end
@ -256,7 +256,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
user = insert(:user) user = insert(:user)
User.block(user, unblocked) User.block(user, unblocked)
{:ok, user, unblocked} = TwitterAPI.unblock(user, %{"screen_name" => unblocked.nickname}) {:ok, user, _unblocked} = TwitterAPI.unblock(user, %{"screen_name" => unblocked.nickname})
assert user.info["blocks"] == [] assert user.info["blocks"] == []
end end

View file

@ -130,7 +130,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
assert represented == UserView.render("show.json", %{user: follower, for: user}) assert represented == UserView.render("show.json", %{user: follower, for: user})
end end
test "A blocked user for the blocker", %{user: user} do test "A blocked user for the blocker" do
user = insert(:user) user = insert(:user)
blocker = insert(:user) blocker = insert(:user)
User.block(blocker, user) User.block(blocker, user)

View file

@ -42,8 +42,7 @@ defmodule Pleroma.Web.WebFingerTest do
test "it works for friendica" do test "it works for friendica" do
user = "lain@squeet.me" user = "lain@squeet.me"
{:ok, data} = WebFinger.finger(user) {:ok, _data} = WebFinger.finger(user)
end end
test "it gets the xrd endpoint" do test "it gets the xrd endpoint" do

View file

@ -74,10 +74,3 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do
assert length(Repo.all(Activity)) == 0 assert length(Repo.all(Activity)) == 0
end end
end end
defmodule Pleroma.Web.OStatusMock do
import Pleroma.Factory
def handle_incoming(_doc) do
insert(:note_activity)
end
end

View file

@ -174,7 +174,7 @@ defmodule Pleroma.Web.WebsubTest do
signed = Websub.sign("secret", "text") signed = Websub.sign("secret", "text")
assert signed == "B8392C23690CCF871F37EC270BE1582DEC57A503" |> String.downcase assert signed == "B8392C23690CCF871F37EC270BE1582DEC57A503" |> String.downcase
signed = Websub.sign("secret", [[""], ['']]) _signed = Websub.sign("secret", [[""], ['']])
end end
describe "renewing subscriptions" do describe "renewing subscriptions" do
@ -184,7 +184,7 @@ defmodule Pleroma.Web.WebsubTest do
still_good = insert(:websub_client_subscription, %{valid_until: NaiveDateTime.add(now, 2 * day), topic: "http://example.org/still_good", state: "accepted"}) still_good = insert(:websub_client_subscription, %{valid_until: NaiveDateTime.add(now, 2 * day), topic: "http://example.org/still_good", state: "accepted"})
needs_refresh = insert(:websub_client_subscription, %{valid_until: NaiveDateTime.add(now, day - 100), topic: "http://example.org/needs_refresh", state: "accepted"}) needs_refresh = insert(:websub_client_subscription, %{valid_until: NaiveDateTime.add(now, day - 100), topic: "http://example.org/needs_refresh", state: "accepted"})
refresh = Websub.refresh_subscriptions() _refresh = Websub.refresh_subscriptions()
assert still_good == Repo.get(WebsubClientSubscription, still_good.id) assert still_good == Repo.get(WebsubClientSubscription, still_good.id)
refute needs_refresh == Repo.get(WebsubClientSubscription, needs_refresh.id) refute needs_refresh == Repo.get(WebsubClientSubscription, needs_refresh.id)