diff --git a/Cargo.toml b/Cargo.toml index 0a52d23..aca9d7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.4.1" +version = "0.4.3" edition = "2024" rust-version = "1.86" description = "models used for the icarus project" diff --git a/src/token.rs b/src/token.rs index fd8f6f7..8d85986 100644 --- a/src/token.rs +++ b/src/token.rs @@ -5,10 +5,10 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] pub struct Token { pub scope: String, - pub expiration: i32, + pub expiration: i64, pub audience: String, pub issuer: String, - pub issued: i32, + pub issued: i64, } #[derive(Clone, Debug, Deserialize, Serialize)] @@ -22,7 +22,7 @@ pub struct AccessToken { #[serde(alias = "token_type")] pub token_type: String, #[serde(alias = "expiration")] - pub expiration: i32, + pub expiration: i64, #[serde(alias = "message")] pub message: String, } @@ -57,14 +57,27 @@ impl Token { false } - // TODO: Implement pub fn contains_scope(&self, des_scope: &String) -> bool { - let extracted_token: String = String::from("Token"); - - if extracted_token == *des_scope { - return true; - } - - false + self.scope.contains(des_scope) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_token_scope_check() { + let mut token = Token::default(); + token.scope = String::from("song:read song:upload song:download"); + + let check_scope = String::from("song:download"); + let result = token.contains_scope(&check_scope); + + assert!( + result, + "Error: The scope {:?} was not found in the token's scope {:?}", + check_scope, token.scope + ); } }