Skip to content
This repository has been archived by the owner on Jun 29, 2023. It is now read-only.

Commit

Permalink
feat: add tests to sdk
Browse files Browse the repository at this point in the history
  • Loading branch information
kjuulh committed Feb 25, 2023
1 parent 5f9b3a1 commit 4381af0
Showing 1 changed file with 98 additions and 1 deletion.
99 changes: 98 additions & 1 deletion crates/dagger-sdk/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use dagger_sdk::{connect, ContainerExecOptsBuilder};
use dagger_sdk::{connect, ContainerExecOpts, ContainerExecOptsBuilder};
use pretty_assertions::assert_eq;

#[tokio::test]
async fn test_example_container() {
Expand All @@ -19,3 +20,99 @@ async fn test_example_container() {

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);
}

0 comments on commit 4381af0

Please sign in to comment.