From 273c98cfdffa5b9c187a6628855ae602d9ba9136 Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Wed, 16 Dec 2020 11:14:24 +0100
Subject: [PATCH] Fix tests

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 .../transmogrifier/update_test.exs            | 155 +++++++++---------
 .../group_post_update_activities.json         |  24 ---
 test/support/factory.ex                       |   1 +
 3 files changed, 75 insertions(+), 105 deletions(-)
 delete mode 100644 test/fixtures/vcr_cassettes/activity_pub/group_post_update_activities.json

diff --git a/test/federation/activity_pub/transmogrifier/update_test.exs b/test/federation/activity_pub/transmogrifier/update_test.exs
index be9786855..7936887ce 100644
--- a/test/federation/activity_pub/transmogrifier/update_test.exs
+++ b/test/federation/activity_pub/transmogrifier/update_test.exs
@@ -111,117 +111,110 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.UpdateTest do
 
   describe "handle incoming updates activities for group posts" do
     test "it works for incoming update activities on group posts when remote actor is a moderator" do
-      use_cassette "activity_pub/group_post_update_activities" do
-        %Actor{url: remote_actor_url} =
-          remote_actor =
-          insert(:actor,
-            domain: "remote.domain",
-            url: "https://remote.domain/@remote",
-            preferred_username: "remote"
-          )
+      %Actor{url: remote_actor_url} =
+        remote_actor =
+        insert(:actor,
+          domain: "remote.domain",
+          url: "https://remote.domain/@remote",
+          preferred_username: "remote"
+        )
 
-        group = insert(:group)
-        %Member{} = member = insert(:member, actor: remote_actor, parent: group, role: :moderator)
-        %Post{} = post = insert(:post, attributed_to: group)
+      group = insert(:group)
+      %Member{} = member = insert(:member, actor: remote_actor, parent: group, role: :moderator)
+      %Post{} = post = insert(:post, attributed_to: group)
 
-        data = Convertible.model_to_as(post)
-        refute is_nil(Posts.get_post_by_url(data["id"]))
+      data = Convertible.model_to_as(post)
+      refute is_nil(Posts.get_post_by_url(data["id"]))
 
-        update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
+      update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
 
-        object =
-          data
-          |> Map.put("name", "My updated post")
-          |> Map.put("type", "Article")
+      object =
+        data
+        |> Map.put("name", "My updated post")
+        |> Map.put("type", "Article")
 
-        update_data =
-          update_data
-          |> Map.put("actor", remote_actor_url)
-          |> Map.put("object", object)
+      update_data =
+        update_data
+        |> Map.put("actor", remote_actor_url)
+        |> Map.put("object", object)
 
-        {:ok, %Activity{data: data, local: false}, _} =
-          Transmogrifier.handle_incoming(update_data)
+      {:ok, %Activity{data: data, local: false}, _} = Transmogrifier.handle_incoming(update_data)
 
-        %Post{id: updated_post_id, title: updated_post_title} =
-          Posts.get_post_by_url(data["object"]["id"])
+      %Post{id: updated_post_id, title: updated_post_title} =
+        Posts.get_post_by_url(data["object"]["id"])
 
-        assert updated_post_id == post.id
-        assert updated_post_title == "My updated post"
-      end
+      assert updated_post_id == post.id
+      assert updated_post_title == "My updated post"
     end
 
     test "it works for incoming update activities on group posts" do
-      use_cassette "activity_pub/group_post_update_activities" do
-        %Actor{url: remote_actor_url} =
-          remote_actor =
-          insert(:actor,
-            domain: "remote.domain",
-            url: "https://remote.domain/@remote",
-            preferred_username: "remote"
-          )
+      %Actor{url: remote_actor_url} =
+        remote_actor =
+        insert(:actor,
+          domain: "remote.domain",
+          url: "https://remote.domain/@remote",
+          preferred_username: "remote"
+        )
 
-        group = insert(:group)
-        %Member{} = member = insert(:member, actor: remote_actor, parent: group)
-        %Post{} = post = insert(:post, attributed_to: group)
+      group = insert(:group)
+      %Member{} = member = insert(:member, actor: remote_actor, parent: group)
+      %Post{} = post = insert(:post, attributed_to: group)
 
