Skip to content

Commit

Permalink
feat(objectarium): add validation for accepted_compression_algorithms
Browse files Browse the repository at this point in the history
  • Loading branch information
bdeneux committed Jun 11, 2024
1 parent eb55d42 commit ce89427
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 18 deletions.
18 changes: 6 additions & 12 deletions contracts/axone-objectarium/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ pub fn instantiate(
let bucket = Bucket::try_new(
info.sender,
msg.bucket,
msg.config.into(),
msg.config.try_into()?,
msg.limits.try_into()?,
msg.pagination.try_into()?,
)?;
Expand Down Expand Up @@ -429,7 +429,11 @@ mod tests {
use crate::compress;
use crate::crypto::Hash;
use crate::error::BucketError;
use crate::msg::{BucketConfig, BucketConfigBuilder, BucketLimitsBuilder, BucketResponse, CompressionAlgorithm, HashAlgorithm, ObjectPinsResponse, ObjectResponse, ObjectsResponse, PageInfo, PaginationConfigBuilder};
use crate::msg::{
BucketConfig, BucketConfigBuilder, BucketLimitsBuilder, BucketResponse,
CompressionAlgorithm, HashAlgorithm, ObjectPinsResponse, ObjectResponse, ObjectsResponse,
PageInfo, PaginationConfigBuilder,
};
use base64::{engine::general_purpose, Engine as _};
use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info};
use cosmwasm_std::StdError::NotFound;
Expand Down Expand Up @@ -1251,16 +1255,6 @@ mod tests {
),
)),
},
TC {
accepted_compression_algorithms: vec![],
compression_algorithm: Some(CompressionAlgorithm::Passthrough),
expected_result: Either::Left(ContractError::Bucket(
BucketError::CompressionAlgorithmNotAccepted(
CompressionAlgorithm::Passthrough,
vec![],
),
)),
},
];
let data ="In a magical land, there were many realms, one of which was known as OKP4. Within \
this realm, druid programmers possessed the power to create smart contracts. As the kingdom \
Expand Down
31 changes: 25 additions & 6 deletions contracts/axone-objectarium/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,16 +140,35 @@ pub struct BucketConfig {
pub accepted_compression_algorithms: Vec<CompressionAlgorithm>,
}

impl From<msg::BucketConfig> for BucketConfig {
fn from(config: msg::BucketConfig) -> Self {
BucketConfig {
hash_algorithm: config.hash_algorithm.into(),
accepted_compression_algorithms: config
impl BucketConfig {
fn try_new(
hash_algorithm: HashAlgorithm,
accepted_compression_algorithms: Vec<CompressionAlgorithm>,
) -> StdResult<BucketConfig> {
ensure!(
!accepted_compression_algorithms.is_empty(),
StdError::generic_err("'accepted_compression_algorithms' cannot be empty")
);

Ok(BucketConfig {
hash_algorithm,
accepted_compression_algorithms,
})
}
}

impl TryFrom<msg::BucketConfig> for BucketConfig {
type Error = StdError;

fn try_from(config: msg::BucketConfig) -> StdResult<BucketConfig> {
BucketConfig::try_new(
config.hash_algorithm.into(),
config
.accepted_compression_algorithms
.into_iter()
.map(Into::into)
.collect(),
}
)
}
}

Expand Down

0 comments on commit ce89427

Please sign in to comment.