mirror of
https://github.com/kjuulh/dagger-rs.git
synced 2024-11-23 07:33:01 +01:00
119 lines
2.9 KiB
Rust
119 lines
2.9 KiB
Rust
use dagger_sdk::{connect, ContainerExecOpts, ContainerExecOptsBuilder};
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[tokio::test]
|
|
async fn test_example_container() {
|
|
let client = connect().await.unwrap();
|
|
|
|
let alpine = client.container().from("alpine:3.16.2");
|
|
|
|
let out = alpine
|
|
.exec_opts(
|
|
ContainerExecOptsBuilder::default()
|
|
.args(vec!["cat", "/etc/alpine-release"])
|
|
.build()
|
|
.unwrap(),
|
|
)
|
|
.stdout()
|
|
.await
|
|
.unwrap();
|
|
|
|
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]
|
|
async fn test_container() {
|
|
let client = connect().await.unwrap();
|
|
|
|
let alpine = client.container().from("alpine:3.16.2");
|
|
|
|
let contents = alpine
|
|
.fs()
|
|
.file("/etc/alpine-release")
|
|
.contents()
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(contents, "3.16.2\n".to_string());
|
|
|
|
let out = alpine
|
|
.exec_opts(
|
|
ContainerExecOptsBuilder::default()
|
|
.args(vec!["cat", "/etc/alpine-release"])
|
|
.build()
|
|
.unwrap(),
|
|
)
|
|
.stdout()
|
|
.await
|
|
.unwrap();
|
|
assert_eq!(out, "3.16.2\n".to_string());
|
|
|
|
let id = alpine.id().await.unwrap();
|
|
let contents = client
|
|
.container_opts(dagger_sdk::QueryContainerOpts {
|
|
id: Some(id),
|
|
platform: None,
|
|
})
|
|
.fs()
|
|
.file("/etc/alpine-release")
|
|
.contents()
|
|
.await
|
|
.unwrap();
|
|
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);
|
|
}
|