diff options
Diffstat (limited to 'test/support')
| -rw-r--r-- | test/support/conn_case.ex | 20 | ||||
| -rw-r--r-- | test/support/factory.ex | 44 | ||||
| -rw-r--r-- | test/support/helpers.ex | 15 | ||||
| -rw-r--r-- | test/support/http_request_mock.ex | 18 | 
4 files changed, 80 insertions, 17 deletions
| diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 9897f72ce..22e72fc09 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -28,6 +28,26 @@ defmodule Pleroma.Web.ConnCase do        # The default endpoint for testing        @endpoint Pleroma.Web.Endpoint + +      # Sets up OAuth access with specified scopes +      defp oauth_access(scopes, opts \\ []) do +        user = +          Keyword.get_lazy(opts, :user, fn -> +            Pleroma.Factory.insert(:user) +          end) + +        token = +          Keyword.get_lazy(opts, :oauth_token, fn -> +            Pleroma.Factory.insert(:oauth_token, user: user, scopes: scopes) +          end) + +        conn = +          build_conn() +          |> assign(:user, user) +          |> assign(:token, token) + +        %{user: user, token: token, conn: conn} +      end      end    end diff --git a/test/support/factory.ex b/test/support/factory.ex index 314f26ec9..780235cb9 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -296,7 +296,7 @@ defmodule Pleroma.Factory do      %Pleroma.Web.OAuth.App{        client_name: "Some client",        redirect_uris: "https://example.com/callback", -      scopes: ["read", "write", "follow", "push"], +      scopes: ["read", "write", "follow", "push", "admin"],        website: "https://example.com",        client_id: Ecto.UUID.generate(),        client_secret: "aaa;/&bbb" @@ -310,19 +310,37 @@ defmodule Pleroma.Factory do      }    end -  def oauth_token_factory do -    oauth_app = insert(:oauth_app) +  def oauth_token_factory(attrs \\ %{}) do +    scopes = Map.get(attrs, :scopes, ["read"]) +    oauth_app = Map.get_lazy(attrs, :app, fn -> insert(:oauth_app, scopes: scopes) end) +    user = Map.get_lazy(attrs, :user, fn -> build(:user) end) + +    valid_until = +      Map.get(attrs, :valid_until, NaiveDateTime.add(NaiveDateTime.utc_now(), 60 * 10))      %Pleroma.Web.OAuth.Token{        token: :crypto.strong_rand_bytes(32) |> Base.url_encode64(), -      scopes: ["read"],        refresh_token: :crypto.strong_rand_bytes(32) |> Base.url_encode64(), -      user: build(:user), -      app_id: oauth_app.id, -      valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), 60 * 10) +      scopes: scopes, +      user: user, +      app: oauth_app, +      valid_until: valid_until      }    end +  def oauth_admin_token_factory(attrs \\ %{}) do +    user = Map.get_lazy(attrs, :user, fn -> build(:user, is_admin: true) end) + +    scopes = +      attrs +      |> Map.get(:scopes, ["admin"]) +      |> Kernel.++(["admin"]) +      |> Enum.uniq() + +    attrs = Map.merge(attrs, %{user: user, scopes: scopes}) +    oauth_token_factory(attrs) +  end +    def oauth_authorization_factory do      %Pleroma.Web.OAuth.Authorization{        token: :crypto.strong_rand_bytes(32) |> Base.url_encode64(padding: false), @@ -376,9 +394,15 @@ defmodule Pleroma.Factory do    end    def config_factory do -    %Pleroma.Web.AdminAPI.Config{ -      key: sequence(:key, &"some_key_#{&1}"), -      group: "pleroma", +    %Pleroma.ConfigDB{ +      key: +        sequence(:key, fn key -> +          # Atom dynamic registration hack in tests +          "some_key_#{key}" +          |> String.to_atom() +          |> inspect() +        end), +      group: ":pleroma",        value:          sequence(            :value, diff --git a/test/support/helpers.ex b/test/support/helpers.ex index af2b2eddf..9f817622d 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Tests.Helpers do    @moduledoc """    Helpers for use in tests.    """ +  alias Pleroma.Config    defmacro clear_config(config_path) do      quote do @@ -17,9 +18,9 @@ defmodule Pleroma.Tests.Helpers do    defmacro clear_config(config_path, do: yield) do      quote do        setup do -        initial_setting = Pleroma.Config.get(unquote(config_path)) +        initial_setting = Config.get(unquote(config_path))          unquote(yield) -        on_exit(fn -> Pleroma.Config.put(unquote(config_path), initial_setting) end) +        on_exit(fn -> Config.put(unquote(config_path), initial_setting) end)          :ok        end      end @@ -35,9 +36,9 @@ defmodule Pleroma.Tests.Helpers do    defmacro clear_config_all(config_path, do: yield) do      quote do        setup_all do -        initial_setting = Pleroma.Config.get(unquote(config_path)) +        initial_setting = Config.get(unquote(config_path))          unquote(yield) -        on_exit(fn -> Pleroma.Config.put(unquote(config_path), initial_setting) end) +        on_exit(fn -> Config.put(unquote(config_path), initial_setting) end)          :ok        end      end @@ -94,10 +95,10 @@ defmodule Pleroma.Tests.Helpers do        defmacro guards_config(config_path) do          quote do -          initial_setting = Pleroma.Config.get(config_path) +          initial_setting = Config.get(config_path) -          Pleroma.Config.put(config_path, true) -          on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end) +          Config.put(config_path, true) +          on_exit(fn -> Config.put(config_path, initial_setting) end)          end        end      end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index e3a621f49..f43de700d 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -308,6 +308,24 @@ defmodule HttpRequestMock do       }}    end +  def get("https://mobilizon.org/events/252d5816-00a3-4a89-a66f-15bf65c33e39", _, _, +        Accept: "application/activity+json" +      ) do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/tesla_mock/mobilizon.org-event.json") +     }} +  end + +  def get("https://mobilizon.org/@tcit", _, _, Accept: "application/activity+json") do +    {:ok, +     %Tesla.Env{ +       status: 200, +       body: File.read!("test/fixtures/tesla_mock/mobilizon.org-user.json") +     }} +  end +    def get("https://baptiste.gelez.xyz/@/BaptisteGelez", _, _, _) do      {:ok,       %Tesla.Env{ | 
