Skip to content

Commit

Permalink
test: add test for encryption scheme flag
Browse files Browse the repository at this point in the history
  • Loading branch information
mmalenic committed Jan 24, 2025
1 parent f9b863a commit c15e004
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 16 deletions.
3 changes: 2 additions & 1 deletion htsget-config/src/config/advanced/url.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ impl Url {
forward_headers,
header_blacklist,
tls,
..Default::default()
#[cfg(feature = "experimental")]
keys: None,
}
}

Expand Down
3 changes: 2 additions & 1 deletion htsget-config/src/storage/s3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ impl S3 {
bucket,
endpoint,
path_style,
..Default::default()
#[cfg(feature = "experimental")]
keys: None,
}
}

Expand Down
3 changes: 2 additions & 1 deletion htsget-config/src/storage/url.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ impl Url {
forward_headers,
header_blacklist,
client,
..Default::default()
#[cfg(feature = "experimental")]
keys: None,
}
}

Expand Down
46 changes: 33 additions & 13 deletions htsget-storage/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,12 @@ impl Storage {
}

/// Create from local storage config.
pub async fn from_file(file: &storage::file::File, query: &Query) -> Result<Storage> {
pub async fn from_file(file: &storage::file::File, _query: &Query) -> Result<Storage> {
let storage = Storage::new(FileStorage::new(file.local_path(), file.clone())?);

cfg_if! {
if #[cfg(feature = "experimental")] {
Self::from_c4gh_keys(file.keys(), query.encryption_scheme(), storage).await
Self::from_c4gh_keys(file.keys(), _query.encryption_scheme(), storage).await
} else {
Ok(storage)
}
Expand All @@ -172,7 +172,7 @@ impl Storage {

/// Create from s3 config.
#[cfg(feature = "aws")]
pub async fn from_s3(s3: &storage::s3::S3, query: &Query) -> Result<Storage> {
pub async fn from_s3(s3: &storage::s3::S3, _query: &Query) -> Result<Storage> {
let storage = Storage::new(
S3Storage::new_with_default_config(
s3.bucket().to_string(),
Expand All @@ -184,7 +184,7 @@ impl Storage {

cfg_if! {
if #[cfg(feature = "experimental")] {
Self::from_c4gh_keys(s3.keys(), query.encryption_scheme(), storage).await
Self::from_c4gh_keys(s3.keys(), _query.encryption_scheme(), storage).await
} else {
Ok(storage)
}
Expand All @@ -193,7 +193,7 @@ impl Storage {

/// Create from url config.
#[cfg(feature = "url")]
pub async fn from_url(url: &storage::url::Url, query: &Query) -> Result<Storage> {
pub async fn from_url(url: &storage::url::Url, _query: &Query) -> Result<Storage> {
let storage = Storage::new(UrlStorage::new(
url.client_cloned(),
url.url().clone(),
Expand All @@ -204,7 +204,7 @@ impl Storage {

cfg_if! {
if #[cfg(feature = "experimental")] {
Self::from_c4gh_keys(url.keys(), query.encryption_scheme(), storage).await
Self::from_c4gh_keys(url.keys(), _query.encryption_scheme(), storage).await
} else {
Ok(storage)
}
Expand Down Expand Up @@ -308,18 +308,16 @@ mod tests {
use http::uri::Authority;

use crate::local::FileStorage;
use htsget_test::util::default_dir;
use htsget_test::util::default_dir_data;

use super::*;

#[test]
fn data_url() {
let result = FileStorage::<storage::file::File>::new(
default_dir().join("data"),
storage::file::File::default(),
)
.unwrap()
.data_url(b"Hello World!".to_vec(), Some(Class::Header));
let result =
FileStorage::<storage::file::File>::new(default_dir_data(), storage::file::File::default())
.unwrap()
.data_url(b"Hello World!".to_vec(), Some(Class::Header));
let url = data_url::DataUrl::process(&result.url);
let (result, _) = url.unwrap().decode_to_vec().unwrap();
assert_eq!(result, b"Hello World!");
Expand All @@ -345,6 +343,28 @@ mod tests {
test_formatter_authority(formatter, "https");
}

#[cfg(feature = "experimental")]
#[tokio::test]
async fn from_c4gh_keys() {
let keys = tokio::spawn(async { Ok(C4GHKeys::from_key_pair(vec![], vec![])) });
let storage =
Storage::new(FileStorage::new(default_dir_data(), storage::file::File::default()).unwrap());

let result = Storage::from_c4gh_keys(
Some(&C4GHKeys::from_join_handle(keys)),
Some(EncryptionScheme::C4GH),
storage.clone(),
)
.await;
assert!(result.is_ok());

let result = Storage::from_c4gh_keys(None, None, storage.clone()).await;
assert!(result.is_ok());

let result = Storage::from_c4gh_keys(None, Some(EncryptionScheme::C4GH), storage).await;
assert!(matches!(result, Err(StorageError::UnsupportedFormat(_))));
}

fn test_formatter_authority(formatter: storage::file::File, scheme: &str) {
assert_eq!(
formatter.format_url("path").unwrap(),
Expand Down

0 comments on commit c15e004

Please sign in to comment.