Implement PTY-native session terminal control
This commit is contained in:
parent
058e58e816
commit
8cef037fa3
2 changed files with 1488 additions and 382 deletions
|
|
@ -145,6 +145,12 @@ fn every_schema_shape_round_trips_and_rejects_malformed_or_unknown_versions() {
|
|||
}),
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
SessionTerminalEventV2::Break(TerminalBreak {
|
||||
session_id: session_id(),
|
||||
}),
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
TerminalInput {
|
||||
session_id: session_id(),
|
||||
|
|
@ -162,6 +168,13 @@ fn every_schema_shape_round_trips_and_rejects_malformed_or_unknown_versions() {
|
|||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(terminal_modes_v2(), &mut seen);
|
||||
verify_shape(
|
||||
TerminalBreak {
|
||||
session_id: session_id(),
|
||||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
TerminalSignal {
|
||||
session_id: session_id(),
|
||||
|
|
@ -227,12 +240,29 @@ fn every_schema_shape_round_trips_and_rejects_malformed_or_unknown_versions() {
|
|||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(InteractiveProtocolVersion::V2, &mut seen);
|
||||
verify_shape(
|
||||
InteractiveSessionRequestV2 {
|
||||
protocol_version: InteractiveProtocolVersion::V2,
|
||||
session_id: session_id(),
|
||||
argv: vec![b"tool".to_vec()],
|
||||
initial_size: interactive_resize,
|
||||
initial_modes: terminal_modes_v2(),
|
||||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
InteractiveSessionEvent::Poll {
|
||||
session_id: session_id(),
|
||||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
InteractiveSessionEventV2::Poll {
|
||||
session_id: session_id(),
|
||||
},
|
||||
&mut seen,
|
||||
);
|
||||
let prompt = TerminalPrompt {
|
||||
session_id: session_id(),
|
||||
request_id: RequestId::new(opaque(54)),
|
||||
|
|
@ -251,6 +281,13 @@ fn every_schema_shape_round_trips_and_rejects_malformed_or_unknown_versions() {
|
|||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(
|
||||
InteractiveSessionBatchV2 {
|
||||
session_id: session_id(),
|
||||
messages: Vec::new(),
|
||||
},
|
||||
&mut seen,
|
||||
);
|
||||
verify_shape(generation_identity(), &mut seen);
|
||||
verify_shape(trust_manifest(), &mut seen);
|
||||
verify_shape(tls_credential.clone(), &mut seen);
|
||||
|
|
@ -649,8 +686,8 @@ persistent_dirs = []
|
|||
assert_eq!(
|
||||
seen.digest(),
|
||||
[
|
||||
54, 187, 13, 149, 227, 157, 1, 54, 234, 66, 127, 9, 34, 65, 173, 20, 214, 200, 126, 67,
|
||||
1, 216, 152, 76, 167, 32, 177, 218, 0, 192, 175, 28,
|
||||
201, 9, 82, 185, 208, 17, 32, 181, 237, 9, 161, 239, 26, 109, 45, 148, 192, 138, 104,
|
||||
114, 203, 147, 61, 180, 162, 184, 139, 77, 227, 8, 27, 128,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,6 +220,7 @@ fn control_corpus(digest: &mut Sha256) {
|
|||
ControlRequest::Register(_) => ControlRequest::Register(registration_request()),
|
||||
ControlRequest::Execute(_) => ControlRequest::Execute(NonInteractiveSessionRequest { protocol_version: ProtocolVersion::V1, session_id: session_id(), argv: vec![b"tool".to_vec()] }),
|
||||
ControlRequest::ExecuteInteractive(_) => ControlRequest::ExecuteInteractive(InteractiveSessionRequest { protocol_version: ProtocolVersion::V1, session_id: session_id(), argv: vec![b"tool".to_vec()], initial_size: resize }),
|
||||
ControlRequest::ExecuteInteractiveV2(_) => ControlRequest::ExecuteInteractiveV2(InteractiveSessionRequestV2 { protocol_version: InteractiveProtocolVersion::V2, session_id: session_id(), argv: vec![b"tool".to_vec()], initial_size: resize, initial_modes: terminal_modes_v2() }),
|
||||
});
|
||||
enum_corpus!(digest, ControlResponse, {
|
||||
ControlResponse::Enrolled(_) => ControlResponse::Enrolled(enrollment_response()),
|
||||
|
|
@ -231,6 +232,9 @@ fn credential_corpus(digest: &mut Sha256) {
|
|||
enum_corpus!(digest, ProtocolVersion, {
|
||||
ProtocolVersion::V1 => ProtocolVersion::V1,
|
||||
});
|
||||
enum_corpus!(digest, InteractiveProtocolVersion, {
|
||||
InteractiveProtocolVersion::V2 => InteractiveProtocolVersion::V2,
|
||||
});
|
||||
enum_corpus!(digest, TlsRole, {
|
||||
TlsRole::SessionCoordinator => TlsRole::SessionCoordinator,
|
||||
TlsRole::ClientCli => TlsRole::ClientCli,
|
||||
|
|
@ -325,8 +329,8 @@ fn every_serialized_enum_variant_has_fixed_shape_evidence() {
|
|||
assert_eq!(
|
||||
digest.finalize().as_slice(),
|
||||
[
|
||||
63, 126, 242, 211, 164, 165, 11, 185, 180, 135, 109, 135, 92, 142, 111, 169, 142, 215,
|
||||
49, 4, 170, 169, 119, 237, 235, 161, 192, 89, 92, 93, 88, 35,
|
||||
16, 136, 82, 10, 228, 231, 132, 63, 189, 59, 106, 16, 164, 103, 232, 11, 245, 31, 144,
|
||||
53, 91, 201, 91, 74, 66, 14, 174, 78, 110, 17, 181, 21,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue