1use crate::{
2 db::{Database, NewUserParams},
3 test_both_dbs,
4};
5use std::sync::Arc;
6use time::OffsetDateTime;
7
8test_both_dbs!(
9 test_channel_message_nonces,
10 test_channel_message_nonces_postgres,
11 test_channel_message_nonces_sqlite
12);
13
14async fn test_channel_message_nonces(db: &Arc<Database>) {
15 let user = db
16 .create_user(
17 "user@example.com",
18 false,
19 NewUserParams {
20 github_login: "user".into(),
21 github_user_id: 1,
22 invite_count: 0,
23 },
24 )
25 .await
26 .unwrap()
27 .user_id;
28 let channel = db
29 .create_channel("channel", None, "room", user)
30 .await
31 .unwrap();
32
33 let owner_id = db.create_server("test").await.unwrap().0 as u32;
34
35 db.join_channel_chat(channel, rpc::ConnectionId { owner_id, id: 0 }, user)
36 .await
37 .unwrap();
38
39 let msg1_id = db
40 .create_channel_message(channel, user, "1", OffsetDateTime::now_utc(), 1)
41 .await
42 .unwrap();
43 let msg2_id = db
44 .create_channel_message(channel, user, "2", OffsetDateTime::now_utc(), 2)
45 .await
46 .unwrap();
47 let msg3_id = db
48 .create_channel_message(channel, user, "3", OffsetDateTime::now_utc(), 1)
49 .await
50 .unwrap();
51 let msg4_id = db
52 .create_channel_message(channel, user, "4", OffsetDateTime::now_utc(), 2)
53 .await
54 .unwrap();
55
56 assert_ne!(msg1_id, msg2_id);
57 assert_eq!(msg1_id, msg3_id);
58 assert_eq!(msg2_id, msg4_id);
59}