diff --git a/CHANGELOG.md b/CHANGELOG.md index dee6f1bd8..ac0206964 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
API Changes +- **Breaking** EmojiReactions: Change endpoints and responses to align with Mastodon - **Breaking** Admin API: `PATCH /api/pleroma/admin/users/:nickname/force_password_reset` is now `PATCH /api/pleroma/admin/users/force_password_reset` (accepts `nicknames` array in the request body) - **Breaking:** Admin API: Return link alongside with token on password reset - **Breaking:** Admin API: `PUT /api/pleroma/admin/reports/:id` is now `PATCH /api/pleroma/admin/reports`, see admin_api.md for details diff --git a/config/test.exs b/config/test.exs index ce4586c7b..078c46205 100644 --- a/config/test.exs +++ b/config/test.exs @@ -66,7 +66,8 @@ config :pleroma, Oban, queues: false, - prune: :disabled + prune: :disabled, + crontab: false config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 2, diff --git a/docs/API/differences_in_mastoapi_responses.md b/docs/API/differences_in_mastoapi_responses.md index 63ae0467e..f752de5d8 100644 --- a/docs/API/differences_in_mastoapi_responses.md +++ b/docs/API/differences_in_mastoapi_responses.md @@ -29,7 +29,7 @@ Has these additional fields under the `pleroma` object: - `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` - `expires_at`: a datetime (iso8601) that states when the post will expire (be deleted automatically), or empty if the post won't expire - `thread_muted`: true if the thread the post belongs to is muted -- `emoji_reactions`: A list with emoji / reaction maps. The format is `{emoji: "☕", count: 1, reacted: true}`. Contains no information about the reacting users, for that use the `emoji_reactions_by` endpoint. +- `emoji_reactions`: A list with emoji / reaction maps. The format is `{name: "☕", count: 1, me: true}`. Contains no information about the reacting users, for that use the `/statuses/:id/reactions` endpoint. ## Attachments @@ -88,6 +88,9 @@ Behavior has changed: - `/api/v1/accounts/search`: Does not require authentication +## Search (global) + +Unlisted posts are available in search results, they are considered to be public posts that shouldn't be shown in local/federated timeline. ## Notifications diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index c7125c1cd..07e0af5e5 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -432,21 +432,21 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa Emoji reactions work a lot like favourites do. They make it possible to react to a post with a single emoji character. -## `POST /api/v1/pleroma/statuses/:id/react_with_emoji` +## `PUT /api/v1/pleroma/statuses/:id/reactions/:emoji` ### React to a post with a unicode emoji -* Method: `POST` +* Method: `PUT` * Authentication: required * Params: `emoji`: A single character unicode emoji * Response: JSON, the status. -## `POST /api/v1/pleroma/statuses/:id/unreact_with_emoji` +## `DELETE /api/v1/pleroma/statuses/:id/reactions/:emoji` ### Remove a reaction to a post with a unicode emoji -* Method: `POST` +* Method: `DELETE` * Authentication: required * Params: `emoji`: A single character unicode emoji * Response: JSON, the status. -## `GET /api/v1/pleroma/statuses/:id/emoji_reactions_by` +## `GET /api/v1/pleroma/statuses/:id/reactions` ### Get an object of emoji to account mappings with accounts that reacted to the post * Method: `GET` * Authentication: optional @@ -455,7 +455,7 @@ Emoji reactions work a lot like favourites do. They make it possible to react to * Example Response: ```json [ - {"emoji": "😀", "count": 2, "reacted": true, "accounts": [{"id" => "xyz.."...}, {"id" => "zyx..."}]}, - {"emoji": "☕", "count": 1, "reacted": false, "accounts": [{"id" => "abc..."}]} + {"name": "😀", "count": 2, "me": true, "accounts": [{"id" => "xyz.."...}, {"id" => "zyx..."}]}, + {"name": "☕", "count": 1, "me": false, "accounts": [{"id" => "abc..."}]} ] ``` diff --git a/docs/clients.md b/docs/clients.md index 6c6180f7a..8ac9ad3de 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -37,6 +37,11 @@ Feel free to contact us to be added to this list! - Platforms: Android - Features: Streaming Ready, Moderation, Text Formatting +### Kyclos +- Source Code: +- Platforms: SailfishOS +- Features: No Streaming + ### Nekonium - Homepage: [F-Droid Repository](https://repo.gdgd.jp.net/), [Google Play](https://play.google.com/store/apps/details?id=com.apps.nekonium), [Amazon](https://www.amazon.co.jp/dp/B076FXPRBC/) - Source: diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 6cb158bbf..e1e92034f 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -242,9 +242,9 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} with %{data: %{"reactions" => emoji_reactions}} <- object do Enum.map(emoji_reactions, fn [emoji, users] -> %{ - emoji: emoji, + name: emoji, count: length(users), - reacted: !!(opts[:for] && opts[:for].ap_id in users) + me: !!(opts[:for] && opts[:for].ap_id in users) } end) else diff --git a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex index d76e39795..108e48438 100644 --- a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex @@ -53,10 +53,10 @@ def emoji_reactions_by(%{assigns: %{user: user}} = conn, %{"id" => activity_id}) |> Enum.filter(& &1) %{ - emoji: emoji, + name: emoji, count: length(users), accounts: AccountView.render("index.json", %{users: users, for: user, as: :user}), - reacted: !!(user && user.ap_id in user_ap_ids) + me: !!(user && user.ap_id in user_ap_ids) } end) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index e86bc3cc3..897215698 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -271,7 +271,7 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do pipe_through(:api) - get("/statuses/:id/emoji_reactions_by", PleromaAPIController, :emoji_reactions_by) + get("/statuses/:id/reactions", PleromaAPIController, :emoji_reactions_by) end scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do @@ -287,8 +287,8 @@ defmodule Pleroma.Web.Router do pipe_through(:authenticated_api) patch("/conversations/:id", PleromaAPIController, :update_conversation) - post("/statuses/:id/react_with_emoji", PleromaAPIController, :react_with_emoji) - post("/statuses/:id/unreact_with_emoji", PleromaAPIController, :unreact_with_emoji) + put("/statuses/:id/reactions/:emoji", PleromaAPIController, :react_with_emoji) + delete("/statuses/:id/reactions/:emoji", PleromaAPIController, :unreact_with_emoji) post("/notifications/read", PleromaAPIController, :read_notification) patch("/accounts/update_avatar", AccountController, :update_avatar) diff --git a/priv/static/adminfe/app.fdd73ce4.css b/priv/static/adminfe/app.c836e084.css similarity index 100% rename from priv/static/adminfe/app.fdd73ce4.css rename to priv/static/adminfe/app.c836e084.css diff --git a/priv/static/adminfe/chunk-06de.3abb5de7.css b/priv/static/adminfe/chunk-06de.3abb5de7.css new file mode 100644 index 000000000..4fb60b648 Binary files /dev/null and b/priv/static/adminfe/chunk-06de.3abb5de7.css differ diff --git a/priv/static/adminfe/chunk-0cc4.571d0025.css b/priv/static/adminfe/chunk-0cc4.571d0025.css deleted file mode 100644 index 8bd6a2e50..000000000 Binary files a/priv/static/adminfe/chunk-0cc4.571d0025.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-15fa.5a5f973d.css b/priv/static/adminfe/chunk-15fa.5a5f973d.css deleted file mode 100644 index 30bf7de23..000000000 Binary files a/priv/static/adminfe/chunk-15fa.5a5f973d.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-15fa.2246593e.css b/priv/static/adminfe/chunk-15fa.86ad6a40.css similarity index 100% rename from priv/static/adminfe/chunk-15fa.2246593e.css rename to priv/static/adminfe/chunk-15fa.86ad6a40.css diff --git a/priv/static/adminfe/chunk-163c.bd7b8f19.css b/priv/static/adminfe/chunk-163c.bd7b8f19.css new file mode 100644 index 000000000..cdca6b8c0 Binary files /dev/null and b/priv/static/adminfe/chunk-163c.bd7b8f19.css differ diff --git a/priv/static/adminfe/chunk-18c3.3d138f37.css b/priv/static/adminfe/chunk-18c3.3d138f37.css new file mode 100644 index 000000000..47134ea1e Binary files /dev/null and b/priv/static/adminfe/chunk-18c3.3d138f37.css differ diff --git a/priv/static/adminfe/chunk-18e1.ed715f8d.css b/priv/static/adminfe/chunk-18e1.ed715f8d.css deleted file mode 100644 index da819ca09..000000000 Binary files a/priv/static/adminfe/chunk-18e1.ed715f8d.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-2aa6.8ce63ac0.css b/priv/static/adminfe/chunk-2aa6.8ce63ac0.css deleted file mode 100644 index 8bd6a2e50..000000000 Binary files a/priv/static/adminfe/chunk-2aa6.8ce63ac0.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-3d8e.48523459.css b/priv/static/adminfe/chunk-3d8e.48523459.css deleted file mode 100644 index 8eefd9493..000000000 Binary files a/priv/static/adminfe/chunk-3d8e.48523459.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-1c46.f36071a4.css b/priv/static/adminfe/chunk-48a4.1bb1db91.css similarity index 100% rename from priv/static/adminfe/chunk-1c46.f36071a4.css rename to priv/static/adminfe/chunk-48a4.1bb1db91.css diff --git a/priv/static/adminfe/chunk-4dc2.25d3bcab.css b/priv/static/adminfe/chunk-4dc2.25d3bcab.css deleted file mode 100644 index 48784b9d2..000000000 Binary files a/priv/static/adminfe/chunk-4dc2.25d3bcab.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-18e1.dd09fe2e.css b/priv/static/adminfe/chunk-51b0.55057987.css similarity index 100% rename from priv/static/adminfe/chunk-18e1.dd09fe2e.css rename to priv/static/adminfe/chunk-51b0.55057987.css diff --git a/priv/static/adminfe/chunk-1ada.90dffac4.css b/priv/static/adminfe/chunk-6aa3.fb02ac69.css similarity index 100% rename from priv/static/adminfe/chunk-1ada.90dffac4.css rename to priv/static/adminfe/chunk-6aa3.fb02ac69.css diff --git a/priv/static/adminfe/chunk-6b7b.1ab4da3b.css b/priv/static/adminfe/chunk-6b7b.1ab4da3b.css deleted file mode 100644 index 7124c9690..000000000 Binary files a/priv/static/adminfe/chunk-6b7b.1ab4da3b.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-6e77.57276c93.css b/priv/static/adminfe/chunk-6e77.57276c93.css deleted file mode 100644 index f0b3bf144..000000000 Binary files a/priv/static/adminfe/chunk-6e77.57276c93.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-7de9.889d1da1.css b/priv/static/adminfe/chunk-7de9.889d1da1.css deleted file mode 100644 index 29f7b475d..000000000 Binary files a/priv/static/adminfe/chunk-7de9.889d1da1.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-7f83.f9f73c8e.css b/priv/static/adminfe/chunk-7f83.f9f73c8e.css deleted file mode 100644 index 29f7b475d..000000000 Binary files a/priv/static/adminfe/chunk-7f83.f9f73c8e.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-7f8e.d508c376.css b/priv/static/adminfe/chunk-7f8e.d508c376.css deleted file mode 100644 index 6cd674a28..000000000 Binary files a/priv/static/adminfe/chunk-7f8e.d508c376.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-7f8e.1d10e1c7.css b/priv/static/adminfe/chunk-7f8e.f03bd164.css similarity index 100% rename from priv/static/adminfe/chunk-7f8e.1d10e1c7.css rename to priv/static/adminfe/chunk-7f8e.f03bd164.css diff --git a/priv/static/adminfe/chunk-9bb0.2a82c722.css b/priv/static/adminfe/chunk-9bb0.2a82c722.css deleted file mode 100644 index c0074e6f7..000000000 Binary files a/priv/static/adminfe/chunk-9bb0.2a82c722.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-a601.62c86eea.css b/priv/static/adminfe/chunk-a601.62c86eea.css deleted file mode 100644 index a036b0253..000000000 Binary files a/priv/static/adminfe/chunk-a601.62c86eea.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-b4ba.e2e23716.css b/priv/static/adminfe/chunk-b4ba.e2e23716.css new file mode 100644 index 000000000..783f59e94 Binary files /dev/null and b/priv/static/adminfe/chunk-b4ba.e2e23716.css differ diff --git a/priv/static/adminfe/chunk-bb29.61e9e8f2.css b/priv/static/adminfe/chunk-bb29.61e9e8f2.css new file mode 100644 index 000000000..bbab1c2ac Binary files /dev/null and b/priv/static/adminfe/chunk-bb29.61e9e8f2.css differ diff --git a/priv/static/adminfe/chunk-cf58.71fffb79.css b/priv/static/adminfe/chunk-cf58.71fffb79.css new file mode 100644 index 000000000..4e540003b Binary files /dev/null and b/priv/static/adminfe/chunk-cf58.71fffb79.css differ diff --git a/priv/static/adminfe/chunk-d01a.03fe0a3f.css b/priv/static/adminfe/chunk-d01a.03fe0a3f.css deleted file mode 100644 index f0b3bf144..000000000 Binary files a/priv/static/adminfe/chunk-d01a.03fe0a3f.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-f3c9.155bfc51.css b/priv/static/adminfe/chunk-f3c9.155bfc51.css deleted file mode 100644 index 1cb3e5949..000000000 Binary files a/priv/static/adminfe/chunk-f3c9.155bfc51.css and /dev/null differ diff --git a/priv/static/adminfe/chunk-libs.57fe98a3.css b/priv/static/adminfe/chunk-libs.686b5876.css similarity index 100% rename from priv/static/adminfe/chunk-libs.57fe98a3.css rename to priv/static/adminfe/chunk-libs.686b5876.css diff --git a/priv/static/adminfe/index.html b/priv/static/adminfe/index.html index e28125b5e..0c4c518a1 100644 --- a/priv/static/adminfe/index.html +++ b/priv/static/adminfe/index.html @@ -1 +1 @@ -Admin FE
\ No newline at end of file +Admin FE
\ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.3da0f475.js b/priv/static/adminfe/static/js/app.3da0f475.js deleted file mode 100644 index c6bd005d2..000000000 Binary files a/priv/static/adminfe/static/js/app.3da0f475.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/app.3da0f475.js.map b/priv/static/adminfe/static/js/app.3da0f475.js.map deleted file mode 100644 index 999df6709..000000000 Binary files a/priv/static/adminfe/static/js/app.3da0f475.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/app.a753ced5.js b/priv/static/adminfe/static/js/app.a753ced5.js new file mode 100644 index 000000000..3e652b803 Binary files /dev/null and b/priv/static/adminfe/static/js/app.a753ced5.js differ diff --git a/priv/static/adminfe/static/js/app.a753ced5.js.map b/priv/static/adminfe/static/js/app.a753ced5.js.map new file mode 100644 index 000000000..c7b3137f9 Binary files /dev/null and b/priv/static/adminfe/static/js/app.a753ced5.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js b/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js new file mode 100644 index 000000000..c989bed18 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js differ diff --git a/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js.map b/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js.map new file mode 100644 index 000000000..5652f3192 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-06de.ff4586ab.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-15fa.34070731.js b/priv/static/adminfe/static/js/chunk-15fa.99004e49.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-15fa.34070731.js rename to priv/static/adminfe/static/js/chunk-15fa.99004e49.js index 937908d00..5ab46f8b9 100644 Binary files a/priv/static/adminfe/static/js/chunk-15fa.34070731.js and b/priv/static/adminfe/static/js/chunk-15fa.99004e49.js differ diff --git a/priv/static/adminfe/static/js/chunk-15fa.34070731.js.map b/priv/static/adminfe/static/js/chunk-15fa.99004e49.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-15fa.34070731.js.map rename to priv/static/adminfe/static/js/chunk-15fa.99004e49.js.map index d3830be7c..f4b92260a 100644 Binary files a/priv/static/adminfe/static/js/chunk-15fa.34070731.js.map and b/priv/static/adminfe/static/js/chunk-15fa.99004e49.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-163c.35602b53.js b/priv/static/adminfe/static/js/chunk-163c.35602b53.js new file mode 100644 index 000000000..096ed8755 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-163c.35602b53.js differ diff --git a/priv/static/adminfe/static/js/chunk-163c.35602b53.js.map b/priv/static/adminfe/static/js/chunk-163c.35602b53.js.map new file mode 100644 index 000000000..e8d4ebe9c Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-163c.35602b53.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-7f83.1321eab8.js b/priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js similarity index 62% rename from priv/static/adminfe/static/js/chunk-7f83.1321eab8.js rename to priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js index 52c9efc2d..6618fbd8b 100644 Binary files a/priv/static/adminfe/static/js/chunk-7f83.1321eab8.js and b/priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js differ diff --git a/priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js.map b/priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js.map new file mode 100644 index 000000000..c199df202 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-18c3.b8b74db6.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js b/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js deleted file mode 100644 index 21a0fde72..000000000 Binary files a/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js.map b/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js.map deleted file mode 100644 index 64ac03193..000000000 Binary files a/priv/static/adminfe/static/js/chunk-2aa6.be23b313.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js b/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js deleted file mode 100644 index 57831d50d..000000000 Binary files a/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js.map b/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js.map deleted file mode 100644 index a66a5fc00..000000000 Binary files a/priv/static/adminfe/static/js/chunk-3d8e.916ea1c1.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-4dc2.ec296292.js b/priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js similarity index 98% rename from priv/static/adminfe/static/js/chunk-4dc2.ec296292.js rename to priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js index f7cbe90c4..596384cab 100644 Binary files a/priv/static/adminfe/static/js/chunk-4dc2.ec296292.js and b/priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js differ diff --git a/priv/static/adminfe/static/js/chunk-4dc2.ec296292.js.map b/priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-4dc2.ec296292.js.map rename to priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js.map index 898961dd6..f3d7fd870 100644 Binary files a/priv/static/adminfe/static/js/chunk-4dc2.ec296292.js.map and b/priv/static/adminfe/static/js/chunk-48a4.e3d2c4b6.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js b/priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js similarity index 85% rename from priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js rename to priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js index e0561aa1a..a770215ae 100644 Binary files a/priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js and b/priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js differ diff --git a/priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js.map b/priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js.map similarity index 98% rename from priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js.map rename to priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js.map index 27f79dceb..9b8014486 100644 Binary files a/priv/static/adminfe/static/js/chunk-18e1.c5abe3f2.js.map and b/priv/static/adminfe/static/js/chunk-51b0.7d1554b1.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-1ada.b41cb585.js b/priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js similarity index 97% rename from priv/static/adminfe/static/js/chunk-1ada.b41cb585.js rename to priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js index b7bc3b278..1d44bee16 100644 Binary files a/priv/static/adminfe/static/js/chunk-1ada.b41cb585.js and b/priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js differ diff --git a/priv/static/adminfe/static/js/chunk-1ada.b41cb585.js.map b/priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-1ada.b41cb585.js.map rename to priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js.map index 27a2f8e5c..aa3fa8ee1 100644 Binary files a/priv/static/adminfe/static/js/chunk-1ada.b41cb585.js.map and b/priv/static/adminfe/static/js/chunk-6aa3.95b2c0b4.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js b/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js deleted file mode 100644 index 3a2a7694b..000000000 Binary files a/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js.map b/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js.map deleted file mode 100644 index 570df08e6..000000000 Binary files a/priv/static/adminfe/static/js/chunk-6b7b.e7ed7973.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js b/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js deleted file mode 100644 index 9fef6e5dc..000000000 Binary files a/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js.map b/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js.map deleted file mode 100644 index 4b756b70a..000000000 Binary files a/priv/static/adminfe/static/js/chunk-6e77.d1988eaf.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-7f83.1321eab8.js.map b/priv/static/adminfe/static/js/chunk-7f83.1321eab8.js.map deleted file mode 100644 index 5a7d9d6a2..000000000 Binary files a/priv/static/adminfe/static/js/chunk-7f83.1321eab8.js.map and /dev/null differ diff --git a/priv/static/adminfe/static/js/chunk-7f8e.0505d295.js b/priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-7f8e.0505d295.js rename to priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js index 43d8a02d8..e3025b00f 100644 Binary files a/priv/static/adminfe/static/js/chunk-7f8e.0505d295.js and b/priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js differ diff --git a/priv/static/adminfe/static/js/chunk-7f8e.0505d295.js.map b/priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-7f8e.0505d295.js.map rename to priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js.map index d1100abb0..c34b1dc46 100644 Binary files a/priv/static/adminfe/static/js/chunk-7f8e.0505d295.js.map and b/priv/static/adminfe/static/js/chunk-7f8e.a4876ede.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js b/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js new file mode 100644 index 000000000..9fb60af23 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js differ diff --git a/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js.map b/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js.map new file mode 100644 index 000000000..241c6cc21 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-7f9e.c49aa694.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js b/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js new file mode 100644 index 000000000..683cd3641 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js differ diff --git a/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js.map b/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js.map new file mode 100644 index 000000000..230b00cf3 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-b4ba.e1c7f6c9.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-bb29.1091e069.js b/priv/static/adminfe/static/js/chunk-bb29.1091e069.js new file mode 100644 index 000000000..16dc9d410 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-bb29.1091e069.js differ diff --git a/priv/static/adminfe/static/js/chunk-bb29.1091e069.js.map b/priv/static/adminfe/static/js/chunk-bb29.1091e069.js.map new file mode 100644 index 000000000..aa73cd407 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-bb29.1091e069.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-cf58.28606b64.js b/priv/static/adminfe/static/js/chunk-cf58.28606b64.js new file mode 100644 index 000000000..f3cd54f20 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-cf58.28606b64.js differ diff --git a/priv/static/adminfe/static/js/chunk-cf58.28606b64.js.map b/priv/static/adminfe/static/js/chunk-cf58.28606b64.js.map new file mode 100644 index 000000000..bb60563e5 Binary files /dev/null and b/priv/static/adminfe/static/js/chunk-cf58.28606b64.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js b/priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js rename to priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js index c76b0430b..f106931f5 100644 Binary files a/priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js and b/priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js differ diff --git a/priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js.map b/priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js.map rename to priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js.map index fa9dc12f0..a1f726fde 100644 Binary files a/priv/static/adminfe/static/js/chunk-elementUI.2de79b84.js.map and b/priv/static/adminfe/static/js/chunk-elementUI.fba0efec.js.map differ diff --git a/priv/static/adminfe/static/js/chunk-libs.680db3fc.js b/priv/static/adminfe/static/js/chunk-libs.b8c453ab.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-libs.680db3fc.js rename to priv/static/adminfe/static/js/chunk-libs.b8c453ab.js index 478edf880..2af35eb62 100644 Binary files a/priv/static/adminfe/static/js/chunk-libs.680db3fc.js and b/priv/static/adminfe/static/js/chunk-libs.b8c453ab.js differ diff --git a/priv/static/adminfe/static/js/chunk-libs.680db3fc.js.map b/priv/static/adminfe/static/js/chunk-libs.b8c453ab.js.map similarity index 99% rename from priv/static/adminfe/static/js/chunk-libs.680db3fc.js.map rename to priv/static/adminfe/static/js/chunk-libs.b8c453ab.js.map index f8c92c2fa..9c9d9acde 100644 Binary files a/priv/static/adminfe/static/js/chunk-libs.680db3fc.js.map and b/priv/static/adminfe/static/js/chunk-libs.b8c453ab.js.map differ diff --git a/priv/static/adminfe/static/js/runtime.8d23a4f7.js b/priv/static/adminfe/static/js/runtime.8d23a4f7.js new file mode 100644 index 000000000..7f165b4b4 Binary files /dev/null and b/priv/static/adminfe/static/js/runtime.8d23a4f7.js differ diff --git a/priv/static/adminfe/static/js/runtime.8d23a4f7.js.map b/priv/static/adminfe/static/js/runtime.8d23a4f7.js.map new file mode 100644 index 000000000..3417b475a Binary files /dev/null and b/priv/static/adminfe/static/js/runtime.8d23a4f7.js.map differ diff --git a/priv/static/adminfe/static/js/runtime.cab03b3e.js b/priv/static/adminfe/static/js/runtime.cab03b3e.js deleted file mode 100644 index f700f7ccc..000000000 Binary files a/priv/static/adminfe/static/js/runtime.cab03b3e.js and /dev/null differ diff --git a/priv/static/adminfe/static/js/runtime.cab03b3e.js.map b/priv/static/adminfe/static/js/runtime.cab03b3e.js.map deleted file mode 100644 index eca2ddd29..000000000 Binary files a/priv/static/adminfe/static/js/runtime.cab03b3e.js.map and /dev/null differ diff --git a/priv/static/index.html b/priv/static/index.html index bf7ee958b..6e1f751ce 100644 --- a/priv/static/index.html +++ b/priv/static/index.html @@ -1 +1 @@ -Pleroma
\ No newline at end of file +Pleroma
\ No newline at end of file diff --git a/priv/static/static/font/fontello.1581007281335.woff b/priv/static/static/font/fontello.1581007281335.woff deleted file mode 100644 index f6e0f80fc..000000000 Binary files a/priv/static/static/font/fontello.1581007281335.woff and /dev/null differ diff --git a/priv/static/static/font/fontello.1581007281335.woff2 b/priv/static/static/font/fontello.1581007281335.woff2 deleted file mode 100644 index 5bd824c7d..000000000 Binary files a/priv/static/static/font/fontello.1581007281335.woff2 and /dev/null differ diff --git a/priv/static/static/font/fontello.1581007281335.eot b/priv/static/static/font/fontello.1581425930672.eot similarity index 86% rename from priv/static/static/font/fontello.1581007281335.eot rename to priv/static/static/font/fontello.1581425930672.eot index 3aae7d472..0de06da29 100644 Binary files a/priv/static/static/font/fontello.1581007281335.eot and b/priv/static/static/font/fontello.1581425930672.eot differ diff --git a/priv/static/static/font/fontello.1581007281335.svg b/priv/static/static/font/fontello.1581425930672.svg similarity index 97% rename from priv/static/static/font/fontello.1581007281335.svg rename to priv/static/static/font/fontello.1581425930672.svg index 44beba9a2..b905a0f6c 100644 --- a/priv/static/static/font/fontello.1581007281335.svg +++ b/priv/static/static/font/fontello.1581425930672.svg @@ -76,6 +76,8 @@ + + diff --git a/priv/static/static/font/fontello.1581007281335.ttf b/priv/static/static/font/fontello.1581425930672.ttf similarity index 86% rename from priv/static/static/font/fontello.1581007281335.ttf rename to priv/static/static/font/fontello.1581425930672.ttf index d3d19affe..5a9cefeec 100644 Binary files a/priv/static/static/font/fontello.1581007281335.ttf and b/priv/static/static/font/fontello.1581425930672.ttf differ diff --git a/priv/static/static/font/fontello.1581425930672.woff b/priv/static/static/font/fontello.1581425930672.woff new file mode 100644 index 000000000..28f4dda9d Binary files /dev/null and b/priv/static/static/font/fontello.1581425930672.woff differ diff --git a/priv/static/static/font/fontello.1581425930672.woff2 b/priv/static/static/font/fontello.1581425930672.woff2 new file mode 100644 index 000000000..81a10daee Binary files /dev/null and b/priv/static/static/font/fontello.1581425930672.woff2 differ diff --git a/priv/static/static/fontello.1581425930672.css b/priv/static/static/fontello.1581425930672.css new file mode 100644 index 000000000..70a43d019 Binary files /dev/null and b/priv/static/static/fontello.1581425930672.css differ diff --git a/priv/static/static/fontello.json b/priv/static/static/fontello.json index 829241b55..5a7086a23 100755 --- a/priv/static/static/fontello.json +++ b/priv/static/static/fontello.json @@ -339,6 +339,12 @@ "css": "arrow-curved", "code": 59426, "src": "iconic" + }, + { + "uid": "0ddd3e8201ccc7d41f7b7c9d27eca6c1", + "css": "link", + "code": 59427, + "src": "fontawesome" } ] -} \ No newline at end of file +} diff --git a/priv/static/static/js/app.0aac253187b2af873849.js b/priv/static/static/js/app.0aac253187b2af873849.js deleted file mode 100644 index 3f2f39e83..000000000 Binary files a/priv/static/static/js/app.0aac253187b2af873849.js and /dev/null differ diff --git a/priv/static/static/js/app.0aac253187b2af873849.js.map b/priv/static/static/js/app.0aac253187b2af873849.js.map deleted file mode 100644 index b2503292e..000000000 Binary files a/priv/static/static/js/app.0aac253187b2af873849.js.map and /dev/null differ diff --git a/priv/static/static/js/app.f8af8a9b83e330e80903.js b/priv/static/static/js/app.f8af8a9b83e330e80903.js new file mode 100644 index 000000000..f755c141a Binary files /dev/null and b/priv/static/static/js/app.f8af8a9b83e330e80903.js differ diff --git a/priv/static/static/js/app.f8af8a9b83e330e80903.js.map b/priv/static/static/js/app.f8af8a9b83e330e80903.js.map new file mode 100644 index 000000000..106368819 Binary files /dev/null and b/priv/static/static/js/app.f8af8a9b83e330e80903.js.map differ diff --git a/priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js b/priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js similarity index 81% rename from priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js rename to priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js index bffb28fa7..f59457df6 100644 Binary files a/priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js and b/priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js differ diff --git a/priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js.map b/priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js.map new file mode 100644 index 000000000..b0ccd82fb Binary files /dev/null and b/priv/static/static/js/vendors~app.52ac194cbc427f97f06e.js.map differ diff --git a/priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js.map b/priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js.map deleted file mode 100644 index 044d577a6..000000000 Binary files a/priv/static/static/js/vendors~app.c26cf2fc57e9c1975e8d.js.map and /dev/null differ diff --git a/priv/static/sw-pleroma.js b/priv/static/sw-pleroma.js index f55ef0112..42ef52ad4 100644 Binary files a/priv/static/sw-pleroma.js and b/priv/static/sw-pleroma.js differ diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index fc110417c..ba58e48e8 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -37,15 +37,15 @@ test "has an emoji reaction list" do status = StatusView.render("show.json", activity: activity) assert status[:pleroma][:emoji_reactions] == [ - %{emoji: "☕", count: 2, reacted: false}, - %{emoji: "🍵", count: 1, reacted: false} + %{name: "☕", count: 2, me: false}, + %{name: "🍵", count: 1, me: false} ] status = StatusView.render("show.json", activity: activity, for: user) assert status[:pleroma][:emoji_reactions] == [ - %{emoji: "☕", count: 2, reacted: true}, - %{emoji: "🍵", count: 1, reacted: false} + %{name: "☕", count: 2, me: true}, + %{name: "🍵", count: 1, me: false} ] end diff --git a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs index be5007de5..36868db38 100644 --- a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do import Pleroma.Factory - test "POST /api/v1/pleroma/statuses/:id/react_with_emoji", %{conn: conn} do + test "PUT /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do user = insert(:user) other_user = insert(:user) @@ -24,18 +24,19 @@ test "POST /api/v1/pleroma/statuses/:id/react_with_emoji", %{conn: conn} do conn |> assign(:user, other_user) |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) - |> post("/api/v1/pleroma/statuses/#{activity.id}/react_with_emoji", %{"emoji" => "☕"}) + |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/☕") |> json_response(200) + # We return the status, but this our implementation detail. assert %{"id" => id} = result assert to_string(activity.id) == id assert result["pleroma"]["emoji_reactions"] == [ - %{"emoji" => "☕", "count" => 1, "reacted" => true} + %{"name" => "☕", "count" => 1, "me" => true} ] end - test "POST /api/v1/pleroma/statuses/:id/unreact_with_emoji", %{conn: conn} do + test "DELETE /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do user = insert(:user) other_user = insert(:user) @@ -46,7 +47,7 @@ test "POST /api/v1/pleroma/statuses/:id/unreact_with_emoji", %{conn: conn} do conn |> assign(:user, other_user) |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) - |> post("/api/v1/pleroma/statuses/#{activity.id}/unreact_with_emoji", %{"emoji" => "☕"}) + |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/☕") assert %{"id" => id} = json_response(result, 200) assert to_string(activity.id) == id @@ -56,7 +57,7 @@ test "POST /api/v1/pleroma/statuses/:id/unreact_with_emoji", %{conn: conn} do assert object.data["reaction_count"] == 0 end - test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do + test "GET /api/v1/pleroma/statuses/:id/reactions", %{conn: conn} do user = insert(:user) other_user = insert(:user) doomed_user = insert(:user) @@ -65,7 +66,7 @@ test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do result = conn - |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by") + |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions") |> json_response(200) assert result == [] @@ -77,11 +78,10 @@ test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do result = conn - |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by") + |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions") |> json_response(200) - [%{"emoji" => "🎅", "count" => 1, "accounts" => [represented_user], "reacted" => false}] = - result + [%{"name" => "🎅", "count" => 1, "accounts" => [represented_user], "me" => false}] = result assert represented_user["id"] == other_user.id @@ -89,10 +89,10 @@ test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do conn |> assign(:user, other_user) |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["read:statuses"])) - |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by") + |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions") |> json_response(200) - assert [%{"emoji" => "🎅", "count" => 1, "accounts" => [_represented_user], "reacted" => true}] = + assert [%{"name" => "🎅", "count" => 1, "accounts" => [_represented_user], "me" => true}] = result end diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs new file mode 100644 index 000000000..ab0a2c3df --- /dev/null +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -0,0 +1,142 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.TwitterAPI.ControllerTest do + use Pleroma.Web.ConnCase + + alias Pleroma.Builders.ActivityBuilder + alias Pleroma.Repo + alias Pleroma.User + alias Pleroma.Web.OAuth.Token + + import Pleroma.Factory + + describe "POST /api/qvitter/statuses/notifications/read" do + test "without valid credentials", %{conn: conn} do + conn = post(conn, "/api/qvitter/statuses/notifications/read", %{"latest_id" => 1_234_567}) + assert json_response(conn, 403) == %{"error" => "Invalid credentials."} + end + + test "with credentials, without any params" do + %{user: current_user, conn: conn} = + oauth_access(["read:notifications", "write:notifications"]) + + conn = + conn + |> assign(:user, current_user) + |> post("/api/qvitter/statuses/notifications/read") + + assert json_response(conn, 400) == %{ + "error" => "You need to specify latest_id", + "request" => "/api/qvitter/statuses/notifications/read" + } + end + + test "with credentials, with params" do + %{user: current_user, conn: conn} = + oauth_access(["read:notifications", "write:notifications"]) + + other_user = insert(:user) + + {:ok, _activity} = + ActivityBuilder.insert(%{"to" => [current_user.ap_id]}, %{user: other_user}) + + response_conn = + conn + |> assign(:user, current_user) + |> get("/api/v1/notifications") + + [notification] = response = json_response(response_conn, 200) + + assert length(response) == 1 + + assert notification["pleroma"]["is_seen"] == false + + response_conn = + conn + |> assign(:user, current_user) + |> post("/api/qvitter/statuses/notifications/read", %{"latest_id" => notification["id"]}) + + [notification] = response = json_response(response_conn, 200) + + assert length(response) == 1 + + assert notification["pleroma"]["is_seen"] == true + end + end + + describe "GET /api/account/confirm_email/:id/:token" do + setup do + {:ok, user} = + insert(:user) + |> User.confirmation_changeset(need_confirmation: true) + |> Repo.update() + + assert user.confirmation_pending + + [user: user] + end + + test "it redirects to root url", %{conn: conn, user: user} do + conn = get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}") + + assert 302 == conn.status + end + + test "it confirms the user account", %{conn: conn, user: user} do + get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}") + + user = User.get_cached_by_id(user.id) + + refute user.confirmation_pending + refute user.confirmation_token + end + + test "it returns 500 if user cannot be found by id", %{conn: conn, user: user} do + conn = get(conn, "/api/account/confirm_email/0/#{user.confirmation_token}") + + assert 500 == conn.status + end + + test "it returns 500 if token is invalid", %{conn: conn, user: user} do + conn = get(conn, "/api/account/confirm_email/#{user.id}/wrong_token") + + assert 500 == conn.status + end + end + + describe "GET /api/oauth_tokens" do + setup do + token = insert(:oauth_token) |> Repo.preload(:user) + + %{token: token} + end + + test "renders list", %{token: token} do + response = + build_conn() + |> assign(:user, token.user) + |> get("/api/oauth_tokens") + + keys = + json_response(response, 200) + |> hd() + |> Map.keys() + + assert keys -- ["id", "app_name", "valid_until"] == [] + end + + test "revoke token", %{token: token} do + response = + build_conn() + |> assign(:user, token.user) + |> delete("/api/oauth_tokens/#{token.id}") + + tokens = Token.get_user_tokens(token.user) + + assert tokens == [] + assert response.status == 201 + end + end +end