logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 2a744cdff8a94d92683ab1a16f89bb51112006f8
parent: f1f79c0dca9198e2a427f988b60e4222f8afda57
Author: Lain Iwakura <lain@soykaf.club>
Date:   Tue, 19 Dec 2017 16:15:45 +0100

Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into develop

Diffstat:

Mlib/pleroma/web/router.ex4++--
Mlib/pleroma/web/twitter_api/twitter_api_controller.ex10++++++----
Mtest/web/twitter_api/twitter_api_controller_test.exs32+++++++++++++++++++++++++++++++-
3 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -147,6 +147,8 @@ defmodule Pleroma.Web.Router do get "/qvitter/statuses/user_timeline", TwitterAPI.Controller, :user_timeline get "/users/show", TwitterAPI.Controller, :show_user + get "/statuses/followers", TwitterAPI.Controller, :followers + get "/statuses/friends", TwitterAPI.Controller, :friends get "/statuses/show/:id", TwitterAPI.Controller, :fetch_status get "/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation @@ -193,8 +195,6 @@ defmodule Pleroma.Web.Router do post "/qvitter/update_avatar", TwitterAPI.Controller, :update_avatar - get "/statuses/followers", TwitterAPI.Controller, :followers - get "/statuses/friends", TwitterAPI.Controller, :friends get "/friends/ids", TwitterAPI.Controller, :friends_ids get "/friendships/no_retweets/ids", TwitterAPI.Controller, :empty_array diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -263,16 +263,18 @@ defmodule Pleroma.Web.TwitterAPI.Controller do end end - def followers(%{assigns: %{user: user}} = conn, _params) do - with {:ok, followers} <- User.get_followers(user) do + def followers(conn, params) do + with {:ok, user} <- TwitterAPI.get_user(conn.assigns.user, params), + {:ok, followers} <- User.get_followers(user) do render(conn, UserView, "index.json", %{users: followers, for: user}) else _e -> bad_request_reply(conn, "Can't get followers") end end - def friends(%{assigns: %{user: user}} = conn, _params) do - with {:ok, friends} <- User.get_friends(user) do + def friends(conn, params) do + with {:ok, user} <- TwitterAPI.get_user(conn.assigns.user, params), + {:ok, friends} <- User.get_friends(user) do render(conn, UserView, "index.json", %{users: friends, for: user}) else _e -> bad_request_reply(conn, "Can't get friends") diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs @@ -518,7 +518,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do end describe "GET /api/statuses/friends" do - test "it returns a user's friends", %{conn: conn} do + test "it returns the logged in user's friends", %{conn: conn} do user = insert(:user) followed_one = insert(:user) followed_two = insert(:user) @@ -533,6 +533,36 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do assert MapSet.equal?(MapSet.new(json_response(conn, 200)), MapSet.new(UserView.render("index.json", %{users: [followed_one, followed_two], for: user}))) end + + test "it returns a given user's friends with user_id", %{conn: conn} do + user = insert(:user) + followed_one = insert(:user) + followed_two = insert(:user) + not_followed = insert(:user) + + {:ok, user} = User.follow(user, followed_one) + {:ok, user} = User.follow(user, followed_two) + + conn = conn + |> get("/api/statuses/friends", %{"user_id" => user.id}) + + assert MapSet.equal?(MapSet.new(json_response(conn, 200)), MapSet.new(UserView.render("index.json", %{users: [followed_one, followed_two], for: user}))) + end + + test "it returns a given user's friends with screen_name", %{conn: conn} do + user = insert(:user) + followed_one = insert(:user) + followed_two = insert(:user) + not_followed = insert(:user) + + {:ok, user} = User.follow(user, followed_one) + {:ok, user} = User.follow(user, followed_two) + + conn = conn + |> get("/api/statuses/friends", %{"screen_name" => user.nickname}) + + assert MapSet.equal?(MapSet.new(json_response(conn, 200)), MapSet.new(UserView.render("index.json", %{users: [followed_one, followed_two], for: user}))) + end end describe "GET /friends/ids" do