Introduces new environment variable to set public endpoint of the brain refactor redirect validation to db module validating pubsub node on all vm fixed some vm tests
47 lines
1.8 KiB
Rust
47 lines
1.8 KiB
Rust
use common::prepare_test_env::{prepare_test_db, run_service_for_stream};
|
|
use common::test_utils::{airdrop, Key};
|
|
use common::vm_daemon_utils::register_vm_node;
|
|
use detee_shared::vm_proto;
|
|
use detee_shared::vm_proto::brain_vm_cli_client::BrainVmCliClient;
|
|
use detee_shared::vm_proto::brain_vm_daemon_client::BrainVmDaemonClient;
|
|
|
|
mod common;
|
|
|
|
#[tokio::test]
|
|
async fn test_pub_sub_redirect() {
|
|
let _ = prepare_test_db().await.unwrap();
|
|
|
|
let brain_channel = run_service_for_stream().await.unwrap();
|
|
let mut vm_daemon_client = BrainVmDaemonClient::new(brain_channel.clone());
|
|
|
|
let node_key = Key::new();
|
|
|
|
let pubsub_brain_endpoint = "192.168.1.1:31337";
|
|
std::env::set_var("BRAIN_PUBLIC_ENDPOINT", pubsub_brain_endpoint);
|
|
register_vm_node(&mut vm_daemon_client, &node_key, &Key::new().pubkey).await.unwrap();
|
|
std::env::set_var("BRAIN_PUBLIC_ENDPOINT", "127.0.0.1:31337");
|
|
|
|
let client_key = Key::new();
|
|
|
|
let new_vm_req = vm_proto::NewVmReq {
|
|
admin_pubkey: client_key.pubkey.clone(),
|
|
node_pubkey: node_key.pubkey.clone(),
|
|
price_per_unit: 1200,
|
|
extra_ports: vec![8080, 8081],
|
|
locked_nano: 100,
|
|
..Default::default()
|
|
};
|
|
|
|
airdrop(&brain_channel, &client_key.pubkey, 10).await.unwrap();
|
|
|
|
std::env::set_var("BRAIN_PUBLIC_ENDPOINT", "10.0.0.1:31337");
|
|
let mut client_vm_cli = BrainVmCliClient::new(brain_channel.clone());
|
|
let redirect =
|
|
client_vm_cli.new_vm(client_key.sign_request(new_vm_req).unwrap()).await.err().unwrap();
|
|
std::env::set_var("BRAIN_PUBLIC_ENDPOINT", "127.0.0.1:31337");
|
|
assert_eq!(redirect.code(), tonic::Code::Unavailable);
|
|
let redirect_url =
|
|
redirect.metadata().get("location").and_then(|v| v.to_str().ok()).unwrap_or_default();
|
|
assert_eq!(redirect_url, pubsub_brain_endpoint);
|
|
}
|