]> Untitled Git - lemmy.git/blob - crates/apub/src/protocol/activities/mod.rs
a7ce37015adc9f246650f226d6f5a48024c672f0
[lemmy.git] / crates / apub / src / protocol / activities / mod.rs
1 use serde::{Deserialize, Serialize};
2 use strum_macros::Display;
3
4 pub mod block;
5 pub mod community;
6 pub mod create_or_update;
7 pub mod deletion;
8 pub mod following;
9 pub mod voting;
10
11 #[derive(Clone, Debug, Display, Deserialize, Serialize, PartialEq, Eq)]
12 pub enum CreateOrUpdateType {
13   Create,
14   Update,
15 }
16
17 #[cfg(test)]
18 mod tests {
19   use crate::protocol::{
20     activities::{
21       community::announce::AnnounceActivity,
22       create_or_update::{note::CreateOrUpdateNote, page::CreateOrUpdatePage},
23       deletion::delete::Delete,
24       following::{follow::Follow, undo_follow::UndoFollow},
25       voting::{undo_vote::UndoVote, vote::Vote},
26     },
27     tests::test_json,
28   };
29
30   #[test]
31   fn test_parse_smithereen_activities() {
32     test_json::<CreateOrUpdateNote>("assets/smithereen/activities/create_note.json").unwrap();
33   }
34
35   #[test]
36   fn test_parse_pleroma_activities() {
37     test_json::<CreateOrUpdateNote>("assets/pleroma/activities/create_note.json").unwrap();
38     test_json::<Delete>("assets/pleroma/activities/delete.json").unwrap();
39     test_json::<Follow>("assets/pleroma/activities/follow.json").unwrap();
40   }
41
42   #[test]
43   fn test_parse_mastodon_activities() {
44     test_json::<CreateOrUpdateNote>("assets/mastodon/activities/create_note.json").unwrap();
45     test_json::<Delete>("assets/mastodon/activities/delete.json").unwrap();
46     test_json::<Follow>("assets/mastodon/activities/follow.json").unwrap();
47     test_json::<UndoFollow>("assets/mastodon/activities/undo_follow.json").unwrap();
48     test_json::<Vote>("assets/mastodon/activities/like_page.json").unwrap();
49     test_json::<UndoVote>("assets/mastodon/activities/undo_like_page.json").unwrap();
50   }
51
52   #[test]
53   fn test_parse_lotide_activities() {
54     test_json::<Follow>("assets/lotide/activities/follow.json").unwrap();
55     test_json::<CreateOrUpdatePage>("assets/lotide/activities/create_page.json").unwrap();
56     test_json::<CreateOrUpdatePage>("assets/lotide/activities/create_page_image.json").unwrap();
57     test_json::<CreateOrUpdateNote>("assets/lotide/activities/create_note_reply.json").unwrap();
58   }
59
60   #[test]
61   fn test_parse_friendica_activities() {
62     test_json::<CreateOrUpdatePage>("assets/friendica/activities/create_page_1.json").unwrap();
63     test_json::<CreateOrUpdatePage>("assets/friendica/activities/create_page_2.json").unwrap();
64     test_json::<CreateOrUpdateNote>("assets/friendica/activities/create_note.json").unwrap();
65     test_json::<CreateOrUpdateNote>("assets/friendica/activities/update_note.json").unwrap();
66     test_json::<Delete>("assets/friendica/activities/delete.json").unwrap();
67     test_json::<Vote>("assets/friendica/activities/like_page.json").unwrap();
68     test_json::<Vote>("assets/friendica/activities/dislike_page.json").unwrap();
69     test_json::<UndoVote>("assets/friendica/activities/undo_dislike_page.json").unwrap();
70   }
71
72   #[test]
73   fn test_parse_gnusocial_activities() {
74     test_json::<CreateOrUpdatePage>("assets/gnusocial/activities/create_page.json").unwrap();
75     test_json::<CreateOrUpdateNote>("assets/gnusocial/activities/create_note.json").unwrap();
76     test_json::<Vote>("assets/gnusocial/activities/like_note.json").unwrap();
77   }
78
79   #[test]
80   fn test_parse_peertube_activities() {
81     test_json::<AnnounceActivity>("assets/peertube/activities/announce_video.json").unwrap();
82   }
83 }