The name is inbuxa, lowercase, like the wordmark; INBUXA reads as an acronym. The admin and webmail already changed. Here that's everything the server shows people: the brand macro behind the protocol greetings, the HTTP and SCIM realms, the startup banner and the calendar and contact PRODID; the first-party OAuth client descriptions; the legacy-protocol refusals; the default calendar and address book names and the SMTP greeting default, in the code and the schema served to the admin (checksum regenerated); startup and shutdown events; the User-Agent; the sign-in and RSVP pages; the service units; the OpenAPI realm; the crate descriptions and the README, where it's set in bold. Identifiers that are uppercase for their own reasons stay: INBUXA_* settings, SUBSPACE_INBUXA. So do code comments and the AGPL 5(a) notice lines. Tests follow: the IMAP ID name, the default collection names, the PRODID in the iTIP fixtures and the CalDAV free-busy expectations, and the e2e legacy-protocol refusals. The webdav, imap and jmap suites pass, so do the unit tests of every crate touched, and 73 of 75 SMTP tests; of the other two, antispam fails on main too, and queue_retry is a timing flake that passes on its own.
62 lines
1.9 KiB
Rust
62 lines
1.9 KiB
Rust
/*
|
|
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
|
*
|
|
* Modified by Coffey Labs in 2026 for INBUXA.
|
|
*/
|
|
|
|
use super::{AssertResult, ImapConnection, Type};
|
|
use directory::Credentials;
|
|
use imap_proto::ResponseType;
|
|
use mail_parser::decoders::base64::base64_decode;
|
|
|
|
pub async fn test(imap: &mut ImapConnection, _imap_check: &mut ImapConnection) {
|
|
println!("Running basic tests...");
|
|
|
|
// Test OAuth Bearer decoding
|
|
assert_eq!(
|
|
Credentials::Bearer {
|
|
token: "vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==".to_string(),
|
|
username: Some("[email protected]".to_string()),
|
|
},
|
|
Credentials::decode_sasl_challenge_oauth(
|
|
&base64_decode(
|
|
concat!(
|
|
"bixhPXVzZXJAZXhhbXBsZS5jb20sAWhv",
|
|
"c3Q9c2VydmVyLmV4YW1wbGUuY29tAXBvcnQ9MTQzAWF1dGg9QmVhcmVyI",
|
|
"HZGOWRmdDRxbVRjMk52YjNSbGNrQmhiSFJoZG1semRHRXVZMjl0Q2c9PQ",
|
|
"EB"
|
|
)
|
|
.as_bytes(),
|
|
)
|
|
.unwrap(),
|
|
)
|
|
.unwrap()
|
|
);
|
|
|
|
// Test CAPABILITY
|
|
imap.send("CAPABILITY").await;
|
|
imap.assert_read(Type::Tagged, ResponseType::Ok).await;
|
|
|
|
// Test NOOP
|
|
imap.send("NOOP").await;
|
|
imap.assert_read(Type::Tagged, ResponseType::Ok).await;
|
|
|
|
// Test ID
|
|
imap.send("ID").await;
|
|
imap.assert_read(Type::Tagged, ResponseType::Ok)
|
|
.await
|
|
.assert_contains("* ID (\"name\" \"inbuxa\" \"version\" ");
|
|
|
|
// Login should be disabled
|
|
imap.send("LOGIN [email protected] secret").await;
|
|
imap.assert_read(Type::Tagged, ResponseType::No).await;
|
|
|
|
// Try logging in with wrong password
|
|
imap.send("AUTHENTICATE PLAIN {24}").await;
|
|
imap.assert_read(Type::Continuation, ResponseType::Ok).await;
|
|
imap.send_untagged("AGJvYXR5AG1jYm9hdGZhY2U=").await;
|
|
imap.assert_read(Type::Tagged, ResponseType::No).await;
|
|
}
|