You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.3 KiB
97 lines
3.3 KiB
// get_personal_jobs(&self, url_param: Id) |
|
// report(&self, payload: impl OneOrVec<messaging::Reportable>) |
|
// dl(&self, file: String) |
|
// get_job(&self, job: Id) |
|
// get_jobs(&self) |
|
// get_agents(&self, agent: Option<Id>) |
|
// update_agent(&self, agent: Agent) |
|
// update_job(&self, job: FatJob) |
|
// update_result(&self, result: AssignedJob) |
|
// upload_jobs(&self, payload: impl OneOrVec<FatJob>) |
|
// del(&self, item: Id) |
|
// set_jobs(&self, agent: Id, job_idents: impl OneOrVec<String>) |
|
// get_agent_jobs(&self, agent: Option<Id>) |
|
// ping(&self) |
|
|
|
use crate::fixtures::connections::*; |
|
use std::iter::repeat; |
|
use u_lib::models::{Brief, RawJob, RawPayload, MAX_READABLE_PAYLOAD_SIZE}; |
|
|
|
#[rstest] |
|
#[tokio::test] |
|
async fn jobs_upload_update_get_del(client_panel: &HttpClient) { |
|
let job_alias = "henlo"; |
|
let mut job = RawJob::default() |
|
.with_shell("/bin/bash {}") |
|
.with_raw_payload("echo henlo") |
|
.with_alias(job_alias) |
|
.try_into_job() |
|
.unwrap(); |
|
|
|
let job_id = job.meta.id; |
|
|
|
client_panel.upload_jobs([&job]).await.unwrap(); |
|
|
|
let fetched_job = client_panel.get_full_job(job_id).await.unwrap(); |
|
assert_eq!(job, fetched_job); |
|
|
|
let new_alias = "henlo2".to_string(); |
|
job.meta.alias = Some(new_alias.clone()); |
|
client_panel.update_job(&job.meta).await.unwrap(); |
|
|
|
let fetched_job = client_panel.get_full_job(job_id).await.unwrap(); |
|
assert_eq!( |
|
fetched_job.payload.as_ref().unwrap().data.as_ref().unwrap(), |
|
b"echo henlo" |
|
); |
|
assert_eq!(fetched_job.meta.alias, Some(new_alias)); |
|
|
|
client_panel.del(job_id).await.unwrap(); |
|
|
|
let not_found_err = client_panel.get_brief_job(job_id).await.unwrap_err(); |
|
assert!(not_found_err.to_string().contains("404 Not Found")) |
|
} |
|
|
|
#[rstest] |
|
#[tokio::test] |
|
async fn payloads_upload_update_get_del(client_panel: &HttpClient) { |
|
let name = "test1".to_string(); |
|
let data = b"qweasdzxc".to_vec(); |
|
let payload = RawPayload { |
|
name: Some(name.clone()), |
|
data: data.clone(), |
|
}; |
|
|
|
client_panel.upload_payload(&payload).await.unwrap(); |
|
|
|
let mut fetched_payload = client_panel.get_payload(&name, Brief::No).await.unwrap(); |
|
let fetched_payload_auto = client_panel.get_payload(&name, Brief::Auto).await.unwrap(); |
|
|
|
assert_eq!(fetched_payload, fetched_payload_auto); |
|
assert_eq!(fetched_payload.data.unwrap(), data); |
|
|
|
let new_size = MAX_READABLE_PAYLOAD_SIZE + 1; |
|
let big_data = repeat(1u8).take(new_size as usize).collect::<Vec<_>>(); |
|
|
|
fetched_payload.data = Some(big_data.clone()); |
|
client_panel.update_payload(&fetched_payload).await.unwrap(); |
|
|
|
let fetched_big_payload = client_panel.get_payload(&name, Brief::Yes).await.unwrap(); |
|
let fetched_big_payload_auto = client_panel.get_payload(&name, Brief::Auto).await.unwrap(); |
|
|
|
assert_eq!(fetched_big_payload, fetched_big_payload_auto); |
|
assert_eq!(fetched_big_payload.size, new_size); |
|
assert!(fetched_big_payload.data.is_none()); |
|
|
|
let fetched_big_payload_full = client_panel.get_payload(&name, Brief::No).await.unwrap(); |
|
|
|
assert_eq!(fetched_big_payload_full.data.unwrap(), big_data); |
|
|
|
client_panel.del(fetched_big_payload_full.id).await.unwrap(); |
|
|
|
let not_found_err = client_panel |
|
.get_payload(&name, Brief::Yes) |
|
.await |
|
.unwrap_err(); |
|
assert!(not_found_err.to_string().contains("404 Not Found")) |
|
}
|
|
|