-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathintegration.rs
More file actions
45 lines (40 loc) · 1.75 KB
/
integration.rs
File metadata and controls
45 lines (40 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//! Integration tests for Provision Command
//!
//! This module contains integration tests for the `ProvisionCommandHandler`.
use crate::adapters::ssh::SshError;
use crate::adapters::tofu::client::OpenTofuError;
use crate::application::command_handlers::provision::ProvisionCommandHandlerError;
use crate::infrastructure::templating::tofu::TofuProjectGeneratorError;
use crate::shared::command::CommandError;
#[test]
fn it_should_have_correct_error_type_conversions() {
// Test that all error types can convert to ProvisionCommandHandlerError
let template_error = TofuProjectGeneratorError::DirectoryCreationFailed {
directory: "/test".to_string(),
source: std::io::Error::new(std::io::ErrorKind::PermissionDenied, "test"),
};
let provision_error: ProvisionCommandHandlerError = template_error.into();
drop(provision_error);
let command_error = CommandError::StartupFailed {
command: "test".to_string(),
source: std::io::Error::new(std::io::ErrorKind::NotFound, "test"),
};
let opentofu_error = OpenTofuError::CommandError(command_error);
let provision_error: ProvisionCommandHandlerError = opentofu_error.into();
drop(provision_error);
let command_error_direct = CommandError::ExecutionFailed {
command: "test".to_string(),
exit_code: "1".to_string(),
stdout: String::new(),
stderr: "test error".to_string(),
};
let provision_error: ProvisionCommandHandlerError = command_error_direct.into();
drop(provision_error);
let ssh_error = SshError::ConnectivityTimeout {
host_ip: "127.0.0.1".to_string(),
attempts: 5,
timeout_seconds: 30,
};
let provision_error: ProvisionCommandHandlerError = ssh_error.into();
drop(provision_error);
}