Skip to content

Commit b87214d

Browse files
mawallaceMichael Wallace
andauthored
Allow null answerCorrect when deserializing (#826)
CognitoEventUserPoolsVerifyAuthChallengeResponse. Co-authored-by: Michael Wallace <michael.a.wallace@icloud.com>
1 parent a4aa23e commit b87214d

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

lambda-events/src/event/cognito/mod.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ where
535535
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
536536
#[serde(rename_all = "camelCase")]
537537
pub struct CognitoEventUserPoolsVerifyAuthChallengeResponse {
538-
#[serde(default)]
538+
#[serde(default, deserialize_with = "deserialize_nullish_boolean")]
539539
pub answer_correct: bool,
540540
}
541541

@@ -826,6 +826,21 @@ mod test {
826826
assert_eq!(parsed, reparsed);
827827
}
828828

829+
#[test]
830+
#[cfg(feature = "cognito")]
831+
fn example_cognito_event_userpools_verify_auth_challenge_null_answer_correct() {
832+
let data = include_bytes!(
833+
"../../fixtures/example-cognito-event-userpools-verify-auth-challenge-null-answer-correct.json"
834+
);
835+
let parsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(data).unwrap();
836+
837+
assert!(!parsed.response.answer_correct);
838+
839+
let output: String = serde_json::to_string(&parsed).unwrap();
840+
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
841+
assert_eq!(parsed, reparsed);
842+
}
843+
829844
#[test]
830845
#[cfg(feature = "cognito")]
831846
fn example_cognito_event_userpools_verify_auth_challenge_user_not_found() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"version": "1",
3+
"region": "us-west-2",
4+
"userPoolId": "<userPoolId>",
5+
"userName": "<userName>",
6+
"callerContext": {
7+
"awsSdkVersion": "aws-sdk-unknown-unknown",
8+
"clientId": "<clientId>"
9+
},
10+
"triggerSource": "VerifyAuthChallengeResponse_Authentication",
11+
"request": {
12+
"userAttributes": {
13+
"sub": "<sub>",
14+
"cognito:user_status": "CONFIRMED",
15+
"phone_number_verified": "true",
16+
"cognito:phone_number_alias": "+12223334455",
17+
"phone_number": "+12223334455"
18+
},
19+
"privateChallengeParameters": {
20+
"secret": "11122233"
21+
},
22+
"challengeAnswer": "123xxxx",
23+
"clientMetadata": {
24+
"exampleMetadataKey": "example metadata value"
25+
},
26+
"userNotFound": false
27+
},
28+
"response": {
29+
"answerCorrect": null
30+
}
31+
}

0 commit comments

Comments
 (0)