[#114] Moved email_invite action to AdminAPIController, adjusted tests.
authorIvan Tashkinov <ivantashkinov@gmail.com>
Thu, 13 Dec 2018 15:23:05 +0000 (18:23 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Fri, 14 Dec 2018 09:28:23 +0000 (12:28 +0300)
lib/pleroma/web/admin_api/admin_api_controller.ex
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex
test/web/admin_api/admin_api_controller_test.exs
test/web/twitter_api/twitter_api_controller_test.exs

index 06c3c7c817a61c908e859254845aba44bbfc620c..4d73cf219c379f47022b6fcddfb0d5674ee0babb 100644 (file)
@@ -147,6 +147,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
     end
   end
 
+  @doc "Sends registration invite via email"
+  def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) do
+    with true <-
+           Pleroma.Config.get([:instance, :invites_enabled]) &&
+             !Pleroma.Config.get([:instance, :registrations_open]),
+         {:ok, invite_token} <- Pleroma.UserInviteToken.create_token(),
+         email <-
+           Pleroma.UserEmail.user_invitation_email(user, invite_token, email, params["name"]),
+         {:ok, _} <- Pleroma.Mailer.deliver(email) do
+      json_response(conn, :no_content, "")
+    end
+  end
+
   @doc "Get a account registeration invite token (base64 string)"
   def get_invite_token(conn, _params) do
     {:ok, token} = Pleroma.UserInviteToken.create_token()
index 6253a28dbf8b9d90dd727097ecdf81fc02712068..daff3362c9b9ae3a039883253e886706558e6961 100644 (file)
@@ -117,6 +117,8 @@ defmodule Pleroma.Web.Router do
     delete("/relay", AdminAPIController, :relay_unfollow)
 
     get("/invite_token", AdminAPIController, :get_invite_token)
+    post("/email_invite", AdminAPIController, :email_invite)
+
     get("/password_reset", AdminAPIController, :get_password_reset)
   end
 
index 0607a1a6a833fa6e12ed03a43ab360589d8c2896..0ae0a0fea05fa9da79d8cb450d4c3773f692bc3e 100644 (file)
@@ -335,18 +335,6 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   def confirm_email(_conn, _params), do: :noop
 
-  def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) do
-    with true <-
-           Pleroma.Config.get([:instance, :invites_enabled]) &&
-             !Pleroma.Config.get([:instance, :registrations_open]),
-         {:ok, invite_token} <- Pleroma.UserInviteToken.create_token(),
-         email <-
-           Pleroma.UserEmail.user_invitation_email(user, invite_token, email, params["name"]),
-         {:ok, _} <- Pleroma.Mailer.deliver(email) do
-      json_response(conn, :no_content, "")
-    end
-  end
-
   def update_avatar(%{assigns: %{user: user}} = conn, params) do
     {:ok, object} = ActivityPub.upload(params, type: :avatar)
     change = Changeset.change(user, %{avatar: object.data})
index 4c12dd988dfd404efa97ed74fa52496d51a15abe..e7ad60aa309f380475a14a79ba7a508a83cdf68d 100644 (file)
@@ -154,6 +154,37 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
     end
   end
 
+  describe "POST /api/pleroma/admin/email_invite, with valid parameters" do
+    setup do
+      registrations_open = Pleroma.Config.get([:instance, :registrations_open])
+      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
+      Pleroma.Config.put([:instance, :registrations_open], false)
+      Pleroma.Config.put([:instance, :invites_enabled], true)
+
+      on_exit(fn ->
+        Pleroma.Config.put([:instance, :registrations_open], registrations_open)
+        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
+        :ok
+      end)
+
+      [user: insert(:user, info: %{is_admin: true})]
+    end
+
+    test "sends invitation and returns 204", %{conn: conn, user: user} do
+      recipient_email = "foo@bar.com"
+      recipient_name = "J. D."
+
+      conn =
+        conn
+        |> assign(:user, user)
+        |> post("/api/pleroma/admin/email_invite?email=#{recipient_email}&name=#{recipient_name}")
+
+      assert json_response(conn, :no_content)
+
+      Swoosh.TestAssertions.assert_email_sent()
+    end
+  end
+
   test "/api/pleroma/admin/invite_token" do
     admin = insert(:user, info: %{is_admin: true})
 
index e5c6f848d08d66a4271c53cf409475728882117d..c16c0cdc0f32759bcead129ccf2ca72cbed7669f 100644 (file)
@@ -873,39 +873,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
     end
   end
 
-  describe "POST /api/email_invite, with valid parameters" do
-    setup [:valid_user]
-
-    setup do
-      registrations_open = Pleroma.Config.get([:instance, :registrations_open])
-      invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
-      Pleroma.Config.put([:instance, :registrations_open], false)
-      Pleroma.Config.put([:instance, :invites_enabled], true)
-
-      on_exit(fn ->
-        Pleroma.Config.put([:instance, :registrations_open], registrations_open)
-        Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
-        :ok
-      end)
-
-      :ok
-    end
-
-    test "sends invitation and returns 204", %{conn: conn, user: user} do
-      recipient_email = "foo@bar.com"
-      recipient_name = "J. D."
-
-      conn =
-        conn
-        |> assign(:user, user)
-        |> post("/api/email_invite?email=#{recipient_email}&name=#{recipient_name}")
-
-      assert json_response(conn, :no_content)
-
-      Swoosh.TestAssertions.assert_email_sent()
-    end
-  end
-
   describe "GET /api/externalprofile/show" do
     test "it returns the user", %{conn: conn} do
       user = insert(:user)