indy-data-types 0.7.1

Common data types for Hyperledger Indy (https://www.hyperledger.org/projects), which provides a distributed-ledger-based foundation for self-sovereign identity (https://sovrin.org).
Documentation
use crate::qualifiable::{qualifiable_type, Qualifiable};
use crate::{Validatable, ValidationError};

qualifiable_type!(RichSchemaId, "A rich schema identifier");

impl RichSchemaId {
    pub const PREFIX: &'static str = "rich_schema";
    pub fn new(did_string: String) -> RichSchemaId {
        // ToDo: add RichSchema specific id forming if needed
        RichSchemaId(did_string)
    }
}

impl Validatable for RichSchemaId {
    fn validate(&self) -> Result<(), ValidationError> {
        // ToDO: add RichSchema ID specific validation
        Ok(())
    }
}

impl Qualifiable for RichSchemaId {
    fn prefix() -> &'static str {
        Self::PREFIX
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    fn _rs_id_qualified() -> RichSchemaId {
        RichSchemaId("did:sov:some_hash_value_or_something_else".to_string())
    }

    fn _rs_id_unqualified() -> RichSchemaId {
        RichSchemaId("some_other:sov:some_hash_value_or_something_else".to_string())
    }

    #[test]
    fn _validate_qualified_rs_id() {
        _rs_id_qualified().validate().unwrap();
    }

    // #[test]
    // fn _validate_unqualified_rs_id() {
    //     assert_eq!(_rs_id_unqualified().validate().unwrap(), false)
    // }
}