use super::cases::{ get_date, get_salt, get_test_cases, get_token, get_v1_hmac_headers, get_v2_hmac_headers, }; use ncryptf::*; #[test] fn test_v1_hmac() { let cases = get_test_cases(); let hmacs = get_v1_hmac_headers(); let date = get_date(); let salt = get_salt(); let token = get_token(); for (i, case) in cases.iter().enumerate() { let auth = Authorization::from( case.method.clone(), case.uri.clone(), token.clone(), date, case.payload.clone(), Some(salt.clone()), Some(1), ); assert!(auth.is_ok()); let a = auth.unwrap(); let header = a.get_header(); let actual = header.as_str(); let expected = hmacs.get(i).unwrap().as_str(); assert!(actual.eq(expected)); } } #[test] fn test_v2_hmac() { let cases = get_test_cases(); let hmacs = get_v2_hmac_headers(); let date = get_date(); let salt = get_salt(); let token = get_token(); for (i, case) in cases.iter().enumerate() { let auth = Authorization::from( case.method.clone(), case.uri.clone(), token.clone(), date, case.payload.clone(), Some(salt.clone()), Some(2), ); assert!(auth.is_ok()); let a = auth.unwrap(); let header = a.get_header(); let actual = header.as_str(); let expected = hmacs.get(i).unwrap().as_str(); assert!(actual.eq(expected)); } } #[test] fn test_verify_hmac() { let cases = get_test_cases(); let date = get_date(); let salt = get_salt(); let token = get_token(); for case in cases.iter() { let auth = Authorization::from( case.method.clone(), case.uri.clone(), token.clone(), date, case.payload.clone(), Some(salt.clone()), Some(2), ); assert!(auth.is_ok()); let a = auth.unwrap(); let result = a.verify(a.get_hmac(), 60); assert!(result == true); } } #[test] fn test_auth_header_extract() { let date = get_date(); let salt = get_salt(); let token = get_token(); let auth = Authorization::from( "GET".to_string(), "/".to_string(), token.clone(), date, "".to_string(), Some(salt), Some(2), ); let header = auth.unwrap().get_header(); match Authorization::extract_params_from_header_string(header) { Ok(params) => { let at = params.access_token; assert_eq!(token.access_token, at); } Err(error) => { dbg!(error); assert!(false); } }; }