| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 | # Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.CommonAPI.UtilsTest do
  alias Pleroma.Web.CommonAPI.Utils
  alias Pleroma.Web.Endpoint
  alias Pleroma.Builders.UserBuilder
  use Pleroma.DataCase
  test "it adds attachment links to a given text and attachment set" do
    name =
      "Sakura%20Mana%20%E2%80%93%20Turned%20on%20by%20a%20Senior%20OL%20with%20a%20Temptating%20Tight%20Skirt-s%20Full%20Hipline%20and%20Panty%20Shot-%20Beautiful%20Thick%20Thighs-%20and%20Erotic%20Ass-%20-2015-%20--%20Oppaitime%208-28-2017%206-50-33%20PM.png"
    attachment = %{
      "url" => [%{"href" => name}]
    }
    res = Utils.add_attachments("", [attachment])
    assert res ==
             "<br><a href=\"#{name}\" class='attachment'>Sakura Mana – Turned on by a Se…</a>"
  end
  describe "it confirms the password given is the current users password" do
    test "incorrect password given" do
      {:ok, user} = UserBuilder.insert()
      assert Utils.confirm_current_password(user, "") == {:error, "Invalid password."}
    end
    test "correct password given" do
      {:ok, user} = UserBuilder.insert()
      assert Utils.confirm_current_password(user, "test") == {:ok, user}
    end
  end
  test "parses emoji from name and bio" do
    {:ok, user} = UserBuilder.insert(%{name: ":karjalanpiirakka:", bio: ":perkele:"})
    expected = [
      %{
        "type" => "Emoji",
        "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/finmoji/128px/perkele-128.png"},
        "name" => ":perkele:"
      },
      %{
        "type" => "Emoji",
        "icon" => %{
          "type" => "Image",
          "url" => "#{Endpoint.url()}/finmoji/128px/karjalanpiirakka-128.png"
        },
        "name" => ":karjalanpiirakka:"
      }
    ]
    assert expected == Utils.emoji_from_profile(user)
  end
  describe "format_input/3" do
    test "works for bare text/plain" do
      text = "hello world!"
      expected = "hello world!"
      {output, [], []} = Utils.format_input(text, "text/plain")
      assert output == expected
      text = "hello world!\n\nsecond paragraph!"
      expected = "hello world!<br><br>second paragraph!"
      {output, [], []} = Utils.format_input(text, "text/plain")
      assert output == expected
    end
    test "works for bare text/html" do
      text = "<p>hello world!</p>"
      expected = "<p>hello world!</p>"
      {output, [], []} = Utils.format_input(text, "text/html")
      assert output == expected
      text = "<p>hello world!</p>\n\n<p>second paragraph</p>"
      expected = "<p>hello world!</p>\n\n<p>second paragraph</p>"
      {output, [], []} = Utils.format_input(text, "text/html")
      assert output == expected
    end
    test "works for bare text/markdown" do
      text = "**hello world**"
      expected = "<p><strong>hello world</strong></p>\n"
      {output, [], []} = Utils.format_input(text, "text/markdown")
      assert output == expected
      text = "**hello world**\n\n*another paragraph*"
      expected = "<p><strong>hello world</strong></p>\n<p><em>another paragraph</em></p>\n"
      {output, [], []} = Utils.format_input(text, "text/markdown")
      assert output == expected
      text = """
      > cool quote
      by someone
      """
      expected = "<blockquote><p>cool quote</p>\n</blockquote>\n<p>by someone</p>\n"
      {output, [], []} = Utils.format_input(text, "text/markdown")
      assert output == expected
    end
    test "works for text/markdown with mentions" do
      {:ok, user} =
        UserBuilder.insert(%{nickname: "user__test", ap_id: "http://foo.com/user__test"})
      text = "**hello world**\n\n*another @user__test and @user__test google.com paragraph*"
      expected =
        "<p><strong>hello world</strong></p>\n<p><em>another <span class=\"h-card\"><a data-user=\"#{
          user.id
        }\" class=\"u-url mention\" href=\"http://foo.com/user__test\">@<span>user__test</span></a></span> and <span class=\"h-card\"><a data-user=\"#{
          user.id
        }\" class=\"u-url mention\" href=\"http://foo.com/user__test\">@<span>user__test</span></a></span> <a href=\"http://google.com\">google.com</a> paragraph</em></p>\n"
      {output, _, _} = Utils.format_input(text, "text/markdown")
      assert output == expected
    end
  end
end
 |