diff options
Diffstat (limited to 'test/support')
| -rw-r--r-- | test/support/api_spec_helpers.ex | 4 | ||||
| -rw-r--r-- | test/support/conn_case.ex | 4 | ||||
| -rw-r--r-- | test/support/factory.ex | 95 | ||||
| -rw-r--r-- | test/support/helpers.ex | 3 | ||||
| -rw-r--r-- | test/support/http_request_mock.ex | 12 | ||||
| -rw-r--r-- | test/support/mrf_module_mock.ex | 2 | 
6 files changed, 100 insertions, 20 deletions
| diff --git a/test/support/api_spec_helpers.ex b/test/support/api_spec_helpers.ex index 36d6a8b81..886e72d73 100644 --- a/test/support/api_spec_helpers.ex +++ b/test/support/api_spec_helpers.ex @@ -29,9 +29,7 @@ defmodule Pleroma.Tests.ApiSpecHelpers do            end)          flunk( -          "Value does not conform to schema #{schema.title}: #{Enum.join(errors, "\n")}\n#{ -            inspect(value) -          }" +          "Value does not conform to schema #{schema.title}: #{Enum.join(errors, "\n")}\n#{inspect(value)}"          )      end    end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index deee98599..eab469833 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -102,9 +102,7 @@ defmodule Pleroma.Web.ConnCase do                end)              flunk( -              "Response does not conform to schema of #{op_id} operation: #{ -                Enum.join(errors, "\n") -              }\n#{inspect(json)}" +              "Response does not conform to schema of #{op_id} operation: #{Enum.join(errors, "\n")}\n#{inspect(json)}"              )          end        end diff --git a/test/support/factory.ex b/test/support/factory.ex index 5c4e65c81..4a78425ce 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -142,6 +142,11 @@ defmodule Pleroma.Factory do      }    end +  def followers_only_note_factory(attrs \\ %{}) do +    %Pleroma.Object{data: data} = note_factory(attrs) +    %Pleroma.Object{data: Map.merge(data, %{"to" => [data["actor"] <> "/followers"]})} +  end +    def audio_factory(attrs \\ %{}) do      text = sequence(:text, &"lain radio episode #{&1}") @@ -191,8 +196,8 @@ defmodule Pleroma.Factory do    end    def article_factory do -    note_factory() -    |> Map.put("type", "Article") +    %Pleroma.Object{data: data} = note_factory() +    %Pleroma.Object{data: Map.merge(data, %{"type" => "Article"})}    end    def tombstone_factory do @@ -208,6 +213,38 @@ defmodule Pleroma.Factory do      }    end +  def question_factory(attrs \\ %{}) do +    user = attrs[:user] || insert(:user) + +    data = %{ +      "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(), +      "type" => "Question", +      "actor" => user.ap_id, +      "attributedTo" => user.ap_id, +      "attachment" => [], +      "to" => ["https://www.w3.org/ns/activitystreams#Public"], +      "cc" => [user.follower_address], +      "context" => Pleroma.Web.ActivityPub.Utils.generate_context_id(), +      "closed" => DateTime.utc_now() |> DateTime.add(86_400) |> DateTime.to_iso8601(), +      "oneOf" => [ +        %{ +          "type" => "Note", +          "name" => "chocolate", +          "replies" => %{"totalItems" => 0, "type" => "Collection"} +        }, +        %{ +          "type" => "Note", +          "name" => "vanilla", +          "replies" => %{"totalItems" => 0, "type" => "Collection"} +        } +      ] +    } + +    %Pleroma.Object{ +      data: merge_attributes(data, Map.get(attrs, :data, %{})) +    } +  end +    def direct_note_activity_factory do      dm = insert(:direct_note) @@ -267,6 +304,33 @@ defmodule Pleroma.Factory do      |> Map.merge(attrs)    end +  def followers_only_note_activity_factory(attrs \\ %{}) do +    user = attrs[:user] || insert(:user) +    note = insert(:followers_only_note, user: user) + +    data_attrs = attrs[:data_attrs] || %{} +    attrs = Map.drop(attrs, [:user, :note, :data_attrs]) + +    data = +      %{ +        "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(), +        "type" => "Create", +        "actor" => note.data["actor"], +        "to" => note.data["to"], +        "object" => note.data, +        "published" => DateTime.utc_now() |> DateTime.to_iso8601(), +        "context" => note.data["context"] +      } +      |> Map.merge(data_attrs) + +    %Pleroma.Activity{ +      data: data, +      actor: data["actor"], +      recipients: data["to"] +    } +    |> Map.merge(attrs) +  end +    def note_activity_factory(attrs \\ %{}) do      user = attrs[:user] || insert(:user)      note = attrs[:note] || insert(:note, user: user) @@ -396,6 +460,33 @@ defmodule Pleroma.Factory do      }    end +  def question_activity_factory(attrs \\ %{}) do +    user = attrs[:user] || insert(:user) +    question = attrs[:question] || insert(:question, user: user) + +    data_attrs = attrs[:data_attrs] || %{} +    attrs = Map.drop(attrs, [:user, :question, :data_attrs]) + +    data = +      %{ +        "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(), +        "type" => "Create", +        "actor" => question.data["actor"], +        "to" => question.data["to"], +        "object" => question.data["id"], +        "published" => DateTime.utc_now() |> DateTime.to_iso8601(), +        "context" => question.data["context"] +      } +      |> Map.merge(data_attrs) + +    %Pleroma.Activity{ +      data: data, +      actor: data["actor"], +      recipients: data["to"] +    } +    |> Map.merge(attrs) +  end +    def oauth_app_factory do      %Pleroma.Web.OAuth.App{        client_name: sequence(:client_name, &"Some client #{&1}"), diff --git a/test/support/helpers.ex b/test/support/helpers.ex index 856a6a376..34f1505d0 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -42,8 +42,7 @@ defmodule Pleroma.Tests.Helpers do      # Displaying a warning to prevent unintentional clearing of all but one keys in section      if Keyword.keyword?(temp_setting) and length(temp_setting) == 1 do        Logger.warn( -        "Please change to `clear_config([section]); clear_config([section, key], value)`: " <> -          "#{inspect(config_path)}, #{inspect(temp_setting)}" +        "Please change `clear_config([section], key: value)` to `clear_config([section, key], value)`"        )      end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 8807c2d14..94900dc14 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1313,9 +1313,7 @@ defmodule HttpRequestMock do    def get(url, query, body, headers) do      {:error, -     "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{ -       inspect(headers) -     }"} +     "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"}    end    # POST Requests @@ -1381,9 +1379,7 @@ defmodule HttpRequestMock do    def post(url, query, body, headers) do      {:error, -     "Mock response not implemented for POST #{inspect(url)}, #{query}, #{inspect(body)}, #{ -       inspect(headers) -     }"} +     "Mock response not implemented for POST #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"}    end    # Most of the rich media mocks are missing HEAD requests, so we just return 404. @@ -1398,8 +1394,6 @@ defmodule HttpRequestMock do    def head(url, query, body, headers) do      {:error, -     "Mock response not implemented for HEAD #{inspect(url)}, #{query}, #{inspect(body)}, #{ -       inspect(headers) -     }"} +     "Mock response not implemented for HEAD #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"}    end  end diff --git a/test/support/mrf_module_mock.ex b/test/support/mrf_module_mock.ex index 4dfdeb3b4..4d21d7fe0 100644 --- a/test/support/mrf_module_mock.ex +++ b/test/support/mrf_module_mock.ex @@ -3,7 +3,7 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule MRFModuleMock do -  @behaviour Pleroma.Web.ActivityPub.MRF +  @behaviour Pleroma.Web.ActivityPub.MRF.Policy    @impl true    def filter(message), do: {:ok, message} | 
