Skip to content

Commit abc8aad

Browse files
committed
Fix serialization of GCS session with bearer token
1 parent 2ec0266 commit abc8aad

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

icechunk/src/config.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,6 @@ pub enum GcsStaticCredentials {
528528
}
529529

530530
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
531-
#[serde(tag = "gcs_bearer_credential_type")]
532-
#[serde(rename_all = "snake_case")]
533531
pub struct GcsBearerCredential {
534532
pub bearer: String,
535533
pub expires_after: Option<DateTime<Utc>>,

icechunk/src/storage/mod.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,8 @@ mod tests {
950950

951951
use std::{collections::HashSet, fs::File, io::Write, path::PathBuf};
952952

953+
use crate::config::{GcsBearerCredential, GcsStaticCredentials};
954+
953955
use super::*;
954956
use icechunk_macros::tokio_test;
955957
use proptest::prelude::*;
@@ -971,6 +973,27 @@ mod tests {
971973
assert!(s.root_is_clean().await.unwrap());
972974
}
973975

976+
#[tokio_test]
977+
/// Regression test: we can deserialize a GCS credential with token
978+
async fn test_gcs_session_serialization() {
979+
let storage = new_gcs_storage(
980+
"bucket".to_string(),
981+
Some("prefix".to_string()),
982+
Some(GcsCredentials::Static(GcsStaticCredentials::BearerToken(
983+
GcsBearerCredential {
984+
bearer: "the token".to_string(),
985+
expires_after: None,
986+
},
987+
))),
988+
None,
989+
)
990+
.await
991+
.unwrap();
992+
let bytes = rmp_serde::to_vec(&storage).unwrap();
993+
let dese: Result<Arc<dyn Storage>, _> = rmp_serde::from_slice(&bytes);
994+
assert!(dese.is_ok())
995+
}
996+
974997
proptest! {
975998
#![proptest_config(ProptestConfig {
976999
cases: 999, .. ProptestConfig::default()

0 commit comments

Comments
 (0)