diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/user_test.exs | 36 | ||||
| -rw-r--r-- | test/web/oauth/oauth_controller_test.exs | 51 | 
2 files changed, 65 insertions, 22 deletions
| diff --git a/test/user_test.exs b/test/user_test.exs index 9da1e02a9..158f98e66 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1286,23 +1286,35 @@ defmodule Pleroma.UserTest do      end    end -  test "auth_active?/1 works correctly" do -    Pleroma.Config.put([:instance, :account_activation_required], true) +  describe "account_status/1" do +    clear_config([:instance, :account_activation_required]) -    local_user = insert(:user, local: true, confirmation_pending: true) -    confirmed_user = insert(:user, local: true, confirmation_pending: false) -    remote_user = insert(:user, local: false) +    test "return confirmation_pending for unconfirm user" do +      Pleroma.Config.put([:instance, :account_activation_required], true) +      user = insert(:user, confirmation_pending: true) +      assert User.account_status(user) == :confirmation_pending +    end -    refute User.auth_active?(local_user) -    assert User.auth_active?(confirmed_user) -    assert User.auth_active?(remote_user) +    test "return active for confirmed user" do +      Pleroma.Config.put([:instance, :account_activation_required], true) +      user = insert(:user, confirmation_pending: false) +      assert User.account_status(user) == :active +    end -    # also shows unactive for deactivated users +    test "return active for remote user" do +      user = insert(:user, local: false) +      assert User.account_status(user) == :active +    end -    deactivated_but_confirmed = -      insert(:user, local: true, confirmation_pending: false, deactivated: true) +    test "returns :password_reset_pending for user with reset password" do +      user = insert(:user, password_reset_pending: true) +      assert User.account_status(user) == :password_reset_pending +    end -    refute User.auth_active?(deactivated_but_confirmed) +    test "returns :deactivated for deactivated user" do +      user = insert(:user, local: true, confirmation_pending: false, deactivated: true) +      assert User.account_status(user) == :deactivated +    end    end    describe "superuser?/1" do diff --git a/test/web/oauth/oauth_controller_test.exs b/test/web/oauth/oauth_controller_test.exs index 59f4674eb..adeff8e25 100644 --- a/test/web/oauth/oauth_controller_test.exs +++ b/test/web/oauth/oauth_controller_test.exs @@ -819,7 +819,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do          |> User.confirmation_changeset(need_confirmation: true)          |> User.update_and_set_cache() -      refute Pleroma.User.auth_active?(user) +      refute Pleroma.User.account_status(user) == :active        app = insert(:oauth_app) @@ -849,7 +849,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do        app = insert(:oauth_app) -      conn = +      resp =          build_conn()          |> post("/oauth/token", %{            "grant_type" => "password", @@ -858,10 +858,12 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do            "client_id" => app.client_id,            "client_secret" => app.client_secret          }) +        |> json_response(403) -      assert resp = json_response(conn, 403) -      assert %{"error" => _} = resp -      refute Map.has_key?(resp, "access_token") +      assert resp == %{ +               "error" => "Your account is currently disabled", +               "identifier" => "account_is_disabled" +             }      end      test "rejects token exchange for user with password_reset_pending set to true" do @@ -875,7 +877,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do        app = insert(:oauth_app, scopes: ["read", "write"]) -      conn = +      resp =          build_conn()          |> post("/oauth/token", %{            "grant_type" => "password", @@ -884,12 +886,41 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do            "client_id" => app.client_id,            "client_secret" => app.client_secret          }) +        |> json_response(403) -      assert resp = json_response(conn, 403) +      assert resp == %{ +               "error" => "Password reset is required", +               "identifier" => "password_reset_required" +             } +    end -      assert resp["error"] == "Password reset is required" -      assert resp["identifier"] == "password_reset_required" -      refute Map.has_key?(resp, "access_token") +    test "rejects token exchange for user with confirmation_pending set to true" do +      Pleroma.Config.put([:instance, :account_activation_required], true) +      password = "testpassword" + +      user = +        insert(:user, +          password_hash: Comeonin.Pbkdf2.hashpwsalt(password), +          confirmation_pending: true +        ) + +      app = insert(:oauth_app, scopes: ["read", "write"]) + +      resp = +        build_conn() +        |> post("/oauth/token", %{ +          "grant_type" => "password", +          "username" => user.nickname, +          "password" => password, +          "client_id" => app.client_id, +          "client_secret" => app.client_secret +        }) +        |> json_response(403) + +      assert resp == %{ +               "error" => "Your login is missing a confirmed e-mail address", +               "identifier" => "missing_confirmed_email" +             }      end      test "rejects an invalid authorization code" do | 
