Add basic search.
[akkoma] / test / web / mastodon_api / mastodon_api_controller_test.exs
index 25b4f2b37796972bd3a511b30897ad5a77176d7c..1bef1a1fdc902462f0e60093e2529569cb6c5eb2 100644 (file)
@@ -240,4 +240,96 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
 
     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