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::::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::::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::::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::::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::::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::::new(); parsed.encode(&mut output); assert_eq!(raw_bytes, output.as_slice()); }