summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFloatingGhost <hannah@coffee-and-dreams.uk>2022-01-07 20:14:04 +0000
committerFloatingGhost <hannah@coffee-and-dreams.uk>2022-01-07 20:14:04 +0000
commit25b43958306120cb905b59e56a2484624dbe0388 (patch)
tree20fa04556767c02382b6e45362ce9295ee9f9f81
parent2cc6b1e1bd3059b564d86cb0582827c30fc5cf65 (diff)
just drop unknown tagsbookwyrm-entities
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/tag_validator.ex47
-rw-r--r--test/fixtures/bookwyrm-article.json2
-rw-r--r--test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs97
3 files changed, 6 insertions, 140 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex b/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex
index dd1bc53ed..e7a7c1fc2 100644
--- a/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex
@@ -68,51 +68,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidator do
|> validate_required([:type, :name, :icon])
end
- def changeset(struct, %{"type" => "Book"} = data) do
- data =
- if Map.has_key?(data, "title") do
- Map.put(data, "name", data["title"])
- else
- data
- end
-
- struct
- |> cast(data, [:type, :name])
- |> validate_required([:type, :name])
- end
-
- def changeset(struct, %{"type" => "Edition"} = data) do
- # Sometimes it's title, sometimes name
- # Don't ask me.
- data =
- if Map.has_key?(data, "title") do
- Map.put(data, "name", data["title"])
- else
- data
- end
-
+ def changeset(struct, %{"type" => _} = data) do
struct
- |> cast(data, [:type, :name])
- |> validate_required([:type, :name])
- end
-
- def changeset(struct, %{"type" => "Work"} = data) do
- data =
- if Map.has_key?(data, "title") do
- Map.put(data, "name", data["title"])
- else
- data
- end
-
- struct
- |> cast(data, [:type, :name])
- |> validate_required([:type, :name])
- end
-
- def changeset(struct, %{"type" => "Author"} = data) do
- struct
- |> cast(data, [:type, :name])
- |> validate_required([:type, :name])
+ |> cast(data, [])
+ |> Map.put(:action, :ignore)
end
def icon_changeset(struct, data) do
diff --git a/test/fixtures/bookwyrm-article.json b/test/fixtures/bookwyrm-article.json
index 66b34b688..d0f520ec3 100644
--- a/test/fixtures/bookwyrm-article.json
+++ b/test/fixtures/bookwyrm-article.json
@@ -26,7 +26,7 @@
"type": "OrderedCollection"
},
"sensitive": false,
- "tag": [],
+ "tag": [{"type": "Edition"}],
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
diff --git a/test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs
index bca7a32b9..443dd308d 100644
--- a/test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs
+++ b/test/pleroma/web/activity_pub/object_validators/tag_validator_test.exs
@@ -7,106 +7,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidatorTest do
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator
- test "it validates an Edition" do
+ test "it doesn't error on unusual objects" do
edition = %{
"@context" => "https://www.w3.org/ns/activitystreams",
- "asin" => "",
- "authors" => ["https://bookwyrm.com/author/3"],
- "cover" => %{
- "@context" => "https://www.w3.org/ns/activitystreams",
- "name" => "Piranesi (2020, Bloomsbury Publishing)",
- "type" => "Document",
- "url" => "https://bookwyrm.com/images/covers/9fd28af7-ebb8-4df3-80c8-28488fc5349f.jpeg"
- },
- "description" => "",
- "editionRank" => 7,
- "firstPublishedDate" => "",
- "goodreadsKey" => "",
- "id" => "https://bookwyrm.com/book/10",
- "isbn10" => "163557563X",
- "isbn13" => "9781635575637",
- "languages" => ["English"],
- "librarythingKey" => "",
- "oclcNumber" => "",
- "openlibraryKey" => "OL28300471M",
- "pages" => 272,
- "physicalFormat" => "",
- "physicalFormatDetail" => "hardcover",
- "publishedDate" => "2020-09-15T00:00:00+00:00",
- "publishers" => ["Bloomsbury Publishing"],
- "series" => "",
- "seriesNumber" => "",
- "sortTitle" => "",
- "subjectPlaces" => [],
- "subjects" => [],
- "subtitle" => "",
- "title" => "Piranesi",
"type" => "Edition",
"work" => "https://bookwyrm.com/book/9"
}
- assert %{valid?: true, changes: %{name: "Piranesi"}} = TagValidator.cast_and_validate(edition)
- end
-
- test "it should validate an author" do
- author = %{
- "@context" => "https://www.w3.org/ns/activitystreams",
- "aliases" => [],
- "bio" => "snipped",
- "bnfId" => "14603397h",
- "born" => "1959-11-01T00:00:00+00:00",
- "goodreadsKey" => "",
- "id" => "https://bookwyrm.com/author/3",
- "isni" => "0000 0001 0877 1086",
- "librarythingKey" => "",
- "name" => "Susanna Clarke",
- "openlibraryKey" => "OL1387961A",
- "type" => "Author",
- "viafId" => "19931023",
- "wikipediaLink" => ""
- }
-
- assert %{valid?: true, changes: %{name: "Susanna Clarke"}} =
- TagValidator.cast_and_validate(author)
- end
-
- test "it should validate a work" do
- work = %{
- "@context" => "https://www.w3.org/ns/activitystreams",
- "authors" => ["https://bookwyrm.com/author/3"],
- "cover" => %{
- "@context" => "https://www.w3.org/ns/activitystreams",
- "name" => "Piranesi",
- "type" => "Document",
- "url" => "https://bookwyrm.com/images/covers/e950ac10-feaf-4c3e-b2d3-de20d3a28329.jpeg"
- },
- "description" => "snipped",
- "editions" => [
- "https://bookwyrm.com/book/12",
- "https://bookwyrm.com/book/10",
- "https://bookwyrm.com/book/14",
- "https://bookwyrm.com/book/13",
- "https://bookwyrm.com/book/11",
- "https://bookwyrm.com/book/15"
- ],
- "firstPublishedDate" => "",
- "goodreadsKey" => "",
- "id" => "https://bookwyrm.com/book/9",
- "languages" => [],
- "lccn" => "",
- "librarythingKey" => "",
- "openlibraryKey" => "OL20893680W",
- "publishedDate" => "",
- "series" => "",
- "seriesNumber" => "",
- "sortTitle" => "",
- "subjectPlaces" => [],
- "subjects" => ["English literature"],
- "subtitle" => "",
- "title" => "Piranesi",
- "type" => "Work"
- }
-
- assert %{valid?: true, changes: %{name: "Piranesi"}} = TagValidator.cast_and_validate(work)
+ assert %{valid?: true, action: :ignore} = TagValidator.cast_and_validate(edition)
end
end