This commit is contained in:
Lol3rrr
2026-10-10 14:36:21 +02:00
commit bf59bd4c80
13 changed files with 458 additions and 0 deletions

100
messages/tests/startup.rs Normal file
View File

@@ -0,0 +1,100 @@
use messages::{Message, startup::{AuthenticationOk, BackendKeyData, ParameterStatus, SSLRequest, SSLResponse, Startup}};
#[test]
fn collected_startup() {
let raw_bytes: &[u8] = &[0x0, 0x0, 0x0, 0x3f, 0x0, 0x3, 0x0, 0x0, 0x75, 0x73, 0x65, 0x72, 0x0, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x0, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x0, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x0, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x0, 0x70, 0x73, 0x71, 0x6c, 0x0, 0x0];
let (parsed, rem) = Startup::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(Startup {
version: 196608,
parameters: vec![
("user".into(), "postgres".into()),
("database".into(), "postgres".into()),
("application_name".into(), "psql".into()),
],
}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}
#[test]
fn collected_sslrequest() {
let raw_bytes: &[u8] = &[0x0, 0x0, 0x0, 0x8, 0x4, 0xd2, 0x16, 0x2f];
let (parsed, rem) = SSLRequest::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(SSLRequest {}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}
#[test]
fn collected_sslresponse() {
let raw_bytes: &[u8] = &[0x4e];
let (parsed, rem) = SSLResponse::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(SSLResponse {
enabled: false,
}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}
#[test]
fn collected_authenticationok() {
let raw_bytes: &[u8] = &[0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0];
let (parsed, rem) = AuthenticationOk::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(AuthenticationOk {}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}
#[test]
fn collected_parameterstatus() {
let raw_bytes: &[u8] = &[0x53, 0x0, 0x0, 0x0, 0x17, 0x69, 0x6e, 0x5f, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x0, 0x6f, 0x66, 0x66, 0x0];
let (parsed, rem) = ParameterStatus::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(ParameterStatus {
name: "in_hot_standby".into(),
value: "off".into(),
}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}
#[test]
fn collected_backendkeydata() {
let raw_bytes: &[u8] = &[0x4b, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x4b, 0x72, 0xb, 0xd3, 0xd6];
let (parsed, rem) = BackendKeyData::parse(raw_bytes).unwrap();
assert_eq!(&[] as &[u8], rem);
assert_eq!(BackendKeyData {
process_id: 75,
secret_key: vec![0x72, 0x0b, 0xd3, 0xd6],
}, parsed);
let mut output = Vec::<u8>::new();
parsed.encode(&mut output);
assert_eq!(raw_bytes, output.as_slice());
}