()
| 204 | |
| 205 | #[test(tokio::test)] |
| 206 | async fn create_event() { |
| 207 | let node_id = NodeKey::random().id(); |
| 208 | let network = Network::Mainnet; |
| 209 | let expected_event_id = EventId::try_from(hex::decode(DATA_EVENT_ID).unwrap()).unwrap(); |
| 210 | |
| 211 | // Remove whitespace from event CAR file |
| 212 | let event_data = DATA_EVENT_CAR |
| 213 | .chars() |
| 214 | .filter(|c| !c.is_whitespace()) |
| 215 | .collect::<String>(); |
| 216 | let mock_interest = MockAccessInterestStoreTest::new(); |
| 217 | let mut mock_event_store = MockEventStoreTest::new(); |
| 218 | mock_get_init_event(&mut mock_event_store); |
| 219 | let args = vec![ApiItem::new( |
| 220 | expected_event_id, |
| 221 | decode_multibase_data(&event_data).unwrap(), |
| 222 | )]; |
| 223 | |
| 224 | mock_event_store |
| 225 | .expect_insert_many() |
| 226 | .with(predicate::eq(args), predicate::eq(node_id)) |
| 227 | .times(1) |
| 228 | .returning(|input, _| { |
| 229 | Ok(input |
| 230 | .into_iter() |
| 231 | .map(|v| EventInsertResult::new_ok(v.key.clone())) |
| 232 | .collect()) |
| 233 | }); |
| 234 | let server = create_test_server( |
| 235 | node_id, |
| 236 | network, |
| 237 | mock_interest, |
| 238 | Arc::new(mock_event_store), |
| 239 | MockP2PService::new(), |
| 240 | None, |
| 241 | ); |
| 242 | let resp = server |
| 243 | .events_post( |
| 244 | models::EventData { |
| 245 | data: event_data.to_string(), |
| 246 | }, |
| 247 | &Context, |
| 248 | ) |
| 249 | .await |
| 250 | .unwrap(); |
| 251 | assert!(matches!(resp, EventsPostResponse::Success)); |
| 252 | } |
| 253 | |
| 254 | #[test(tokio::test)] |
| 255 | async fn create_event_twice() { |
nothing calls this directly
no test coverage detected