]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/protocol/objects/mod.rs
Implement instance actor (#1798)
[lemmy.git] / crates / apub / src / protocol / objects / mod.rs
index bf53d5c99eca6241ce04e4519f21ea56528cc55e..20aaca181cfef1f92560efb99ee4d041bd212445 100644 (file)
@@ -3,6 +3,7 @@ use url::Url;
 
 pub(crate) mod chat_message;
 pub(crate) mod group;
+pub(crate) mod instance;
 pub(crate) mod note;
 pub(crate) mod page;
 pub(crate) mod person;
@@ -11,25 +12,71 @@ pub(crate) mod tombstone;
 #[derive(Clone, Debug, Deserialize, Serialize)]
 #[serde(rename_all = "camelCase")]
 pub struct Endpoints {
-  #[serde(skip_serializing_if = "Option::is_none")]
-  pub shared_inbox: Option<Url>,
+  pub shared_inbox: Url,
 }
 
 #[cfg(test)]
 mod tests {
-  use crate::protocol::{
-    objects::{chat_message::ChatMessage, group::Group, note::Note, page::Page, person::Person},
-    tests::test_parse_lemmy_item,
+  use crate::{
+    context::WithContext,
+    objects::tests::file_to_json_object,
+    protocol::{
+      objects::{
+        chat_message::ChatMessage,
+        group::Group,
+        instance::Instance,
+        note::Note,
+        page::Page,
+        person::Person,
+        tombstone::Tombstone,
+      },
+      tests::test_parse_lemmy_item,
+    },
   };
-  use serial_test::serial;
 
   #[actix_rt::test]
-  #[serial]
-  async fn test_parse_lemmy_object() {
-    test_parse_lemmy_item::<Person>("assets/lemmy/objects/person.json");
-    test_parse_lemmy_item::<Group>("assets/lemmy/objects/group.json");
-    test_parse_lemmy_item::<Page>("assets/lemmy/objects/page.json");
-    test_parse_lemmy_item::<Note>("assets/lemmy/objects/note.json");
-    test_parse_lemmy_item::<ChatMessage>("assets/lemmy/objects/chat_message.json");
+  async fn test_parse_objects_lemmy() {
+    test_parse_lemmy_item::<Instance>("assets/lemmy/objects/instance.json").unwrap();
+    test_parse_lemmy_item::<Group>("assets/lemmy/objects/group.json").unwrap();
+    test_parse_lemmy_item::<Person>("assets/lemmy/objects/person.json").unwrap();
+    test_parse_lemmy_item::<Page>("assets/lemmy/objects/page.json").unwrap();
+    test_parse_lemmy_item::<Note>("assets/lemmy/objects/note.json").unwrap();
+    test_parse_lemmy_item::<ChatMessage>("assets/lemmy/objects/chat_message.json").unwrap();
+    test_parse_lemmy_item::<Tombstone>("assets/lemmy/objects/tombstone.json").unwrap();
+  }
+
+  #[actix_rt::test]
+  async fn test_parse_objects_pleroma() {
+    file_to_json_object::<WithContext<Person>>("assets/pleroma/objects/person.json").unwrap();
+    file_to_json_object::<WithContext<Note>>("assets/pleroma/objects/note.json").unwrap();
+    file_to_json_object::<WithContext<ChatMessage>>("assets/pleroma/objects/chat_message.json")
+      .unwrap();
+  }
+
+  #[actix_rt::test]
+  async fn test_parse_objects_smithereen() {
+    file_to_json_object::<WithContext<Person>>("assets/smithereen/objects/person.json").unwrap();
+    file_to_json_object::<Note>("assets/smithereen/objects/note.json").unwrap();
+  }
+
+  #[actix_rt::test]
+  async fn test_parse_objects_mastodon() {
+    file_to_json_object::<WithContext<Person>>("assets/mastodon/objects/person.json").unwrap();
+    file_to_json_object::<WithContext<Note>>("assets/mastodon/objects/note.json").unwrap();
+  }
+
+  #[actix_rt::test]
+  async fn test_parse_objects_lotide() {
+    file_to_json_object::<WithContext<Group>>("assets/lotide/objects/group.json").unwrap();
+    file_to_json_object::<WithContext<Person>>("assets/lotide/objects/person.json").unwrap();
+    file_to_json_object::<WithContext<Note>>("assets/lotide/objects/note.json").unwrap();
+    file_to_json_object::<WithContext<Page>>("assets/lotide/objects/page.json").unwrap();
+    file_to_json_object::<WithContext<Tombstone>>("assets/lotide/objects/tombstone.json").unwrap();
+  }
+
+  #[actix_rt::test]
+  async fn test_parse_object_friendica() {
+    file_to_json_object::<WithContext<Person>>("assets/friendica/objects/person.json").unwrap();
+    file_to_json_object::<WithContext<Note>>("assets/friendica/objects/note.json").unwrap();
   }
 }