diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 26 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 9 | ||||
| -rw-r--r-- | test/web/mastodon_api/account_view_test.exs | 22 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_test.exs | 66 | ||||
| -rw-r--r-- | test/web/twitter_api/views/user_view_test.exs | 32 | 
5 files changed, 152 insertions, 3 deletions
| diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index bbf89136b..3ed7be402 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -62,6 +62,32 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do      end    end +  describe "/users/:nickname/outbox" do +    test "it returns a note activity in a collection", %{conn: conn} do +      note_activity = insert(:note_activity) +      user = User.get_cached_by_ap_id(note_activity.data["actor"]) + +      conn = +        conn +        |> put_req_header("accept", "application/activity+json") +        |> get("/users/#{user.nickname}/outbox") + +      assert response(conn, 200) =~ note_activity.data["object"]["content"] +    end + +    test "it returns an announce activity in a collection", %{conn: conn} do +      announce_activity = insert(:announce_activity) +      user = User.get_cached_by_ap_id(announce_activity.data["actor"]) + +      conn = +        conn +        |> put_req_header("accept", "application/activity+json") +        |> get("/users/#{user.nickname}/outbox") + +      assert response(conn, 200) =~ announce_activity.data["object"] +    end +  end +    describe "/users/:nickname/followers" do      test "it returns the followers in a collection", %{conn: conn} do        user = insert(:user) diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 838ae169d..e455da39f 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -112,6 +112,15 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do                 "<p><span class=\"h-card\"><a href=\"http://localtesting.pleroma.lol/users/lain\" class=\"u-url mention\">@<span>lain</span></a></span></p>"      end +    test "it works for incoming notices with to/cc not being an array (kroeg)" do +      data = File.read!("test/fixtures/kroeg-post-activity.json") |> Poison.decode!() + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["object"]["content"] == +               "<p>henlo from my Psion netBook</p><p>message sent from my Psion netBook</p>" +    end +      test "it works for incoming follow requests" do        user = insert(:user) diff --git a/test/web/mastodon_api/account_view_test.exs b/test/web/mastodon_api/account_view_test.exs index b93418b3f..8bf194e6b 100644 --- a/test/web/mastodon_api/account_view_test.exs +++ b/test/web/mastodon_api/account_view_test.exs @@ -5,10 +5,21 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do    alias Pleroma.User    test "Represent a user account" do +    source_data = %{ +      "tag" => [ +        %{ +          "type" => "Emoji", +          "icon" => %{"url" => "/file.png"}, +          "name" => ":karjalanpiirakka:" +        } +      ] +    } +      user =        insert(:user, %{ -        info: %{"note_count" => 5, "follower_count" => 3}, +        info: %{"note_count" => 5, "follower_count" => 3, "source_data" => source_data},          nickname: "shp@shitposter.club", +        name: ":karjalanpiirakka: shp",          inserted_at: ~N[2017-08-15 15:47:06.597036]        }) @@ -28,7 +39,14 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        avatar_static: "http://localhost:4001/images/avi.png",        header: "http://localhost:4001/images/banner.png",        header_static: "http://localhost:4001/images/banner.png", -      emojis: [], +      emojis: [ +        %{ +          "static_url" => "/file.png", +          "url" => "/file.png", +          "shortcode" => "karjalanpiirakka", +          "visible_in_picker" => false +        } +      ],        fields: [],        source: %{          note: "", diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 06c1ba6ec..6486540f8 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -2,7 +2,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do    use Pleroma.DataCase    alias Pleroma.Builders.UserBuilder    alias Pleroma.Web.TwitterAPI.{TwitterAPI, UserView} -  alias Pleroma.{Activity, User, Object, Repo} +  alias Pleroma.{Activity, User, Object, Repo, UserInviteToken}    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.TwitterAPI.ActivityView @@ -257,6 +257,70 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do               UserView.render("show.json", %{user: fetched_user})    end +  @moduletag skip: "needs 'registrations_open: false' in config" +  test "it registers a new user via invite token and returns the user." do +    {:ok, token} = UserInviteToken.create_token() + +    data = %{ +      "nickname" => "vinny", +      "email" => "pasta@pizza.vs", +      "fullname" => "Vinny Vinesauce", +      "bio" => "streamer", +      "password" => "hiptofbees", +      "confirm" => "hiptofbees", +      "token" => token.token +    } + +    {:ok, user} = TwitterAPI.register_user(data) + +    fetched_user = Repo.get_by(User, nickname: "vinny") +    token = Repo.get_by(UserInviteToken, token: token.token) + +    assert token.used == true + +    assert UserView.render("show.json", %{user: user}) == +             UserView.render("show.json", %{user: fetched_user}) +  end + +  @moduletag skip: "needs 'registrations_open: false' in config" +  test "it returns an error if invalid token submitted" do +    data = %{ +      "nickname" => "GrimReaper", +      "email" => "death@reapers.afterlife", +      "fullname" => "Reaper Grim", +      "bio" => "Your time has come", +      "password" => "scythe", +      "confirm" => "scythe", +      "token" => "DudeLetMeInImAFairy" +    } + +    {:error, msg} = TwitterAPI.register_user(data) + +    assert msg == "Invalid token" +    refute Repo.get_by(User, nickname: "GrimReaper") +  end + +  @moduletag skip: "needs 'registrations_open: false' in config" +  test "it returns an error if expired token submitted" do +    {:ok, token} = UserInviteToken.create_token() +    UserInviteToken.mark_as_used(token.token) + +    data = %{ +      "nickname" => "GrimReaper", +      "email" => "death@reapers.afterlife", +      "fullname" => "Reaper Grim", +      "bio" => "Your time has come", +      "password" => "scythe", +      "confirm" => "scythe", +      "token" => token.token +    } + +    {:error, msg} = TwitterAPI.register_user(data) + +    assert msg == "Expired token" +    refute Repo.get_by(User, nickname: "GrimReaper") +  end +    test "it returns the error on registration problems" do      data = %{        "nickname" => "lain", diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index 49f73c2fe..fefb6bdcc 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -20,6 +20,30 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do      assert represented["profile_image_url"] == image    end +  test "A user with emoji in username", %{user: user} do +    expected = +      "<img height='32px' width='32px' alt='karjalanpiirakka' title='karjalanpiirakka' src='/file.png' /> man" + +    user = %{ +      user +      | info: %{ +          "source_data" => %{ +            "tag" => [ +              %{ +                "type" => "Emoji", +                "icon" => %{"url" => "/file.png"}, +                "name" => ":karjalanpiirakka:" +              } +            ] +          } +        } +    } + +    user = %{user | name: ":karjalanpiirakka: man"} +    represented = UserView.render("show.json", %{user: user}) +    assert represented["name_html"] == expected +  end +    test "A user" do      note_activity = insert(:note_activity)      user = User.get_cached_by_ap_id(note_activity.data["actor"]) @@ -40,7 +64,9 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "id" => user.id,        "name" => user.name,        "screen_name" => user.nickname, +      "name_html" => user.name,        "description" => HtmlSanitizeEx.strip_tags(user.bio), +      "description_html" => HtmlSanitizeEx.strip_tags(user.bio),        "created_at" => user.inserted_at |> Utils.format_naive_asctime(),        "favourites_count" => 0,        "statuses_count" => 1, @@ -77,7 +103,9 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "id" => user.id,        "name" => user.name,        "screen_name" => user.nickname, +      "name_html" => user.name,        "description" => HtmlSanitizeEx.strip_tags(user.bio), +      "description_html" => HtmlSanitizeEx.strip_tags(user.bio),        "created_at" => user.inserted_at |> Utils.format_naive_asctime(),        "favourites_count" => 0,        "statuses_count" => 0, @@ -115,7 +143,9 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "id" => follower.id,        "name" => follower.name,        "screen_name" => follower.nickname, +      "name_html" => follower.name,        "description" => HtmlSanitizeEx.strip_tags(follower.bio), +      "description_html" => HtmlSanitizeEx.strip_tags(follower.bio),        "created_at" => follower.inserted_at |> Utils.format_naive_asctime(),        "favourites_count" => 0,        "statuses_count" => 0, @@ -160,7 +190,9 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do        "id" => user.id,        "name" => user.name,        "screen_name" => user.nickname, +      "name_html" => user.name,        "description" => HtmlSanitizeEx.strip_tags(user.bio), +      "description_html" => HtmlSanitizeEx.strip_tags(user.bio),        "created_at" => user.inserted_at |> Utils.format_naive_asctime(),        "favourites_count" => 0,        "statuses_count" => 0, | 
