bitwarden_emergency_access/
delete.rs1use bitwarden_core::ApiError;
2use bitwarden_error::bitwarden_error;
3use thiserror::Error;
4
5use crate::{EmergencyAccessClient, EmergencyAccessId};
6
7#[bitwarden_error(flat)]
9#[derive(Debug, Error)]
10pub enum EmergencyAccessDeleteError {
11 #[error(transparent)]
13 Api(#[from] ApiError),
14}
15
16#[bitwarden_ffi::wasm_export]
17impl EmergencyAccessClient {
18 pub async fn delete(
22 &self,
23 emergency_access_id: EmergencyAccessId,
24 ) -> Result<(), EmergencyAccessDeleteError> {
25 self.api_configurations
26 .api_client
27 .emergency_access_api()
28 .delete(emergency_access_id.into())
29 .await?;
30
31 Ok(())
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use bitwarden_core::client::test_accounts::test_bitwarden_com_account;
38
39 use super::*;
40 use crate::{
41 EmergencyAccessClientExt,
42 test_support::{api_error, is_test_id, test_client, test_id},
43 };
44
45 #[tokio::test]
46 async fn deletes() {
47 let client = test_client(test_bitwarden_com_account(), |mock| {
48 mock.emergency_access_api
49 .expect_delete()
50 .withf(is_test_id)
51 .returning(|_| Ok(()))
52 .once();
53 })
54 .await;
55
56 client.emergency_access().delete(test_id()).await.unwrap();
57 }
58
59 #[tokio::test]
60 async fn fails_when_request_fails() {
61 let client = test_client(test_bitwarden_com_account(), |mock| {
62 mock.emergency_access_api
63 .expect_delete()
64 .returning(|_| api_error())
65 .once();
66 })
67 .await;
68
69 let result = client.emergency_access().delete(test_id()).await;
70
71 assert!(matches!(result, Err(EmergencyAccessDeleteError::Api(_))));
72 }
73}