...
 
Commits (17)
...@@ -33,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ...@@ -33,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
contents has been renamed to `hide_notification_contents` contents has been renamed to `hide_notification_contents`
- Mastodon API: Added `pleroma.metadata.post_formats` to /api/v1/instance - Mastodon API: Added `pleroma.metadata.post_formats` to /api/v1/instance
- Mastodon API (legacy): Allow query parameters for `/api/v1/domain_blocks`, e.g. `/api/v1/domain_blocks?domain=badposters.zone` - Mastodon API (legacy): Allow query parameters for `/api/v1/domain_blocks`, e.g. `/api/v1/domain_blocks?domain=badposters.zone`
- Pleroma API: `/api/pleroma/captcha` responses now include `seconds_valid` with an integer value.
</details> </details>
<details> <details>
......
...@@ -50,7 +50,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi ...@@ -50,7 +50,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi
* Authentication: not required * Authentication: not required
* Params: none * Params: none
* Response: Provider specific JSON, the only guaranteed parameter is `type` * Response: Provider specific JSON, the only guaranteed parameter is `type`
* Example response: `{"type": "kocaptcha", "token": "whatever", "url": "https://captcha.kotobank.ch/endpoint"}` * Example response: `{"type": "kocaptcha", "token": "whatever", "url": "https://captcha.kotobank.ch/endpoint", seconds_valid: 300}`
## `/api/pleroma/delete_account` ## `/api/pleroma/delete_account`
### Delete an account ### Delete an account
......
...@@ -21,7 +21,8 @@ def new do ...@@ -21,7 +21,8 @@ def new do
type: :kocaptcha, type: :kocaptcha,
token: json_resp["token"], token: json_resp["token"],
url: endpoint <> json_resp["url"], url: endpoint <> json_resp["url"],
answer_data: json_resp["md5"] answer_data: json_resp["md5"],
seconds_valid: Pleroma.Config.get([Pleroma.Captcha, :seconds_valid])
} }
end end
end end
......
...@@ -17,7 +17,8 @@ def new do ...@@ -17,7 +17,8 @@ def new do
type: :native, type: :native,
token: token(), token: token(),
url: "data:image/png;base64," <> Base.encode64(img_binary), url: "data:image/png;base64," <> Base.encode64(img_binary),
answer_data: answer_data answer_data: answer_data,
seconds_valid: Pleroma.Config.get([Pleroma.Captcha, :seconds_valid])
} }
end end
end end
......
...@@ -114,63 +114,52 @@ defp oauth_deps do ...@@ -114,63 +114,52 @@ defp oauth_deps do
# Type `mix help deps` for examples and options. # Type `mix help deps` for examples and options.
defp deps do defp deps do
[ [
{:phoenix, "~> 1.4.8"}, {:phoenix, "~> 1.4.17"},
{:tzdata, "~> 1.0.3"}, {:tzdata, "~> 1.0.3"},
{:plug_cowboy, "~> 2.0"}, {:plug_cowboy, "~> 2.3"},
{:phoenix_pubsub, "~> 1.1"}, {:phoenix_pubsub, "~> 1.1"},
{:phoenix_ecto, "~> 4.0"}, {:phoenix_ecto, "~> 4.0"},
{:ecto_enum, "~> 1.4"}, {:ecto_enum, "~> 1.4"},
{:ecto_sql, "~> 3.4.4"}, {:ecto_sql, "~> 3.4.4"},
{:postgrex, ">= 0.13.5"}, {:postgrex, ">= 0.15.5"},
{:oban, "~> 2.0.0"}, {:oban, "~> 2.0.0"},
{:gettext, "~> 0.15"}, {:gettext, "~> 0.18"},
{:pbkdf2_elixir, "~> 1.0"}, {:pbkdf2_elixir, "~> 1.2"},
{:bcrypt_elixir, "~> 2.0"}, {:bcrypt_elixir, "~> 2.2"},
{:trailing_format_plug, "~> 0.0.7"}, {:trailing_format_plug, "~> 0.0.7"},
{:fast_sanitize, "~> 0.1"}, {:fast_sanitize, "~> 0.1"},
{:html_entities, "~> 0.5", override: true}, {:html_entities, "~> 0.5", override: true},
{:phoenix_html, "~> 2.10"}, {:phoenix_html, "~> 2.14"},
{:calendar, "~> 0.17.4"}, {:calendar, "~> 1.0"},
{:cachex, "~> 3.2"}, {:cachex, "~> 3.2"},
{:poison, "~> 3.0", override: true}, {:poison, "~> 3.0", override: true},
# {:tesla, "~> 1.3", override: true},
{:tesla, {:tesla,
github: "teamon/tesla", ref: "af3707078b10793f6a534938e56b963aff82fe3c", override: true}, github: "teamon/tesla", ref: "af3707078b10793f6a534938e56b963aff82fe3c", override: true},
{:castore, "~> 0.1"}, {:castore, "~> 0.1"},
{:cowlib, "~> 2.8", override: true}, {:cowlib, "~> 2.9", override: true},
{:gun, {:gun,
github: "ninenines/gun", ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", override: true}, github: "ninenines/gun", ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", override: true},
{:jason, "~> 1.0"}, {:jason, "~> 1.2"},
{:mogrify, "~> 0.6.1"}, {:mogrify, "~> 0.7.4"},
{:ex_aws, "~> 2.1"}, {:ex_aws, "~> 2.1"},
{:ex_aws_s3, "~> 2.0"}, {:ex_aws_s3, "~> 2.0"},
{:sweet_xml, "~> 0.6.6"}, {:sweet_xml, "~> 0.6.6"},
{:earmark, "1.4.3"}, {:earmark, "1.4.3"},
{:bbcode_pleroma, "~> 0.2.0"}, {:bbcode_pleroma, "~> 0.2.0"},
{:ex_machina, "~> 2.3", only: :test},
{:credo, "~> 1.1.0", only: [:dev, :test], runtime: false},
{:mock, "~> 0.3.3", only: :test},
{:crypt, {:crypt,
git: "https://github.com/msantos/crypt.git", git: "https://github.com/msantos/crypt.git",
ref: "f63a705f92c26955977ee62a313012e309a4d77a"}, ref: "f63a705f92c26955977ee62a313012e309a4d77a"},
{:cors_plug, "~> 1.5"}, {:cors_plug, "~> 2.0"},
{:ex_doc, "~> 0.21", only: :dev, runtime: false}, {:web_push_encryption, "~> 0.3"},
{:web_push_encryption, "~> 0.2.1"}, {:swoosh, "~> 1.0"},
{:swoosh, {:phoenix_swoosh, "~> 0.3"},
git: "https://github.com/swoosh/swoosh.git",
ref: "c96e0ca8a00d8f211ec1f042a4626b09f249caa5",
override: true},
{:phoenix_swoosh, "~> 0.2"},
{:gen_smtp, "~> 0.13"}, {:gen_smtp, "~> 0.13"},
{:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test},
{:ex_syslogger, "~> 1.4"}, {:ex_syslogger, "~> 1.4"},
{:floki, "~> 0.25"}, {:floki, "~> 0.27"},
{:timex, "~> 3.5"}, {:timex, "~> 3.6"},
{:ueberauth, "~> 0.4"}, {:ueberauth, "~> 0.4"},
{:linkify, "~> 0.2.0"}, {:linkify, "~> 0.2.0"},
{:http_signatures, {:http_signatures, "~> 0.1.0"},
git: "https://git.pleroma.social/pleroma/http_signatures.git",
ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"},
{:telemetry, "~> 0.3"}, {:telemetry, "~> 0.3"},
{:poolboy, "~> 1.5"}, {:poolboy, "~> 1.5"},
{:prometheus, "~> 4.6"}, {:prometheus, "~> 4.6"},
...@@ -182,11 +171,10 @@ defp deps do ...@@ -182,11 +171,10 @@ defp deps do
{:quack, "~> 0.1.1"}, {:quack, "~> 0.1.1"},
{:joken, "~> 2.0"}, {:joken, "~> 2.0"},
{:benchee, "~> 1.0"}, {:benchee, "~> 1.0"},
{:pot, "~> 0.10.2"}, {:pot, "~> 0.11"},
{:esshd, "~> 0.1.0", runtime: Application.get_env(:esshd, :enabled, false)}, {:esshd, "~> 0.1.0", runtime: Application.get_env(:esshd, :enabled, false)},
{:ex_const, "~> 0.2"}, {:ex_const, "~> 0.2"},
{:plug_static_index_html, "~> 1.0.0"}, {:plug_static_index_html, "~> 1.0.0"},
{:excoveralls, "~> 0.12.1", only: :test},
{:flake_id, "~> 0.1.0"}, {:flake_id, "~> 0.1.0"},
{:concurrent_limiter, {:concurrent_limiter,
git: "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", git: "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git",
...@@ -197,11 +185,19 @@ defp deps do ...@@ -197,11 +185,19 @@ defp deps do
{:captcha, {:captcha,
git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git",
ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"},
{:mox, "~> 0.5", only: :test},
{:restarter, path: "./restarter"}, {:restarter, path: "./restarter"},
{:open_api_spex, {:open_api_spex,
git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git",
ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"} ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"},
## dev & test
{:ex_doc, "~> 0.22", only: :dev, runtime: false},
{:ex_machina, "~> 2.4", only: :test},
{:credo, "~> 1.4", only: [:dev, :test], runtime: false},
{:mock, "~> 0.3.5", only: :test},
{:excoveralls, "~> 0.13.1", only: :test},
{:mox, "~> 0.5", only: :test},
{:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test}
] ++ oauth_deps() ] ++ oauth_deps()
end end
......
This diff is collapsed.
...@@ -41,7 +41,8 @@ test "new and validate" do ...@@ -41,7 +41,8 @@ test "new and validate" do
answer_data: answer, answer_data: answer,
token: ^token, token: ^token,
url: ^url, url: ^url,
type: :kocaptcha type: :kocaptcha,
seconds_valid: 300
} = new } = new
assert Kocaptcha.validate(token, "7oEy8c", answer) == :ok assert Kocaptcha.validate(token, "7oEy8c", answer) == :ok
...@@ -56,7 +57,8 @@ test "new and validate" do ...@@ -56,7 +57,8 @@ test "new and validate" do
answer_data: answer, answer_data: answer,
token: token, token: token,
type: :native, type: :native,
url: "data:image/png;base64," <> _ url: "data:image/png;base64," <> _,
seconds_valid: 300
} = new } = new
assert is_binary(answer) assert is_binary(answer)
......
...@@ -16,7 +16,8 @@ def new, ...@@ -16,7 +16,8 @@ def new,
type: :mock, type: :mock,
token: "afa1815e14e29355e6c8f6b143a39fa2", token: "afa1815e14e29355e6c8f6b143a39fa2",
answer_data: @solution, answer_data: @solution,
url: "https://example.org/captcha.png" url: "https://example.org/captcha.png",
seconds_valid: 300
} }
@impl Service @impl Service
......
...@@ -204,7 +204,7 @@ test "updates state of multiple reports", %{ ...@@ -204,7 +204,7 @@ test "updates state of multiple reports", %{
test "returns empty response when no reports created", %{conn: conn} do test "returns empty response when no reports created", %{conn: conn} do
response = response =
conn conn
|> get("/api/pleroma/admin/reports") |> get(report_path(conn, :index))
|> json_response_and_validate_schema(:ok) |> json_response_and_validate_schema(:ok)
assert Enum.empty?(response["reports"]) assert Enum.empty?(response["reports"])
...@@ -224,7 +224,7 @@ test "returns reports", %{conn: conn} do ...@@ -224,7 +224,7 @@ test "returns reports", %{conn: conn} do
response = response =
conn conn
|> get("/api/pleroma/admin/reports") |> get(report_path(conn, :index))
|> json_response_and_validate_schema(:ok) |> json_response_and_validate_schema(:ok)
[report] = response["reports"] [report] = response["reports"]
...@@ -256,7 +256,7 @@ test "returns reports with specified state", %{conn: conn} do ...@@ -256,7 +256,7 @@ test "returns reports with specified state", %{conn: conn} do
response = response =
conn conn
|> get("/api/pleroma/admin/reports?state=open") |> get(report_path(conn, :index, %{state: "open"}))
|> json_response_and_validate_schema(:ok) |> json_response_and_validate_schema(:ok)
assert [open_report] = response["reports"] assert [open_report] = response["reports"]
...@@ -268,7 +268,7 @@ test "returns reports with specified state", %{conn: conn} do ...@@ -268,7 +268,7 @@ test "returns reports with specified state", %{conn: conn} do
response = response =
conn conn
|> get("/api/pleroma/admin/reports?state=closed") |> get(report_path(conn, :index, %{state: "closed"}))
|> json_response_and_validate_schema(:ok) |> json_response_and_validate_schema(:ok)
assert [closed_report] = response["reports"] assert [closed_report] = response["reports"]
...@@ -280,9 +280,7 @@ test "returns reports with specified state", %{conn: conn} do ...@@ -280,9 +280,7 @@ test "returns reports with specified state", %{conn: conn} do
assert %{"total" => 0, "reports" => []} == assert %{"total" => 0, "reports" => []} ==
conn conn
|> get("/api/pleroma/admin/reports?state=resolved", %{ |> get(report_path(conn, :index, %{state: "resolved"}))
"" => ""
})
|> json_response_and_validate_schema(:ok) |> json_response_and_validate_schema(:ok)
end end
......