]> 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 529ee6370dbb937e6536f4bc03c4e9fbaa4a661a..20aaca181cfef1f92560efb99ee4d041bd212445 100644 (file)
@@ -1,25 +1,82 @@
+use serde::{Deserialize, Serialize};
+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;
 pub(crate) mod tombstone;
 
+#[derive(Clone, Debug, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Endpoints {
+  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();
   }
 }