use serde::de::DeserializeOwned;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
use crate::custom_serde::{deserialize_lambda_map, deserialize_nullish_boolean};
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEvent {
#[serde(default)]
pub dataset_name: Option<String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub dataset_records: HashMap<String, CognitoDatasetRecord>,
#[serde(default)]
pub event_type: Option<String>,
#[serde(default)]
pub identity_id: Option<String>,
#[serde(default)]
pub identity_pool_id: Option<String>,
#[serde(default)]
pub region: Option<String>,
pub version: i64,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoDatasetRecord {
#[serde(default)]
pub new_value: Option<String>,
#[serde(default)]
pub old_value: Option<String>,
#[serde(default)]
pub op: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreSignup {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsPreSignupRequest,
pub response: CognitoEventUserPoolsPreSignupResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreAuthentication {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsPreAuthenticationRequest,
pub response: CognitoEventUserPoolsPreAuthenticationResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPostConfirmation {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsPostConfirmationRequest,
pub response: CognitoEventUserPoolsPostConfirmationResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreTokenGen {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsPreTokenGenRequest,
pub response: CognitoEventUserPoolsPreTokenGenResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPostAuthentication {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsPostAuthenticationRequest,
pub response: CognitoEventUserPoolsPostAuthenticationResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsMigrateUser {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
#[serde(rename = "request")]
pub cognito_event_user_pools_migrate_user_request: CognitoEventUserPoolsMigrateUserRequest,
#[serde(rename = "response")]
pub cognito_event_user_pools_migrate_user_response: CognitoEventUserPoolsMigrateUserResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCallerContext {
#[serde(default)]
#[serde(rename = "awsSdkVersion")]
pub awssdk_version: Option<String>,
#[serde(default)]
pub client_id: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsHeader {
#[serde(default)]
pub version: Option<String>,
#[serde(default)]
pub trigger_source: Option<String>,
#[serde(default)]
pub region: Option<String>,
#[serde(default)]
pub user_pool_id: Option<String>,
pub caller_context: CognitoEventUserPoolsCallerContext,
#[serde(default)]
pub user_name: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreSignupRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub validation_data: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreSignupResponse {
pub auto_confirm_user: bool,
pub auto_verify_email: bool,
pub auto_verify_phone: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreAuthenticationRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub validation_data: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct CognitoEventUserPoolsPreAuthenticationResponse {}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPostConfirmationRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct CognitoEventUserPoolsPostConfirmationResponse {}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreTokenGenRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
pub group_configuration: GroupConfiguration,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPreTokenGenResponse {
pub claims_override_details: Option<ClaimsOverrideDetails>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsPostAuthenticationRequest {
pub new_device_used: bool,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct CognitoEventUserPoolsPostAuthenticationResponse {}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsMigrateUserRequest {
#[serde(default)]
pub password: Option<String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub validation_data: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsMigrateUserResponse {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(default)]
pub final_user_status: Option<String>,
#[serde(default)]
pub message_action: Option<String>,
#[serde(default)]
pub desired_delivery_mediums: Option<Vec<String>>,
#[serde(default, deserialize_with = "deserialize_nullish_boolean")]
pub force_alias_creation: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ClaimsOverrideDetails {
pub group_override_details: GroupConfiguration,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub claims_to_add_or_override: HashMap<String, String>,
pub claims_to_suppress: Vec<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupConfiguration {
pub groups_to_override: Vec<String>,
pub iam_roles_to_override: Vec<String>,
pub preferred_role: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsChallengeResult {
#[serde(default)]
pub challenge_name: Option<String>,
pub challenge_result: bool,
#[serde(default)]
pub challenge_metadata: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsDefineAuthChallengeRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
pub session: Vec<Option<CognitoEventUserPoolsChallengeResult>>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
#[serde(default)]
pub user_not_found: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsDefineAuthChallengeResponse {
#[serde(default)]
pub challenge_name: Option<String>,
#[serde(default, deserialize_with = "deserialize_nullish_boolean")]
pub issue_tokens: bool,
#[serde(default, deserialize_with = "deserialize_nullish_boolean")]
pub fail_authentication: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsDefineAuthChallenge {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsDefineAuthChallengeRequest,
pub response: CognitoEventUserPoolsDefineAuthChallengeResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCreateAuthChallengeRequest {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(default)]
pub challenge_name: Option<String>,
pub session: Vec<Option<CognitoEventUserPoolsChallengeResult>>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCreateAuthChallengeResponse {
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub public_challenge_parameters: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub private_challenge_parameters: HashMap<String, String>,
#[serde(default)]
pub challenge_metadata: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCreateAuthChallenge {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsCreateAuthChallengeRequest,
pub response: CognitoEventUserPoolsCreateAuthChallengeResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsVerifyAuthChallengeRequest<T1 = Value>
where
T1: DeserializeOwned,
T1: Serialize,
{
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub user_attributes: HashMap<String, String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub private_challenge_parameters: HashMap<String, String>,
#[serde(bound = "")]
pub challenge_answer: Option<T1>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsVerifyAuthChallengeResponse {
#[serde(default)]
pub answer_correct: bool,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsVerifyAuthChallenge {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsVerifyAuthChallengeRequest,
pub response: CognitoEventUserPoolsVerifyAuthChallengeResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCustomMessage {
#[serde(rename = "CognitoEventUserPoolsHeader")]
#[serde(flatten)]
pub cognito_event_user_pools_header: CognitoEventUserPoolsHeader,
pub request: CognitoEventUserPoolsCustomMessageRequest,
pub response: CognitoEventUserPoolsCustomMessageResponse,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCustomMessageRequest<T1 = Value>
where
T1: DeserializeOwned,
T1: Serialize,
{
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
#[serde(bound = "")]
pub user_attributes: HashMap<String, T1>,
#[serde(default)]
pub code_parameter: Option<String>,
#[serde(default)]
pub username_parameter: Option<String>,
#[serde(deserialize_with = "deserialize_lambda_map")]
#[serde(default)]
pub client_metadata: HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CognitoEventUserPoolsCustomMessageResponse {
#[serde(default)]
pub sms_message: Option<String>,
#[serde(default)]
pub email_message: Option<String>,
#[serde(default)]
pub email_subject: Option<String>,
}
#[cfg(test)]
mod test {
use super::*;
use serde_json;
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event() {
let data = include_bytes!("../../fixtures/example-cognito-event.json");
let parsed: CognitoEvent = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEvent = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_create_auth_challenge() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-create-auth-challenge.json");
let parsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_custommessage() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-custommessage.json");
let parsed: CognitoEventUserPoolsCustomMessage = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsCustomMessage = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_define_auth_challenge() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-define-auth-challenge.json");
let parsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_define_auth_challenge_optional_response_fields() {
let data = include_bytes!(
"../../fixtures/example-cognito-event-userpools-define-auth-challenge-optional-response-fields.json"
);
let parsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(data).unwrap();
assert!(!parsed.response.fail_authentication);
assert!(!parsed.response.issue_tokens);
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_migrateuser() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-migrateuser.json");
let parsed: CognitoEventUserPoolsMigrateUser = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsMigrateUser = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_postauthentication() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-postauthentication.json");
let parsed: CognitoEventUserPoolsPostAuthentication = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPostAuthentication = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_postconfirmation() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-postconfirmation.json");
let parsed: CognitoEventUserPoolsPostConfirmation = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPostConfirmation = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_preauthentication() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-preauthentication.json");
let parsed: CognitoEventUserPoolsPreAuthentication = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPreAuthentication = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_presignup() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-presignup.json");
let parsed: CognitoEventUserPoolsPreSignup = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPreSignup = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_pretokengen_incoming() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-pretokengen-incoming.json");
let parsed: CognitoEventUserPoolsPreTokenGen = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPreTokenGen = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_pretokengen() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-pretokengen.json");
let parsed: CognitoEventUserPoolsPreTokenGen = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsPreTokenGen = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_verify_auth_challenge() {
let data = include_bytes!("../../fixtures/example-cognito-event-userpools-verify-auth-challenge.json");
let parsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(data).unwrap();
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
#[test]
#[cfg(feature = "cognito")]
fn example_cognito_event_userpools_verify_auth_challenge_optional_answer_correct() {
let data = include_bytes!(
"../../fixtures/example-cognito-event-userpools-verify-auth-challenge-optional-answer-correct.json"
);
let parsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(data).unwrap();
assert!(!parsed.response.answer_correct);
let output: String = serde_json::to_string(&parsed).unwrap();
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
assert_eq!(parsed, reparsed);
}
}