X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Fmastodon_api%2Fmastodon_api_controller_test.exs;h=1bef1a1fdc902462f0e60093e2529569cb6c5eb2;hb=9f0a2a714b498edfbacc638fa79e06e3a8dc4d04;hp=e87430d3fd0ca10b00897d36ea21262f983f4383;hpb=7616b202ea6ab9cd2db107eea59aba1393f4f996;p=akkoma diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e87430d3f..1bef1a1fd 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -181,4 +181,155 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do assert id == note_two.id end end + + describe "user relationships" do + test "returns the relationships for the current user", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + {:ok, user} = User.follow(user, other_user) + + conn = conn + |> assign(:user, user) + |> get("/api/v1/accounts/relationships", %{"id" => [other_user.id]}) + + assert [relationship] = json_response(conn, 200) + + assert other_user.id == relationship["id"] + end + end + + test "account fetching", %{conn: conn} do + user = insert(:user) + + conn = conn + |> get("/api/v1/accounts/#{user.id}") + + assert %{"id" => id} = json_response(conn, 200) + assert id == user.id + + conn = build_conn() + |> get("/api/v1/accounts/-1") + + assert %{"error" => "Can't find user"} = json_response(conn, 404) + end + + test "media upload", %{conn: conn} do + file = %Plug.Upload{content_type: "image/jpg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg"} + + user = insert(:user) + + conn = conn + |> assign(:user, user) + |> post("/api/v1/media", %{"file" => file}) + + assert media = json_response(conn, 200) + + assert media["type"] == "image" + end + + test "hashtag timeline", %{conn: conn} do + following = insert(:user) + + {: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") + + assert [%{"id" => id}] = json_response(conn, 200) + + assert id == activity.id + end + + test "getting followers", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + {:ok, user} = User.follow(user, other_user) + + conn = conn + |> get("/api/v1/accounts/#{other_user.id}/followers") + + assert [%{"id" => id}] = json_response(conn, 200) + assert id = user.id + end + + test "getting following", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + {:ok, user} = User.follow(user, other_user) + + conn = conn + |> get("/api/v1/accounts/#{user.id}/following") + + assert [%{"id" => id}] = json_response(conn, 200) + assert id = other_user.id + end + + test "following / unfollowing a user", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + + conn = conn + |> assign(:user, user) + |> post("/api/v1/accounts/#{other_user.id}/follow") + + assert %{"id" => id, "following" => true} = json_response(conn, 200) + + user = Repo.get(User, user.id) + conn = build_conn() + |> assign(:user, user) + |> post("/api/v1/accounts/#{other_user.id}/unfollow") + + assert %{"id" => id, "following" => false} = json_response(conn, 200) + end + + test "unimplemented block/mute endpoints" do + user = insert(:user) + other_user = insert(:user) + + ["block", "unblock", "mute", "unmute"] + |> Enum.each(fn(endpoint) -> + conn = build_conn() + |> assign(:user, user) + |> post("/api/v1/accounts/#{other_user.id}/#{endpoint}") + + assert %{"id" => id} = json_response(conn, 200) + assert id == other_user.id + end) + end + + test "unimplemented mutes, follow_requests, blocks, domain blocks" do + user = insert(:user) + + ["blocks", "domain_blocks", "mutes", "follow_requests"] + |> Enum.each(fn(endpoint) -> + conn = build_conn() + |> assign(:user, user) + |> get("/api/v1/#{endpoint}") + + assert [] = json_response(conn, 200) + end) + end + + test "search", %{conn: conn} do + user = insert(:user) + user_two = insert(:user, %{nickname: "shp@shitposter.club"}) + user_three = insert(:user, %{nickname: "shp@heldscal.la", name: "I love 2hu"}) + + {:ok, activity} = CommonAPI.post(user, %{"status" => "This is about 2hu"}) + {:ok, _} = CommonAPI.post(user_two, %{"status" => "This isn't"}) + + conn = conn + |> get("/api/v1/search", %{"q" => "2hu"}) + + assert results = json_response(conn, 200) + + [account] = results["accounts"] + assert account["id"] == user_three.id + + assert results["hashtags"] == [] + + [status] = results["statuses"] + assert status["id"] == activity.id + end end