101 lines
3.1 KiB
Rust
101 lines
3.1 KiB
Rust
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());
|
|
}
|