#![allow(unused)]
use render_cdk::authentication::owner::Info;
use render_cdk::resource_management::models::template::*;
use render_cdk::resource_management::prelude::*;
use render_cdk::utils::config::Conf;
use colored::Colorize;
use render_cdk::logger::prelude::*;
use render_cdk::LOGGER;
use std::default::Default;
use tokio::main;
use tokio::time::{sleep, Duration};
#[main]
async fn main() {
let static_site = Template {
type_: "static_site".to_owned(),
name: "test_static".to_owned(),
repo: "https://github.com/lexara-prime-ai/SAMPLE_STATIC_SITE".to_owned(),
auto_deploy: Some("yes".to_owned()),
root_dir: Some("./public".to_owned()),
service_details: Some(ServiceDetails {
publish_path: Some("./".to_owned()),
pull_request_previews_enabled: Some("yes".to_owned()),
..Default::default()
}),
..Default::default()
};
let web_service = Template {
type_: "web_service".to_owned(),
name: "test_web".to_owned(),
repo: "https://github.com/lexara-prime-ai/SAMPLE_WEB_SERVICE".to_owned(),
auto_deploy: Some("yes".to_owned()),
root_dir: Some("./".to_owned()),
service_details: Some(ServiceDetails {
region: Some("oregon".to_owned()),
plan: Some("starter".to_owned()),
runtime: Some("node".to_owned()),
num_instances: Some(1),
env_specific_details: Some(EnvSpecificDetails {
build_command: Some("yarn".to_owned()),
start_command: Some("npm start".to_owned()),
}),
pull_request_previews_enabled: Some("yes".to_owned()),
..Default::default()
}),
..Default::default()
};
}
#[cfg(test)]
mod regression_tests {
use super::*;
use tokio::time::{sleep, Duration};
#[tokio::test]
async fn test_list_all_services() {
let result = ServiceManager::list_all_services("10").await;
assert!(result.is_ok());
let services = result.unwrap().to_string();
assert!(!services.is_empty());
}
#[tokio::test]
async fn test_list_all_postgres_instances() {
let result = ServiceManager::list_postgres_instances(true, "10").await;
assert!(result.is_ok());
let instances = result.unwrap().to_string();
assert!(!instances.is_empty());
}
#[tokio::test]
async fn test_list_services_with_status() {
let results = ServiceManager::list_services_with_status("suspended", "10").await;
assert!(results.is_ok());
let services = results.unwrap().to_string();
assert!(!services.is_empty());
}
#[tokio::test]
async fn test_find_postgres_instance_with_status() {
let results =
ServiceManager::find_postgres_instance_with_status("suspended", true, "50").await;
assert!(results.is_ok());
let instances = results.unwrap().to_string();
assert!(!instances.is_empty());
}
#[tokio::test]
async fn test_find_service_by_name_and_type() {
let result = ServiceManager::find_service_by_name_and_type("whoami", "web_service").await;
assert!(result.is_ok());
let services = result.unwrap().to_string();
assert!(!services.is_empty());
}
#[tokio::test]
async fn test_find_postgres_instance_by_name() {
let result =
ServiceManager::find_postgres_instance_by_name("fluentcomet", true, "100").await;
assert!(result.is_ok());
let instances = result.unwrap().to_string();
assert!(!instances.is_empty());
}
#[tokio::test]
async fn test_find_redis_instance_by_name() {
let result = ServiceManager::find_redis_instance_by_name("fluentcomet", "100").await;
assert!(result.is_ok());
let instances = result.unwrap().to_string();
assert!(!instances.is_empty());
}
#[tokio::test]
async fn test_find_service_by_region() {
let result = ServiceManager::find_service_by_region("oregon", "10").await;
assert!(result.is_ok());
let services = result.unwrap().to_string();
assert!(!services.is_empty());
}
#[tokio::test]
async fn test_find_service_by_environment() {
let result = ServiceManager::find_service_by_environment("image", "10").await;
assert!(result.is_ok());
let services = result.unwrap().to_string();
assert!(!services.is_empty());
}
#[tokio::test]
async fn test_create_static() {
let deployment_config = Template {
type_: "static_site".to_owned(),
name: "test_deployment".to_owned(),
repo: "https://github.com/lexara-prime-ai/SAMPLE_STATIC_SITE".to_owned(),
auto_deploy: Some("yes".to_owned()),
root_dir: Some("./public".to_owned()),
service_details: Some(ServiceDetails {
build_command: None,
publish_path: Some("./".to_owned()),
pull_request_previews_enabled: Some("yes".to_owned()),
..Default::default()
}),
..Default::default()
};
let service_type = deployment_config.type_;
let service_name = deployment_config.name;
let repo_url = deployment_config.repo;
let auto_deploy = deployment_config.auto_deploy;
let root_dir = deployment_config.root_dir;
let build_command = deployment_config
.service_details
.clone()
.unwrap()
.build_command;
let publish_path = deployment_config
.service_details
.clone()
.unwrap()
.publish_path;
let pull_request_reviews_enabled = deployment_config
.service_details
.clone()
.unwrap()
.pull_request_previews_enabled;
assert!(!service_type.is_empty(), "Service type should be set.");
assert!(!service_name.is_empty(), "Service name should be set.");
assert!(!repo_url.is_empty(), "Repo url should be set.");
assert!(auto_deploy.is_some(), "Auto deploy should be set.");
assert_eq!(root_dir, Some("./public".to_owned()));
assert_eq!(build_command, None);
assert_eq!(publish_path, Some("./".to_owned()));
assert_eq!(pull_request_reviews_enabled, Some("yes".to_owned()));
}
}