From 65ef18a7157f8cfcc494ad7a72ce083e79e38d26 Mon Sep 17 00:00:00 2001 From: dtluna Date: Wed, 12 Apr 2017 17:34:36 +0300 Subject: Add error messages for repeated follows and unfollows --- test/web/twitter_api/twitter_api_test.exs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index ad932131a..c1f5881b8 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -105,26 +105,31 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do test "Follow another user" do { :ok, user } = UserBuilder.insert - { :ok, following } = UserBuilder.insert(%{nickname: "guy"}) + { :ok, followed } = UserBuilder.insert(%{nickname: "guy"}) - {:ok, user, following, activity } = TwitterAPI.follow(user, following.id) + { :ok, user, followed, activity } = TwitterAPI.follow(user, followed.id) user = Repo.get(User, user.id) follow = Repo.get(Activity, activity.id) - assert user.following == [User.ap_followers(following)] + assert user.following == [User.ap_followers(followed)] assert follow == activity + + { :error, msg } = TwitterAPI.follow(user, followed.id) + assert msg == "Could not follow user: #{followed.nickname} is already on your list." end test "Unfollow another user" do - { :ok, following } = UserBuilder.insert(%{nickname: "guy"}) - { :ok, user } = UserBuilder.insert(%{following: [User.ap_followers(following)]}) + { :ok, followed } = UserBuilder.insert(%{nickname: "guy"}) + { :ok, user } = UserBuilder.insert(%{following: [User.ap_followers(followed)]}) - {:ok, user, _following } = TwitterAPI.unfollow(user, following.id) + { :ok, user, _followed } = TwitterAPI.unfollow(user, followed.id) user = Repo.get(User, user.id) assert user.following == [] + { :error, msg } = TwitterAPI.unfollow(user, followed.id) + assert msg == "Not subscribed!" end test "fetch statuses in a context using the conversation id" do -- cgit v1.2.3 From 18cd04ade576969b25e96733dddb8255fbf13a6d Mon Sep 17 00:00:00 2001 From: dtluna Date: Fri, 14 Apr 2017 16:09:13 +0300 Subject: Add user timeline --- test/web/twitter_api/twitter_api_test.exs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index e8853a910..558f26e74 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -96,6 +96,24 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do assert Enum.at(statuses, 1) == ActivityRepresenter.to_map(direct_activity, %{user: activity_user, mentioned: [user]}) end + test "fetch user's statuses" do + {:ok, user1} = UserBuilder.insert(%{ap_id: "some id"}) + {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2"}) + + {:ok, status1} = ActivityBuilder.insert(%{"id" => 1}, %{user: user1}) + {:ok, status2} = ActivityBuilder.insert(%{"id" => 2}, %{user: user2}) + + user1_statuses = TwitterAPI.fetch_user_statuses(user1, %{}) + + assert length(user1_statuses) == 1 + assert Enum.at(user1_statuses, 0) == ActivityRepresenter.to_map(status1, %{user: user1}) + + user2_statuses = TwitterAPI.fetch_user_statuses(user1, %{"screen_name" => user2.nickname }) + + assert length(user2_statuses) == 1 + assert Enum.at(user2_statuses, 0) == ActivityRepresenter.to_map(status2, %{user: user2}) + end + test "fetch a single status" do {:ok, activity} = ActivityBuilder.insert() {:ok, user} = UserBuilder.insert() -- cgit v1.2.3 From 4b4ece2c744dc23c5f4d2ef985fe858e23d880b1 Mon Sep 17 00:00:00 2001 From: dtluna Date: Sun, 16 Apr 2017 16:44:30 +0300 Subject: Add user timeline fetching without credentials --- test/web/twitter_api/twitter_api_test.exs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index cf2649817..bdad06d6e 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -102,19 +102,33 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do assert Enum.at(statuses, 1) == ActivityRepresenter.to_map(direct_activity, %{user: activity_user, mentioned: [user]}) end + test "get a user by params" do + user1_result = {:ok, user1} = UserBuilder.insert(%{ap_id: "some id", email: "test@pleroma"}) + {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2", email: "test2@pleroma"}) + + assert {:error, "You need to specify screen_name of user_id"} == TwitterAPI.get_user(nil, nil) + assert user1_result == TwitterAPI.get_user(nil, %{"user_id" => user1.id}) + assert user1_result == TwitterAPI.get_user(nil, %{"screen_name" => user1.nickname}) + assert user1_result == TwitterAPI.get_user(user1, nil) + assert user1_result == TwitterAPI.get_user(user2, %{"user_id" => user1.id}) + assert user1_result == TwitterAPI.get_user(user2, %{"screen_name" => user1.nickname}) + assert {:error, "No user with such screen_name"} == TwitterAPI.get_user(nil, %{"screen_name" => "Satan"}) + assert {:error, "No user with such user_id"} == TwitterAPI.get_user(nil, %{"user_id" => 666}) + end + test "fetch user's statuses" do - {:ok, user1} = UserBuilder.insert(%{ap_id: "some id"}) - {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2"}) + {:ok, user1} = UserBuilder.insert(%{ap_id: "some id", email: "test@pleroma"}) + {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2", email: "test2@pleroma"}) {:ok, status1} = ActivityBuilder.insert(%{"id" => 1}, %{user: user1}) {:ok, status2} = ActivityBuilder.insert(%{"id" => 2}, %{user: user2}) - user1_statuses = TwitterAPI.fetch_user_statuses(user1, %{}) + user1_statuses = TwitterAPI.fetch_user_statuses(user1, %{"actor_id" => user1.ap_id}) assert length(user1_statuses) == 1 assert Enum.at(user1_statuses, 0) == ActivityRepresenter.to_map(status1, %{user: user1}) - user2_statuses = TwitterAPI.fetch_user_statuses(user1, %{"screen_name" => user2.nickname }) + user2_statuses = TwitterAPI.fetch_user_statuses(user1, %{"actor_id" => user2.ap_id}) assert length(user2_statuses) == 1 assert Enum.at(user2_statuses, 0) == ActivityRepresenter.to_map(status2, %{user: user2}) -- cgit v1.2.3 From 63f04b314d67decefab3a53b43d04b0347adde13 Mon Sep 17 00:00:00 2001 From: dtluna Date: Sun, 16 Apr 2017 17:05:48 +0300 Subject: Fix typo --- test/web/twitter_api/twitter_api_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index bdad06d6e..2f7e77773 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -106,7 +106,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do user1_result = {:ok, user1} = UserBuilder.insert(%{ap_id: "some id", email: "test@pleroma"}) {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2", email: "test2@pleroma"}) - assert {:error, "You need to specify screen_name of user_id"} == TwitterAPI.get_user(nil, nil) + assert {:error, "You need to specify screen_name or user_id"} == TwitterAPI.get_user(nil, nil) assert user1_result == TwitterAPI.get_user(nil, %{"user_id" => user1.id}) assert user1_result == TwitterAPI.get_user(nil, %{"screen_name" => user1.nickname}) assert user1_result == TwitterAPI.get_user(user1, nil) -- cgit v1.2.3 From 470f5f7cd616852327706bae74bd1eddd653285f Mon Sep 17 00:00:00 2001 From: dtluna Date: Mon, 17 Apr 2017 16:31:19 +0300 Subject: Add user timeline spec test --- .../twitter_api/twitter_api_controller_test.exs | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index f9723dd9f..6f1788a58 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -114,6 +114,72 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do end end + describe "GET /statuses/user_timeline.json" do + setup [:valid_user] + test "without any params", %{conn: conn} do + conn = get(conn, "/api/statuses/user_timeline.json") + assert json_response(conn, 400) == %{"error" => "You need to specify screen_name or user_id"} + end + + test "with user_id", %{conn: conn} do + user = insert(:user) + {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user}) + + conn = get(conn, "/api/statuses/user_timeline.json", %{"user_id" => user.id}) + response = json_response(conn, 200) + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) + end + + test "with screen_name", %{conn: conn} do + user = insert(:user) + {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user}) + + conn = get(conn, "/api/statuses/user_timeline.json", %{"screen_name" => user.nickname}) + response = json_response(conn, 200) + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) + end + + test "with credentials", %{conn: conn, user: current_user} do + {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: current_user}) + conn = conn + |> with_credentials(current_user.nickname, "test") + |> get("/api/statuses/user_timeline.json") + + response = json_response(conn, 200) + + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: current_user}) + end + + test "with credentials with user_id", %{conn: conn, user: current_user} do + user = insert(:user) + {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user}) + conn = conn + |> with_credentials(current_user.nickname, "test") + |> get("/api/statuses/user_timeline.json", %{"user_id" => user.id}) + + response = json_response(conn, 200) + + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) + end + + test "with credentials screen_name", %{conn: conn, user: current_user} do + user = insert(:user) + {:ok, activity} = ActivityBuilder.insert(%{"id" => 1}, %{user: user}) + conn = conn + |> with_credentials(current_user.nickname, "test") + |> get("/api/statuses/user_timeline.json", %{"screen_name" => user.nickname}) + + response = json_response(conn, 200) + + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: user}) + end + end + describe "POST /friendships/create.json" do setup [:valid_user] test "without valid credentials", %{conn: conn} do -- cgit v1.2.3 From 3a56d7318fed2b808161c186ba9d7ced73cdf020 Mon Sep 17 00:00:00 2001 From: dtluna Date: Thu, 20 Apr 2017 13:53:53 +0300 Subject: Add statuses/mentions endpoint --- .../web/twitter_api/twitter_api_controller_test.exs | 21 +++++++++++++++++++++ test/web/twitter_api/twitter_api_test.exs | 11 +++++++++++ 2 files changed, 32 insertions(+) (limited to 'test') diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 8bf3fe107..e4ed6cd54 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -114,6 +114,27 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do end end + describe "GET /statuses/mentions.json" do + setup [:valid_user] + test "without valid credentials", %{conn: conn} do + conn = get conn, "/api/statuses/mentions.json" + assert json_response(conn, 403) == %{"error" => "Invalid credentials."} + end + + test "with credentials", %{conn: conn, user: current_user} do + {:ok, activity} = ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: current_user}) + + conn = conn + |> with_credentials(current_user.nickname, "test") + |> get("/api/statuses/mentions.json") + + response = json_response(conn, 200) + + assert length(response) == 1 + assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: current_user, mentioned: [current_user]}) + end + end + describe "GET /statuses/user_timeline.json" do setup [:valid_user] test "without any params", %{conn: conn} do diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 196822f99..273093eba 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -102,6 +102,17 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do assert Enum.at(statuses, 1) == ActivityRepresenter.to_map(direct_activity, %{user: direct_activity_user, mentioned: [user]}) end + test "fetch user's mentions" do + user = insert(:user) + {:ok, activity} = ActivityBuilder.insert(%{"to" => [user.ap_id]}) + activity_user = Repo.get_by(User, ap_id: activity.data["actor"]) + + statuses = TwitterAPI.fetch_mentions(user) + + assert length(statuses) == 1 + assert Enum.at(statuses, 0) == ActivityRepresenter.to_map(activity, %{user: activity_user, mentioned: [user]}) + end + test "get a user by params" do user1_result = {:ok, user1} = UserBuilder.insert(%{ap_id: "some id", email: "test@pleroma"}) {:ok, user2} = UserBuilder.insert(%{ap_id: "some other id", nickname: "testname2", email: "test2@pleroma"}) -- cgit v1.2.3 From 1e88f102c49fb0a41f17f2c7f5161237e28b8baf Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Fri, 21 Apr 2017 00:51:09 +0200 Subject: Fix specs, add some user info. --- .../representers/user_representer_test.exs | 21 ++++++++++++++++----- .../web/twitter_api/twitter_api_controller_test.exs | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) (limited to 'test') diff --git a/test/web/twitter_api/representers/user_representer_test.exs b/test/web/twitter_api/representers/user_representer_test.exs index 913d1322c..1e92c5190 100644 --- a/test/web/twitter_api/representers/user_representer_test.exs +++ b/test/web/twitter_api/representers/user_representer_test.exs @@ -19,7 +19,18 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenterTest do assert represented["profile_image_url"] == image end - test "A user", %{user: user} do + test "A user" do + note_activity = insert(:note_activity) + user = User.get_cached_by_ap_id(note_activity.data["actor"]) + follower = insert(:user) + second_follower = insert(:user) + + User.follow(follower, user) + User.follow(second_follower, user) + User.follow(user, follower) + + user = Repo.get!(User, user.id) + image = "https://placehold.it/48x48" represented = %{ @@ -29,9 +40,9 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenterTest do "description" => user.bio, # Fake fields "favourites_count" => 0, - "statuses_count" => 0, - "friends_count" => 0, - "followers_count" => 0, + "statuses_count" => 1, + "friends_count" => 1, + "followers_count" => 2, "profile_image_url" => image, "profile_image_url_https" => image, "profile_image_url_profile_size" => image, @@ -55,7 +66,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenterTest do "favourites_count" => 0, "statuses_count" => 0, "friends_count" => 0, - "followers_count" => 0, + "followers_count" => 1, "profile_image_url" => image, "profile_image_url_https" => image, "profile_image_url_profile_size" => image, diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index e4ed6cd54..0761d0566 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -367,7 +367,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do end defp valid_user(_context) do - { :ok, user } = UserBuilder.insert(%{nickname: "lambda", ap_id: "lambda"}) + user = insert(:user) [user: user] end -- cgit v1.2.3