diff options
| author | kaniini <ariadne@dereferenced.org> | 2019-10-02 07:02:56 +0000 | 
|---|---|---|
| committer | kaniini <ariadne@dereferenced.org> | 2019-10-02 07:02:56 +0000 | 
| commit | 8557176808a0f3bbbc69a5c2eb90f4ed032dd70a (patch) | |
| tree | 6a12d6e77c337fe861ab1c8c956bc534d23807d7 /test/web/mastodon_api | |
| parent | 9b38bf4af47f65ecef92ef69f0a5541e4b21902d (diff) | |
| parent | af690d10336124968e2a0fe0e73decb2d48819cb (diff) | |
| download | pleroma-8557176808a0f3bbbc69a5c2eb90f4ed032dd70a.tar.gz pleroma-8557176808a0f3bbbc69a5c2eb90f4ed032dd70a.zip | |
Merge branch 'split-masto-api/auth' into 'develop'
Extract auth actions from `MastodonAPIController` to `AuthController`
See merge request pleroma/pleroma!1759
Diffstat (limited to 'test/web/mastodon_api')
| -rw-r--r-- | test/web/mastodon_api/controllers/auth_controller_test.exs | 121 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 91 | 
2 files changed, 121 insertions, 91 deletions
| diff --git a/test/web/mastodon_api/controllers/auth_controller_test.exs b/test/web/mastodon_api/controllers/auth_controller_test.exs new file mode 100644 index 000000000..98b2a82e7 --- /dev/null +++ b/test/web/mastodon_api/controllers/auth_controller_test.exs @@ -0,0 +1,121 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.AuthControllerTest do +  use Pleroma.Web.ConnCase + +  alias Pleroma.Config +  alias Pleroma.Repo +  alias Pleroma.Tests.ObanHelpers + +  import Pleroma.Factory +  import Swoosh.TestAssertions + +  describe "GET /web/login" do +    setup %{conn: conn} do +      session_opts = [ +        store: :cookie, +        key: "_test", +        signing_salt: "cooldude" +      ] + +      conn = +        conn +        |> Plug.Session.call(Plug.Session.init(session_opts)) +        |> fetch_session() + +      test_path = "/web/statuses/test" +      %{conn: conn, path: test_path} +    end + +    test "redirects to the saved path after log in", %{conn: conn, path: path} do +      app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") +      auth = insert(:oauth_authorization, app: app) + +      conn = +        conn +        |> put_session(:return_to, path) +        |> get("/web/login", %{code: auth.token}) + +      assert conn.status == 302 +      assert redirected_to(conn) == path +    end + +    test "redirects to the getting-started page when referer is not present", %{conn: conn} do +      app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") +      auth = insert(:oauth_authorization, app: app) + +      conn = get(conn, "/web/login", %{code: auth.token}) + +      assert conn.status == 302 +      assert redirected_to(conn) == "/web/getting-started" +    end +  end + +  describe "POST /auth/password, with valid parameters" do +    setup %{conn: conn} do +      user = insert(:user) +      conn = post(conn, "/auth/password?email=#{user.email}") +      %{conn: conn, user: user} +    end + +    test "it returns 204", %{conn: conn} do +      assert json_response(conn, :no_content) +    end + +    test "it creates a PasswordResetToken record for user", %{user: user} do +      token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) +      assert token_record +    end + +    test "it sends an email to user", %{user: user} do +      ObanHelpers.perform_all() +      token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) + +      email = Pleroma.Emails.UserEmail.password_reset_email(user, token_record.token) +      notify_email = Config.get([:instance, :notify_email]) +      instance_name = Config.get([:instance, :name]) + +      assert_email_sent( +        from: {instance_name, notify_email}, +        to: {user.name, user.email}, +        html_body: email.html_body +      ) +    end +  end + +  describe "POST /auth/password, with invalid parameters" do +    setup do +      user = insert(:user) +      {:ok, user: user} +    end + +    test "it returns 404 when user is not found", %{conn: conn, user: user} do +      conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") +      assert conn.status == 404 +      assert conn.resp_body == "" +    end + +    test "it returns 400 when user is not local", %{conn: conn, user: user} do +      {:ok, user} = Repo.update(Ecto.Changeset.change(user, local: false)) +      conn = post(conn, "/auth/password?email=#{user.email}") +      assert conn.status == 400 +      assert conn.resp_body == "" +    end +  end + +  describe "DELETE /auth/sign_out" do +    test "redirect to root page", %{conn: conn} do +      user = insert(:user) + +      conn = +        conn +        |> assign(:user, user) +        |> delete("/auth/sign_out") + +      assert conn.status == 302 +      assert redirected_to(conn) == "/" +    end +  end +end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index ae67ee89d..e642e3c1a 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -9,12 +9,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    alias Pleroma.Config    alias Pleroma.Notification    alias Pleroma.Repo -  alias Pleroma.Tests.ObanHelpers    alias Pleroma.User    alias Pleroma.Web.CommonAPI    import Pleroma.Factory -  import Swoosh.TestAssertions    import Tesla.Mock    setup do @@ -307,95 +305,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert return_to == path      end - -    test "redirects to the saved path after log in", %{conn: conn, path: path} do -      app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") -      auth = insert(:oauth_authorization, app: app) - -      conn = -        conn -        |> put_session(:return_to, path) -        |> get("/web/login", %{code: auth.token}) - -      assert conn.status == 302 -      assert redirected_to(conn) == path -    end - -    test "redirects to the getting-started page when referer is not present", %{conn: conn} do -      app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") -      auth = insert(:oauth_authorization, app: app) - -      conn = get(conn, "/web/login", %{code: auth.token}) - -      assert conn.status == 302 -      assert redirected_to(conn) == "/web/getting-started" -    end -  end - -  describe "POST /auth/password, with valid parameters" do -    setup %{conn: conn} do -      user = insert(:user) -      conn = post(conn, "/auth/password?email=#{user.email}") -      %{conn: conn, user: user} -    end - -    test "it returns 204", %{conn: conn} do -      assert json_response(conn, :no_content) -    end - -    test "it creates a PasswordResetToken record for user", %{user: user} do -      token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) -      assert token_record -    end - -    test "it sends an email to user", %{user: user} do -      ObanHelpers.perform_all() -      token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) - -      email = Pleroma.Emails.UserEmail.password_reset_email(user, token_record.token) -      notify_email = Config.get([:instance, :notify_email]) -      instance_name = Config.get([:instance, :name]) - -      assert_email_sent( -        from: {instance_name, notify_email}, -        to: {user.name, user.email}, -        html_body: email.html_body -      ) -    end -  end - -  describe "POST /auth/password, with invalid parameters" do -    setup do -      user = insert(:user) -      {:ok, user: user} -    end - -    test "it returns 404 when user is not found", %{conn: conn, user: user} do -      conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") -      assert conn.status == 404 -      assert conn.resp_body == "" -    end - -    test "it returns 400 when user is not local", %{conn: conn, user: user} do -      {:ok, user} = Repo.update(Changeset.change(user, local: false)) -      conn = post(conn, "/auth/password?email=#{user.email}") -      assert conn.status == 400 -      assert conn.resp_body == "" -    end -  end - -  describe "DELETE /auth/sign_out" do -    test "redirect to root page", %{conn: conn} do -      user = insert(:user) - -      conn = -        conn -        |> assign(:user, user) -        |> delete("/auth/sign_out") - -      assert conn.status == 302 -      assert redirected_to(conn) == "/" -    end    end    describe "empty_array, stubs for mastodon api" do | 
