Improved error handling - all tests passing
This commit is contained in:
@@ -7,8 +7,9 @@
|
||||
use ahash::AHashSet;
|
||||
use directory::{
|
||||
backend::internal::{
|
||||
lookup::DirectoryStore, manage::ManageDirectory, PrincipalField, PrincipalUpdate,
|
||||
PrincipalValue,
|
||||
lookup::DirectoryStore,
|
||||
manage::{self, ManageDirectory},
|
||||
PrincipalField, PrincipalUpdate, PrincipalValue,
|
||||
},
|
||||
Principal, QueryBy, Type,
|
||||
};
|
||||
@@ -33,9 +34,7 @@ async fn internal_directory() {
|
||||
// A principal without name should fail
|
||||
assert_eq!(
|
||||
store.create_account(Principal::default(), vec![]).await,
|
||||
Err(DirectoryError::Management(ManagementError::MissingField(
|
||||
PrincipalField::Name
|
||||
)))
|
||||
Err(manage::err_missing(PrincipalField::Name))
|
||||
);
|
||||
|
||||
// Basic account creation
|
||||
@@ -63,10 +62,7 @@ async fn internal_directory() {
|
||||
vec![]
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::AlreadyExists {
|
||||
field: PrincipalField::Name,
|
||||
value: "john".to_string()
|
||||
}))
|
||||
Err(manage::err_exists(PrincipalField::Name, "john".to_string()))
|
||||
);
|
||||
|
||||
// An account using a non-existent domain should fail
|
||||
@@ -81,9 +77,7 @@ async fn internal_directory() {
|
||||
vec![]
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::NotFound(
|
||||
"example.org".to_string()
|
||||
)))
|
||||
Err(manage::not_found("example.org".to_string()))
|
||||
);
|
||||
|
||||
// Create a domain name
|
||||
@@ -121,9 +115,7 @@ async fn internal_directory() {
|
||||
)],
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::NotFound(
|
||||
"otherdomain.org".to_string()
|
||||
)))
|
||||
Err(manage::not_found("otherdomain.org".to_string()))
|
||||
);
|
||||
|
||||
// Create an account with an email address
|
||||
@@ -197,10 +189,10 @@ async fn internal_directory() {
|
||||
vec![]
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::AlreadyExists {
|
||||
field: PrincipalField::Emails,
|
||||
value: "jane@example.org".to_string()
|
||||
}))
|
||||
Err(manage::err_exists(
|
||||
PrincipalField::Emails,
|
||||
"jane@example.org".to_string()
|
||||
))
|
||||
);
|
||||
|
||||
// Create a mailing list
|
||||
@@ -348,9 +340,7 @@ async fn internal_directory() {
|
||||
)],
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::NotFound(
|
||||
"accounting".to_string()
|
||||
)))
|
||||
Err(manage::not_found("accounting".to_string()))
|
||||
);
|
||||
|
||||
// Remove a member from a group
|
||||
@@ -502,10 +492,7 @@ async fn internal_directory() {
|
||||
),],
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::AlreadyExists {
|
||||
field: PrincipalField::Name,
|
||||
value: "jane".to_string()
|
||||
}))
|
||||
Err(manage::err_exists(PrincipalField::Name, "jane".to_string()))
|
||||
);
|
||||
assert_eq!(
|
||||
store
|
||||
@@ -517,10 +504,10 @@ async fn internal_directory() {
|
||||
),],
|
||||
)
|
||||
.await,
|
||||
Err(DirectoryError::Management(ManagementError::AlreadyExists {
|
||||
field: PrincipalField::Emails,
|
||||
value: "jane@example.org".to_string()
|
||||
}))
|
||||
Err(manage::err_exists(
|
||||
PrincipalField::Emails,
|
||||
"jane@example.org".to_string()
|
||||
))
|
||||
);
|
||||
|
||||
// List accounts
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
pub mod imap;
|
||||
//pub mod internal;
|
||||
pub mod internal;
|
||||
pub mod ldap;
|
||||
pub mod smtp;
|
||||
pub mod sql;
|
||||
@@ -392,8 +392,6 @@ pub fn dummy_tls_acceptor() -> Arc<TlsAcceptor> {
|
||||
let cert_file = &mut BufReader::new(CERT.as_bytes());
|
||||
let key_file = &mut BufReader::new(PK.as_bytes());
|
||||
|
||||
let todo = "fix interkal";
|
||||
|
||||
// convert files to key/cert objects
|
||||
let cert_chain = certs(cert_file).map(|r| r.unwrap()).collect();
|
||||
let mut keys: Vec<PrivateKeyDer> = pkcs8_private_keys(key_file)
|
||||
|
||||
@@ -253,6 +253,9 @@ email = "address"
|
||||
quota = "quota"
|
||||
class = "type"
|
||||
|
||||
[imap.auth]
|
||||
allow-plain-text = true
|
||||
|
||||
[oauth]
|
||||
key = "parerga_und_paralipomena"
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
// Connect to IMAP
|
||||
params
|
||||
.directory
|
||||
.create_test_user_with_email("jdoe@example.com", "secret", "John Doe")
|
||||
.create_test_user_with_email("jdoe@example.com", "12345", "John Doe")
|
||||
.await;
|
||||
let account_id = server
|
||||
.core
|
||||
@@ -43,8 +43,7 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
.unwrap();
|
||||
let mut imap = ImapConnection::connect(b"_x ").await;
|
||||
imap.assert_read(Type::Untagged, ResponseType::Ok).await;
|
||||
imap.send("AUTHENTICATE PLAIN {32+}\r\nAGpkb2VAZXhhbXBsZS5jb20Ac2VjcmV0")
|
||||
.await;
|
||||
imap.send("LOGIN \"jdoe@example.com\" \"12345\"").await;
|
||||
imap.assert_read(Type::Tagged, ResponseType::Ok).await;
|
||||
imap.send("STATUS INBOX (UIDNEXT MESSAGES UNSEEN)").await;
|
||||
imap.assert_read(Type::Tagged, ResponseType::Ok)
|
||||
|
||||
Reference in New Issue
Block a user