mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2025-04-20 04:29:50 +02:00
Merge 22db6bcb7c593673a1403eadf54e37e065c8109b into 6937ef0ace797315013513aa7e2af39a9206a738
This commit is contained in:
commit
4356fd16dd
2
crates/dagger-sdk/tests/integration_tests.rs
Normal file
2
crates/dagger-sdk/tests/integration_tests.rs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mod issues;
|
||||||
|
mod standard_apis;
|
@ -1,5 +1,3 @@
|
|||||||
mod issues;
|
|
||||||
|
|
||||||
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
use dagger_sdk::{connect, ContainerExecOptsBuilder};
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
@ -23,46 +21,6 @@ async fn test_example_container() {
|
|||||||
assert_eq!(out, "3.16.2\n".to_string())
|
assert_eq!(out, "3.16.2\n".to_string())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_directory() {
|
|
||||||
let c = connect().await.unwrap();
|
|
||||||
|
|
||||||
let contents = c
|
|
||||||
.directory()
|
|
||||||
.with_new_file("/hello.txt", "world")
|
|
||||||
.file("/hello.txt")
|
|
||||||
.contents()
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
assert_eq!("world", contents)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_git() {
|
|
||||||
let c = connect().await.unwrap();
|
|
||||||
|
|
||||||
let tree = c.git("github.com/dagger/dagger").branch("main").tree();
|
|
||||||
|
|
||||||
let _ = tree
|
|
||||||
.entries()
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.iter()
|
|
||||||
.find(|f| f.as_str() == "README.md")
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let readme_file = tree.file("README.md");
|
|
||||||
|
|
||||||
let readme = readme_file.contents().await.unwrap();
|
|
||||||
assert_eq!(true, readme.find("Dagger").is_some());
|
|
||||||
|
|
||||||
let readme_id = readme_file.id().await.unwrap();
|
|
||||||
let other_readme = c.file(readme_id).contents().await.unwrap();
|
|
||||||
|
|
||||||
assert_eq!(readme, other_readme);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_container() {
|
async fn test_container() {
|
||||||
let client = connect().await.unwrap();
|
let client = connect().await.unwrap();
|
||||||
@ -102,19 +60,3 @@ async fn test_container() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(contents, "3.16.2\n".to_string());
|
assert_eq!(contents, "3.16.2\n".to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_err_message() {
|
|
||||||
let client = connect().await.unwrap();
|
|
||||||
|
|
||||||
let alpine = client.container().from("fake.invalid:latest").id().await;
|
|
||||||
assert_eq!(alpine.is_err(), true);
|
|
||||||
let err = alpine.expect_err("Tests expect err");
|
|
||||||
|
|
||||||
let error_msg = r#"
|
|
||||||
GQLClient Error: Look at json field for more details
|
|
||||||
Message: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
|
|
||||||
"#;
|
|
||||||
|
|
||||||
assert_eq!(err.to_string().as_str(), error_msg);
|
|
||||||
}
|
|
17
crates/dagger-sdk/tests/standard_apis/directory.rs
Normal file
17
crates/dagger-sdk/tests/standard_apis/directory.rs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
use dagger_sdk::connect;
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_directory() {
|
||||||
|
let c = connect().await.unwrap();
|
||||||
|
|
||||||
|
let contents = c
|
||||||
|
.directory()
|
||||||
|
.with_new_file("/hello.txt", "world")
|
||||||
|
.file("/hello.txt")
|
||||||
|
.contents()
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_eq!("world", contents)
|
||||||
|
}
|
62
crates/dagger-sdk/tests/standard_apis/file.rs
Normal file
62
crates/dagger-sdk/tests/standard_apis/file.rs
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
use dagger_sdk::connect;
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
static TEST_FILE_PATH: &str = "./data/";
|
||||||
|
static TEST_FILE_NAME: &str = "test.txt";
|
||||||
|
static TEST_FILE_CONTENT: &str = "This is a test file.";
|
||||||
|
static ALPINE_VERSION: &str = "3.16.2";
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_file_from_host() -> eyre::Result<()> {
|
||||||
|
setup_file().await?;
|
||||||
|
|
||||||
|
let client = connect().await.unwrap();
|
||||||
|
|
||||||
|
let file = client.host().directory(TEST_FILE_PATH).file(TEST_FILE_NAME);
|
||||||
|
let file_content = file.contents().await?;
|
||||||
|
assert_eq!(file_content, TEST_FILE_CONTENT);
|
||||||
|
|
||||||
|
let file_retrieved_by_id = client.file(file.id().await?);
|
||||||
|
let file_retrieved_by_id_content = file_retrieved_by_id.contents().await?;
|
||||||
|
assert_eq!(file_retrieved_by_id_content, TEST_FILE_CONTENT);
|
||||||
|
|
||||||
|
cleanup_file().await
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_file_from_container() -> eyre::Result<()> {
|
||||||
|
let client = connect().await.unwrap();
|
||||||
|
|
||||||
|
let alpine = client.container().from(format!("alpine:{}", ALPINE_VERSION));
|
||||||
|
let file = alpine.file("/etc/alpine-release");
|
||||||
|
|
||||||
|
let file_content = file.contents().await?;
|
||||||
|
let expected_file_content = format!("{}\n", ALPINE_VERSION);
|
||||||
|
assert_eq!(file_content, expected_file_content);
|
||||||
|
|
||||||
|
let file_retrieved_by_id = client.file(file.id().await?);
|
||||||
|
let file_retrieved_by_id_contents = file_retrieved_by_id.contents().await?;
|
||||||
|
assert_eq!(file_retrieved_by_id_contents, expected_file_content);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn setup_file() -> eyre::Result<()> {
|
||||||
|
let full_file_path = String::from(TEST_FILE_PATH) + TEST_FILE_NAME;
|
||||||
|
tokio::fs::create_dir(TEST_FILE_PATH)
|
||||||
|
.await
|
||||||
|
.map_err(eyre::Error::from)?;
|
||||||
|
tokio::fs::write(full_file_path, TEST_FILE_CONTENT)
|
||||||
|
.await
|
||||||
|
.map_err(eyre::Error::from)
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn cleanup_file() -> eyre::Result<()> {
|
||||||
|
let full_file_path = String::from(TEST_FILE_PATH) + TEST_FILE_NAME;
|
||||||
|
tokio::fs::remove_file(full_file_path)
|
||||||
|
.await
|
||||||
|
.map_err(eyre::Error::from)?;
|
||||||
|
tokio::fs::remove_dir(TEST_FILE_PATH)
|
||||||
|
.await
|
||||||
|
.map_err(eyre::Error::from)
|
||||||
|
}
|
27
crates/dagger-sdk/tests/standard_apis/git.rs
Normal file
27
crates/dagger-sdk/tests/standard_apis/git.rs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
use dagger_sdk::connect;
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_git() {
|
||||||
|
let c = connect().await.unwrap();
|
||||||
|
|
||||||
|
let tree = c.git("github.com/dagger/dagger").branch("main").tree();
|
||||||
|
|
||||||
|
let _ = tree
|
||||||
|
.entries()
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
.iter()
|
||||||
|
.find(|f| f.as_str() == "README.md")
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let readme_file = tree.file("README.md");
|
||||||
|
|
||||||
|
let readme = readme_file.contents().await.unwrap();
|
||||||
|
assert_eq!(true, readme.find("Dagger").is_some());
|
||||||
|
|
||||||
|
let readme_id = readme_file.id().await.unwrap();
|
||||||
|
let other_readme = c.file(readme_id).contents().await.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(readme, other_readme);
|
||||||
|
}
|
23
crates/dagger-sdk/tests/standard_apis/mod.rs
Normal file
23
crates/dagger-sdk/tests/standard_apis/mod.rs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
mod container;
|
||||||
|
mod directory;
|
||||||
|
mod file;
|
||||||
|
mod git;
|
||||||
|
|
||||||
|
use dagger_sdk::connect;
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_err_message() {
|
||||||
|
let client = connect().await.unwrap();
|
||||||
|
|
||||||
|
let alpine = client.container().from("fake.invalid:latest").id().await;
|
||||||
|
assert_eq!(alpine.is_err(), true);
|
||||||
|
let err = alpine.expect_err("Tests expect err");
|
||||||
|
|
||||||
|
let error_msg = r#"
|
||||||
|
GQLClient Error: Look at json field for more details
|
||||||
|
Message: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
|
||||||
|
"#;
|
||||||
|
|
||||||
|
assert_eq!(err.to_string().as_str(), error_msg);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user