From 4381af029521c2cbac9325278d261db79a994657 Mon Sep 17 00:00:00 2001 From: kjuulh Date: Sat, 25 Feb 2023 02:27:01 +0100 Subject: [PATCH] feat: add tests to sdk --- crates/dagger-sdk/tests/mod.rs | 99 +++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/crates/dagger-sdk/tests/mod.rs b/crates/dagger-sdk/tests/mod.rs index 6980530..16cf7bb 100644 --- a/crates/dagger-sdk/tests/mod.rs +++ b/crates/dagger-sdk/tests/mod.rs @@ -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() { @@ -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); +}