use bytes::{BufMut, BytesMut};
use crate::message::frontend::{MessageCode, cstring_len, frame};
pub fn cleartext_password(password: &str) -> BytesMut {
let mut msg = BytesMut::new();
msg.put_u8(MessageCode::PASSWORD_MESSAGE.as_u8());
frame(&mut msg, cstring_len(password.as_bytes()), |buf| {
buf.put_slice(password.as_bytes());
buf.put_u8(0);
});
msg
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_cleartext_password() {
let msg = cleartext_password("secret");
assert_eq!(msg[0], b'p');
let len = u32::from_be_bytes([msg[1], msg[2], msg[3], msg[4]]);
assert_eq!(len, 11);
assert_eq!(&msg[5..12], b"secret\0");
}
}