Fixed registry JMAP helpers
This commit is contained in:
@@ -45,12 +45,12 @@ migration = { path = "../crates/migration", features = ["test_mode", "enterprise
|
||||
trc = { path = "../crates/trc", features = ["enterprise"] }
|
||||
managesieve = { path = "../crates/managesieve", features = ["test_mode", "enterprise"] }
|
||||
smtp-proto = { version = "0.2" }
|
||||
mail-auth = { path = "/Users/me/code/mail-auth", features = ["test"] }
|
||||
mail-auth = { version = "0.8", features = ["test"] }
|
||||
mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] }
|
||||
mail-builder = "0.4.4"
|
||||
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
||||
utils = { path = "../crates/utils", features = ["test_mode"] }
|
||||
jmap-client = { path = "/Users/me/code/jmap-client", features = ["websockets", "debug", "async"] }
|
||||
jmap-client = { version = "0.4", features = ["websockets", "debug", "async"] }
|
||||
tokio = { version = "1.47", features = ["full"] }
|
||||
tokio-rustls = { version = "0.26", default-features = false, features = ["aws_lc_rs", "tls12"] }
|
||||
rustls = { version = "0.23.5", default-features = false, features = ["std", "aws_lc_rs", "tls12"] }
|
||||
|
||||
@@ -239,8 +239,8 @@ async fn manage_queue() {
|
||||
let (sender, recipients) = envelopes.get(env_id.as_str()).unwrap();
|
||||
assert_eq!(&message.return_path, sender);
|
||||
'outer: for recipient in recipients {
|
||||
for rcpt in message.recipients.iter() {
|
||||
if &rcpt.address == recipient {
|
||||
for (address, _) in message.recipients.iter() {
|
||||
if address == recipient {
|
||||
continue 'outer;
|
||||
}
|
||||
}
|
||||
@@ -253,7 +253,7 @@ async fn manage_queue() {
|
||||
let next_retry = created + hold_for;
|
||||
let next_notify = created + 2000 + hold_for;
|
||||
let expires = created + 3000 + hold_for;
|
||||
for rcpt in message.recipients.iter() {
|
||||
for (rcpt_address, rcpt) in message.recipients.iter() {
|
||||
if env_id == "c" {
|
||||
let mut dt = rcpt.retry_due;
|
||||
dt.add_seconds(-1);
|
||||
@@ -274,7 +274,7 @@ async fn manage_queue() {
|
||||
&message,
|
||||
);
|
||||
assert_eq!(&rcpt.status, &RecipientStatus::Scheduled, "{message:#?}");
|
||||
} else if rcpt.address == "success@foobar.org" {
|
||||
} else if rcpt_address == "success@foobar.org" {
|
||||
assert_eq!(rcpt.retry_count, 0);
|
||||
assert!(
|
||||
matches!(&rcpt.status, RecipientStatus::Completed(_)),
|
||||
@@ -390,16 +390,15 @@ async fn manage_queue() {
|
||||
.retry_count,
|
||||
2
|
||||
);
|
||||
for rcpt in admin
|
||||
for (rcpt_address, rcpt) in admin
|
||||
.registry_get::<QueuedMessage>(id_map["a"])
|
||||
.await
|
||||
.recipients
|
||||
.values()
|
||||
{
|
||||
let next_retry = rcpt.retry_due.to_string();
|
||||
let matched =
|
||||
["2200-01-01T00:00:00Z", "2199-12-31T23:59:59Z"].contains(&next_retry.as_str());
|
||||
if rcpt.address.ends_with("example1.org") {
|
||||
if rcpt_address.ends_with("example1.org") {
|
||||
assert!(matched, "{next_retry}");
|
||||
} else {
|
||||
assert!(!matched, "{next_retry}");
|
||||
@@ -456,18 +455,18 @@ async fn manage_queue() {
|
||||
let message = admin.registry_get::<QueuedMessage>(id_map[id]).await;
|
||||
|
||||
assert!(!message.recipients.is_empty());
|
||||
for rcpt in message.recipients {
|
||||
for (rcpt_address, rcpt) in message.recipients {
|
||||
match id {
|
||||
"a" => {
|
||||
if rcpt.address.ends_with("example2.org") {
|
||||
if rcpt_address.ends_with("example2.org") {
|
||||
assert!(matches!(&rcpt.status, RecipientStatus::PermanentFailure(_)));
|
||||
} else {
|
||||
assert!(matches!(&rcpt.status, RecipientStatus::Scheduled));
|
||||
}
|
||||
}
|
||||
"c" => {
|
||||
if rcpt.address.ends_with("example2.com") {
|
||||
if rcpt.address == "rcpt6@example2.com" {
|
||||
if rcpt_address.ends_with("example2.com") {
|
||||
if rcpt_address == "rcpt6@example2.com" {
|
||||
assert!(matches!(&rcpt.status, RecipientStatus::PermanentFailure(_)));
|
||||
} else {
|
||||
assert!(matches!(&rcpt.status, RecipientStatus::Scheduled));
|
||||
|
||||
@@ -18,7 +18,7 @@ use crate::{
|
||||
use ahash::AHashMap;
|
||||
use common::{
|
||||
BuildServer, Caches, Core, Data, DavResources, Inner, Server,
|
||||
auth::FALLBACK_ADMIN_ID,
|
||||
auth::RECOVERY_ADMIN_ID,
|
||||
config::{
|
||||
server::{Listeners, ServerProtocol},
|
||||
storage::Storage,
|
||||
@@ -29,6 +29,7 @@ use common::{
|
||||
boot::{IpcReceivers, build_ipc},
|
||||
defaults::BootstrapDefaults,
|
||||
},
|
||||
psl,
|
||||
};
|
||||
use email::message::metadata::MessageMetadata;
|
||||
use groupware::cache::GroupwareCache;
|
||||
@@ -42,8 +43,8 @@ use registry::{
|
||||
enums::{DataStoreType, EventPolicy, NetworkListenerProtocol, TracingLevel},
|
||||
prelude::{Object, ObjectType, SocketAddr},
|
||||
structs::{
|
||||
Authentication, Certificate, NetworkListener, PublicText, SecretKeyFile, SecretText,
|
||||
Tracer, TracerStdout,
|
||||
Authentication, Certificate, Domain, NetworkListener, PublicText, SecretKeyFile,
|
||||
SecretText, SystemSettings, Tracer, TracerStdout,
|
||||
},
|
||||
},
|
||||
types::{EnumImpl, datetime::UTCDateTime, map::Map},
|
||||
@@ -91,7 +92,6 @@ pub struct TestServerBuilder {
|
||||
|
||||
impl TestServerBuilder {
|
||||
pub async fn new(test_name: &str) -> Self {
|
||||
//let _ = rustls::crypto::aws_lc_rs::default_provider().install_default();
|
||||
let reset = std::env::var("NO_INSERT").is_err();
|
||||
|
||||
Self::new_with_role(test_name, "mail.example.org".to_string(), None, reset).await
|
||||
@@ -265,6 +265,21 @@ impl TestServerBuilder {
|
||||
.map(|log| TracingLevel::parse(&log).expect("Invalid log level"))
|
||||
.ok();
|
||||
|
||||
// Add default domain
|
||||
let default_domain = psl::domain_str(self.bootstrap.registry.local_hostname()).unwrap();
|
||||
let default_domain_id = self
|
||||
.insert_object(Domain {
|
||||
name: default_domain.to_string(),
|
||||
..Default::default()
|
||||
})
|
||||
.await;
|
||||
self.insert_object(SystemSettings {
|
||||
default_hostname: self.bootstrap.registry.local_hostname().to_string(),
|
||||
default_domain_id,
|
||||
..Default::default()
|
||||
})
|
||||
.await;
|
||||
|
||||
self.insert_object(Tracer::Stdout(TracerStdout {
|
||||
enable: level.is_some() || self.logging_enabled,
|
||||
level: level.unwrap_or(TracingLevel::Info),
|
||||
@@ -432,7 +447,7 @@ impl TestServerBuilder {
|
||||
"popolna_zapora",
|
||||
&[],
|
||||
"Recovery Admin",
|
||||
Id::from(FALLBACK_ADMIN_ID),
|
||||
Id::from(RECOVERY_ADMIN_ID),
|
||||
);
|
||||
admin.http_listener_port = self.http_listener_port;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user