/* * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC * * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ 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("user@example.com".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\" \"Stalwart\" \"version\" "); // Login should be disabled imap.send("LOGIN jdoe@example.com 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; }