-        data = Convertible.model_to_as(post)
-        refute is_nil(Posts.get_post_by_url(data["id"]))
+      data = Convertible.model_to_as(post)
+      refute is_nil(Posts.get_post_by_url(data["id"]))
 
-        update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
+      update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
 
-        object =
-          data
-          |> Map.put("name", "My updated post")
-          |> Map.put("type", "Article")
+      object =
+        data
+        |> Map.put("name", "My updated post")
+        |> Map.put("type", "Article")
 
-        update_data =
-          update_data
-          |> Map.put("actor", remote_actor_url)
-          |> Map.put("object", object)
+      update_data =
+        update_data
+        |> Map.put("actor", remote_actor_url)
+        |> Map.put("object", object)
 
-        :error = Transmogrifier.handle_incoming(update_data)
+      :error = Transmogrifier.handle_incoming(update_data)
 
-        %Post{id: updated_post_id, title: updated_post_title} = Posts.get_post_by_url(data["id"])
+      %Post{id: updated_post_id, title: updated_post_title} = Posts.get_post_by_url(data["id"])
 
-        assert updated_post_id == post.id
-        refute updated_post_title == "My updated post"
-      end
+      assert updated_post_id == post.id
+      refute updated_post_title == "My updated post"
     end
 
     test "it fails for incoming update activities on group posts when the actor is not a member from the group" do
-      use_cassette "activity_pub/group_post_update_activities" do
-        %Actor{url: remote_actor_url} =
-          insert(:actor,
-            domain: "remote.domain",
-            url: "https://remote.domain/@remote",
-            preferred_username: "remote"
-          )
+      %Actor{url: remote_actor_url} =
+        insert(:actor,
+          domain: "remote.domain",
+          url: "https://remote.domain/@remote",
+          preferred_username: "remote"
+        )
 
-        group = insert(:group)
-        %Post{} = post = insert(:post, attributed_to: group)
+      group = insert(:group)
+      %Post{} = post = insert(:post, attributed_to: group)
 
-        data = Convertible.model_to_as(post)
-        refute is_nil(Posts.get_post_by_url(data["id"]))
+      data = Convertible.model_to_as(post)
+      refute is_nil(Posts.get_post_by_url(data["id"]))
 
-        update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
+      update_data = File.read!("test/fixtures/mastodon-update.json") |> Jason.decode!()
 
-        object =
-          data
-          |> Map.put("name", "My updated post")
-          |> Map.put("type", "Article")
+      object =
+        data
+        |> Map.put("name", "My updated post")
+        |> Map.put("type", "Article")
 
-        update_data =
-          update_data
-          |> Map.put("actor", remote_actor_url)
-          |> Map.put("object", object)
+      update_data =
+        update_data
+        |> Map.put("actor", remote_actor_url)
+        |> Map.put("object", object)
 
-        :error = Transmogrifier.handle_incoming(update_data)
+      :error = Transmogrifier.handle_incoming(update_data)
 
-        %Post{id: updated_post_id, title: updated_post_title} = Posts.get_post_by_url(data["id"])
+      %Post{id: updated_post_id, title: updated_post_title} = Posts.get_post_by_url(data["id"])
 
-        assert updated_post_id == post.id
-        refute updated_post_title == "My updated post"
-      end
+      assert updated_post_id == post.id
+      refute updated_post_title == "My updated post"
     end
   end
 end
