Merge pull request 'fix: Give error message to users when address has already been...
[akkoma] / test / pleroma / web / twitter_api / controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.TwitterAPI.ControllerTest do
6 use Pleroma.Web.ConnCase, async: true
7
8 alias Pleroma.Repo
9 alias Pleroma.User
10 alias Pleroma.Web.OAuth.Token
11
12 import Pleroma.Factory
13
14 describe "GET /api/account/confirm_email/:id/:token" do
15 setup do
16 {:ok, user} =
17 insert(:user)
18 |> User.confirmation_changeset(set_confirmation: false)
19 |> Repo.update()
20
21 refute user.is_confirmed
22
23 [user: user]
24 end
25
26 test "it redirects to root url", %{conn: conn, user: user} do
27 conn = get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}")
28
29 assert 302 == conn.status
30 end
31
32 test "it confirms the user account", %{conn: conn, user: user} do
33 get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}")
34
35 user = User.get_cached_by_id(user.id)
36
37 assert user.is_confirmed
38 refute user.confirmation_token
39 end
40
41 test "confirmation is requested twice", %{conn: conn, user: user} do
42 conn = get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}")
43 assert 302 == conn.status
44
45 conn = get(conn, "/api/account/confirm_email/#{user.id}/#{user.confirmation_token}")
46 assert 400 == conn.status
47 assert "Already verified email" == conn.resp_body
48
49 user = User.get_cached_by_id(user.id)
50
51 assert user.is_confirmed
52 refute user.confirmation_token
53 end
54
55 test "it returns 400 if user cannot be found by id", %{conn: conn, user: user} do
56 conn = get(conn, "/api/account/confirm_email/0/#{user.confirmation_token}")
57
58 assert 400 == conn.status
59 end
60
61 test "it returns 400 if token is invalid", %{conn: conn, user: user} do
62 conn = get(conn, "/api/account/confirm_email/#{user.id}/wrong_token")
63
64 assert 400 == conn.status
65 end
66 end
67
68 describe "GET /api/oauth_tokens" do
69 setup do
70 token = insert(:oauth_token) |> Repo.preload(:user)
71
72 %{token: token}
73 end
74
75 test "renders list", %{token: token} do
76 response =
77 build_conn()
78 |> assign(:user, token.user)
79 |> get("/api/oauth_tokens")
80
81 keys =
82 json_response(response, 200)
83 |> hd()
84 |> Map.keys()
85
86 assert keys -- ["id", "app_name", "valid_until"] == []
87 end
88
89 test "revoke token", %{token: token} do
90 response =
91 build_conn()
92 |> assign(:user, token.user)
93 |> delete("/api/oauth_tokens/#{token.id}")
94
95 tokens = Token.get_user_tokens(token.user)
96
97 assert tokens == []
98 assert response.status == 201
99 end
100 end
101 end