X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fbbs%2Fhandler_test.exs;h=eb716486ece45594e44571d81f71f9c8e0c3155b;hb=9c672ecbb5d4477cd16d2139a2cb66d3923ac5c8;hp=ee5f194bba7c9b3a93113c912528044ee20bf2f6;hpb=10fdc080a0048a4776abb4bd1b5aa22d8c65e2da;p=akkoma diff --git a/test/bbs/handler_test.exs b/test/bbs/handler_test.exs index ee5f194bb..eb716486e 100644 --- a/test/bbs/handler_test.exs +++ b/test/bbs/handler_test.exs @@ -1,11 +1,19 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.BBS.HandlerTest do use Pleroma.DataCase + alias Pleroma.Activity alias Pleroma.BBS.Handler - alias Pleroma.Web.CommonAPI + alias Pleroma.Object + alias Pleroma.Repo alias Pleroma.User + alias Pleroma.Web.CommonAPI import ExUnit.CaptureIO import Pleroma.Factory + import Ecto.Query test "getting the home timeline" do user = insert(:user) @@ -13,8 +21,8 @@ defmodule Pleroma.BBS.HandlerTest do {:ok, user} = User.follow(user, followed) - {:ok, _first} = CommonAPI.post(user, %{"status" => "hey"}) - {:ok, _second} = CommonAPI.post(followed, %{"status" => "hello"}) + {:ok, _first} = CommonAPI.post(user, %{status: "hey"}) + {:ok, _second} = CommonAPI.post(followed, %{status: "hello"}) output = capture_io(fn -> @@ -27,4 +35,55 @@ defmodule Pleroma.BBS.HandlerTest do assert output =~ "hey" assert output =~ "hello" end + + test "posting" do + user = insert(:user) + + output = + capture_io(fn -> + Handler.handle_command(%{user: user}, "p this is a test post") + end) + + assert output =~ "Posted" + + activity = + Repo.one( + from(a in Activity, + where: fragment("?->>'type' = ?", a.data, "Create") + ) + ) + + assert activity.actor == user.ap_id + object = Object.normalize(activity) + assert object.data["content"] == "this is a test post" + end + + test "replying" do + user = insert(:user) + another_user = insert(:user) + + {:ok, activity} = CommonAPI.post(another_user, %{status: "this is a test post"}) + activity_object = Object.normalize(activity) + + output = + capture_io(fn -> + Handler.handle_command(%{user: user}, "r #{activity.id} this is a reply") + end) + + assert output =~ "Replied" + + reply = + Repo.one( + from(a in Activity, + where: fragment("?->>'type' = ?", a.data, "Create"), + where: a.actor == ^user.ap_id + ) + ) + + assert reply.actor == user.ap_id + + reply_object_data = Object.normalize(reply).data + assert reply_object_data["content"] == "this is a reply" + assert reply_object_data["inReplyTo"] == activity_object.data["id"] + end end