diff --git a/test/fixtures/vcr_cassettes/activity_pub/group_post_update_activities.json b/test/fixtures/vcr_cassettes/activity_pub/group_post_update_activities.json
deleted file mode 100644
index 35e46a0b9..000000000
--- a/test/fixtures/vcr_cassettes/activity_pub/group_post_update_activities.json
+++ /dev/null
@@ -1,24 +0,0 @@
-[
-  {
-    "request": {
-      "body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://litepub.social/litepub/context.jsonld\",{\"Hashtag\":\"as:Hashtag\",\"PostalAddress\":\"sc:PostalAddress\",\"address\":{\"@id\":\"sc:address\",\"@type\":\"sc:PostalAddress\"},\"addressCountry\":\"sc:addressCountry\",\"addressLocality\":\"sc:addressLocality\",\"addressRegion\":\"sc:addressRegion\",\"anonymousParticipationEnabled\":{\"@id\":\"mz:anonymousParticipationEnabled\",\"@type\":\"sc:Boolean\"},\"category\":\"sc:category\",\"commentsEnabled\":{\"@id\":\"pt:commentsEnabled\",\"@type\":\"sc:Boolean\"},\"discoverable\":\"toot:discoverable\",\"ical\":\"http://www.w3.org/2002/12/cal/ical#\",\"joinMode\":{\"@id\":\"mz:joinMode\",\"@type\":\"mz:joinModeType\"},\"joinModeType\":{\"@id\":\"mz:joinModeType\",\"@type\":\"rdfs:Class\"},\"location\":{\"@id\":\"sc:location\",\"@type\":\"sc:Place\"},\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"maximumAttendeeCapacity\":\"sc:maximumAttendeeCapacity\",\"mz\":\"https://joinmobilizon.org/ns#\",\"participationMessage\":{\"@id\":\"mz:participationMessage\",\"@type\":\"sc:Text\"},\"postalCode\":\"sc:postalCode\",\"pt\":\"https://joinpeertube.org/ns#\",\"repliesModerationOption\":{\"@id\":\"mz:repliesModerationOption\",\"@type\":\"mz:repliesModerationOptionType\"},\"repliesModerationOptionType\":{\"@id\":\"mz:repliesModerationOptionType\",\"@type\":\"rdfs:Class\"},\"sc\":\"http://schema.org#\",\"streetAddress\":\"sc:streetAddress\",\"toot\":\"http://joinmastodon.org/ns#\",\"uuid\":\"sc:identifier\"}],\"actor\":\"http://mobilizon.test/@myGroup0\",\"cc\":[],\"id\":\"http://mobilizon.test/announces/839e0ffc-f437-48db-afba-9ce1e971e938\",\"object\":{\"actor\":\"http://mobilizon.test/@thomas0\",\"attributedTo\":\"http://mobilizon.test/@myGroup0\",\"content\":\"The <b>HTML</b>body for my Article\",\"id\":\"http://mobilizon.test/p/6a482d5f-94fc-446b-84bb-d4d386d5dd45\",\"name\":\"My updated post\",\"published\":\"2020-10-19T08:37:52Z\",\"type\":\"Article\"},\"to\":[\"http://mobilizon.test/@myGroup0/members\"],\"type\":\"Announce\"}",
-      "headers": {
-        "Content-Type": "application/activity+json",
-        "signature": "keyId=\"http://mobilizon.test/@myGroup0#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) content-length date digest host\",signature=\"P+7rSSUeUBdX74wbvSEe4roG7yh7MfpF6s4tjv5q1kbeVKtXZRyfC1LqgVNCADZYXFqYlMvfF7DiaRQRiMznGWawM/QXK08eXiAVihYK28Pa56BfI68OUakd+FptlwfB4WJ4Jc7xi1z+iarv+EvlFxjkG5pgwL4mW49rvNnigELzypGtp2bj/2BhiBItHutvOju1MwLR1EBQFJBSZDVZZKbHTcV4KbGtbYvkWUbH8fZbe3fgctKlvO/z9kw+yBTTIEE1O18F4HiJ17nYtaaxv3/vl5RxcjYLpf+QQzkaPOsSLZs8zpIZZp3BbLtPh+OGwkyK9PBQsaI0N1ZSLQ5gaQ==\"",
-        "digest": "SHA-256=EyZ+uZ/Vv2lUK8ozgOHBpnoUWUM5WQHATQb1tEMldNU=",
-        "date": "Mon, 19 Oct 2020 08:37:52 GMT"
-      },
-      "method": "post",
-      "options": [],
-      "request_body": "",
-      "url": "http://mobilizon.test/inbox"
-    },
-    "response": {
-      "binary": false,
-      "body": "nxdomain",
-      "headers": [],
-      "status_code": null,
-      "type": "error"
-    }
-  }
-]
\ No newline at end of file
diff --git a/test/support/factory.ex b/test/support/factory.ex
index 05c1241a9..82b8205b9 100644
--- a/test/support/factory.ex
+++ b/test/support/factory.ex
@@ -374,6 +374,7 @@ defmodule Mobilizon.Factory do
       tags: build_list(3, :tag),
       visibility: :public,
       publish_at: DateTime.utc_now(),
+      picture: insert(:media),
       media: [],
       url: Routes.page_url(Endpoint, :post, uuid)
     }