X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fweb%2Ftwitter_api%2Fviews%2Fuser_view_test.exs;h=9f8bf4cdcfda9fe5cd92ff31d4bb4c241b6163e1;hb=c2dcd767cf4abaa88da946e12ca643840b65e184;hp=de2cd3d3019961e1d3900d07bd150262724a2c71;hpb=069daf644d984c479eae6483595a3307e923950b;p=akkoma diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index de2cd3d30..9f8bf4cdc 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -2,7 +2,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do use Pleroma.DataCase alias Pleroma.User - alias Pleroma.Web.TwitterAPI.{UserView, Utils} + alias Pleroma.Web.TwitterAPI.UserView + alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Builders.UserBuilder import Pleroma.Factory @@ -14,7 +15,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do test "A user with an avatar object", %{user: user} do image = "image" - user = %{ user | avatar: %{ "url" => [%{"href" => image}] }} + user = %{user | avatar: %{"url" => [%{"href" => image}]}} represented = UserView.render("show.json", %{user: user}) assert represented["profile_image_url"] == image end @@ -22,23 +23,25 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do test "A user" do note_activity = insert(:note_activity) user = User.get_cached_by_ap_id(note_activity.data["actor"]) + {:ok, user} = User.update_note_count(user) follower = insert(:user) second_follower = insert(:user) User.follow(follower, user) User.follow(second_follower, user) User.follow(user, follower) + {:ok, user} = User.update_follower_count(user) + Cachex.put(:user_cache, "user_info:#{user.id}", User.user_info(Repo.get!(User, user.id))) - user = Repo.get!(User, user.id) - - image = "https://placehold.it/48x48" + image = "http://localhost:4001/images/avi.png" + banner = "http://localhost:4001/images/banner.png" represented = %{ "id" => user.id, "name" => user.name, "screen_name" => user.nickname, "description" => HtmlSanitizeEx.strip_tags(user.bio), - "created_at" => user.inserted_at |> Utils.format_naive_asctime, + "created_at" => user.inserted_at |> Utils.format_naive_asctime(), "favourites_count" => 0, "statuses_count" => 1, "friends_count" => 1, @@ -48,8 +51,15 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "profile_image_url_profile_size" => image, "profile_image_url_original" => image, "following" => false, - "rights" => %{}, - "statusnet_profile_url" => user.ap_id + "follows_you" => false, + "statusnet_blocking" => false, + "rights" => %{ + "delete_others_notice" => false + }, + "statusnet_profile_url" => user.ap_id, + "cover_photo" => banner, + "background_image" => nil, + "is_local" => true } assert represented == UserView.render("show.json", %{user: user}) @@ -57,13 +67,16 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do test "A user for a given other follower", %{user: user} do {:ok, follower} = UserBuilder.insert(%{following: [User.ap_followers(user)]}) - image = "https://placehold.it/48x48" + {:ok, user} = User.update_follower_count(user) + image = "http://localhost:4001/images/avi.png" + banner = "http://localhost:4001/images/banner.png" + represented = %{ "id" => user.id, "name" => user.name, "screen_name" => user.nickname, "description" => HtmlSanitizeEx.strip_tags(user.bio), - "created_at" => user.inserted_at |> Utils.format_naive_asctime, + "created_at" => user.inserted_at |> Utils.format_naive_asctime(), "favourites_count" => 0, "statuses_count" => 0, "friends_count" => 0, @@ -73,10 +86,97 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "profile_image_url_profile_size" => image, "profile_image_url_original" => image, "following" => true, - "rights" => %{}, - "statusnet_profile_url" => user.ap_id + "follows_you" => false, + "statusnet_blocking" => false, + "rights" => %{ + "delete_others_notice" => false + }, + "statusnet_profile_url" => user.ap_id, + "cover_photo" => banner, + "background_image" => nil, + "is_local" => true } assert represented == UserView.render("show.json", %{user: user, for: follower}) end + + test "A user that follows you", %{user: user} do + follower = insert(:user) + {:ok, follower} = User.follow(follower, user) + {:ok, user} = User.update_follower_count(user) + image = "http://localhost:4001/images/avi.png" + banner = "http://localhost:4001/images/banner.png" + + represented = %{ + "id" => follower.id, + "name" => follower.name, + "screen_name" => follower.nickname, + "description" => HtmlSanitizeEx.strip_tags(follower.bio), + "created_at" => follower.inserted_at |> Utils.format_naive_asctime(), + "favourites_count" => 0, + "statuses_count" => 0, + "friends_count" => 1, + "followers_count" => 0, + "profile_image_url" => image, + "profile_image_url_https" => image, + "profile_image_url_profile_size" => image, + "profile_image_url_original" => image, + "following" => false, + "follows_you" => true, + "statusnet_blocking" => false, + "rights" => %{ + "delete_others_notice" => false + }, + "statusnet_profile_url" => follower.ap_id, + "cover_photo" => banner, + "background_image" => nil, + "is_local" => true + } + + assert represented == UserView.render("show.json", %{user: follower, for: user}) + end + + test "a user that is a moderator" do + user = insert(:user, %{info: %{"is_moderator" => true}}) + represented = UserView.render("show.json", %{user: user, for: user}) + + assert represented["rights"]["delete_others_notice"] + end + + test "A blocked user for the blocker" do + user = insert(:user) + blocker = insert(:user) + User.block(blocker, user) + image = "http://localhost:4001/images/avi.png" + banner = "http://localhost:4001/images/banner.png" + + represented = %{ + "id" => user.id, + "name" => user.name, + "screen_name" => user.nickname, + "description" => HtmlSanitizeEx.strip_tags(user.bio), + "created_at" => user.inserted_at |> Utils.format_naive_asctime(), + "favourites_count" => 0, + "statuses_count" => 0, + "friends_count" => 0, + "followers_count" => 0, + "profile_image_url" => image, + "profile_image_url_https" => image, + "profile_image_url_profile_size" => image, + "profile_image_url_original" => image, + "following" => false, + "follows_you" => false, + "statusnet_blocking" => true, + "rights" => %{ + "delete_others_notice" => false + }, + "statusnet_profile_url" => user.ap_id, + "cover_photo" => banner, + "background_image" => nil, + "is_local" => true + } + + blocker = Repo.get(User, blocker.id) + assert represented == UserView.render("show.json", %{user: user, for: blocker}) + end end