Skip to content

Commit c565173

Browse files
authored
Fix: Missing userNotFound field in "create/verify auth challenge" Cognito user pool events (#719)
* Add user_not_found to Create/Verify auth challenge events - Adds `user_not_found` field to: - `CognitoEventUserPoolsCreateAuthChallengeRequest` - `CognitoEventUserPoolsVerifyAuthChallengeRequest` - Adds test cases where `user_not_found` becomes `true` for: - `CognitoEventUserPoolsDefineAuthChallengeRequest` - `CognitoEventUserPoolsCreateAuthChallengeRequest` - `CognitoEventUserPoolsVerifyAuthChallengeRequest` issue #718 * Fix coding style with cargo fmt
1 parent 3e195f6 commit c565173

7 files changed

+160
-3
lines changed

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

+46
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,8 @@ pub struct CognitoEventUserPoolsCreateAuthChallengeRequest {
343343
#[serde(deserialize_with = "deserialize_lambda_map")]
344344
#[serde(default)]
345345
pub client_metadata: HashMap<String, String>,
346+
#[serde(default)]
347+
pub user_not_found: bool,
346348
}
347349

348350
/// `CognitoEventUserPoolsCreateAuthChallengeResponse` defines create auth challenge response parameters
@@ -389,6 +391,8 @@ where
389391
#[serde(deserialize_with = "deserialize_lambda_map")]
390392
#[serde(default)]
391393
pub client_metadata: HashMap<String, String>,
394+
#[serde(default)]
395+
pub user_not_found: bool,
392396
}
393397

394398
/// `CognitoEventUserPoolsVerifyAuthChallengeResponse` defines verify auth challenge response parameters
@@ -482,6 +486,20 @@ mod test {
482486
assert_eq!(parsed, reparsed);
483487
}
484488

489+
#[test]
490+
#[cfg(feature = "cognito")]
491+
fn example_cognito_event_userpools_create_auth_challenge_user_not_found() {
492+
let data =
493+
include_bytes!("../../fixtures/example-cognito-event-userpools-create-auth-challenge-user-not-found.json");
494+
let parsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(data).unwrap();
495+
496+
assert!(parsed.request.user_not_found);
497+
498+
let output: String = serde_json::to_string(&parsed).unwrap();
499+
let reparsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
500+
assert_eq!(parsed, reparsed);
501+
}
502+
485503
#[test]
486504
#[cfg(feature = "cognito")]
487505
fn example_cognito_event_userpools_custommessage() {
@@ -518,6 +536,20 @@ mod test {
518536
assert_eq!(parsed, reparsed);
519537
}
520538

539+
#[test]
540+
#[cfg(feature = "cognito")]
541+
fn example_cognito_event_userpools_define_auth_challenge_user_not_found() {
542+
let data =
543+
include_bytes!("../../fixtures/example-cognito-event-userpools-define-auth-challenge-user-not-found.json");
544+
let parsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(data).unwrap();
545+
546+
assert!(parsed.request.user_not_found);
547+
548+
let output: String = serde_json::to_string(&parsed).unwrap();
549+
let reparsed: CognitoEventUserPoolsDefineAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
550+
assert_eq!(parsed, reparsed);
551+
}
552+
521553
#[test]
522554
#[cfg(feature = "cognito")]
523555
fn example_cognito_event_userpools_migrateuser() {
@@ -612,4 +644,18 @@ mod test {
612644
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
613645
assert_eq!(parsed, reparsed);
614646
}
647+
648+
#[test]
649+
#[cfg(feature = "cognito")]
650+
fn example_cognito_event_userpools_verify_auth_challenge_user_not_found() {
651+
let data =
652+
include_bytes!("../../fixtures/example-cognito-event-userpools-verify-auth-challenge-user-not-found.json");
653+
let parsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(data).unwrap();
654+
655+
assert!(parsed.request.user_not_found);
656+
657+
let output: String = serde_json::to_string(&parsed).unwrap();
658+
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
659+
assert_eq!(parsed, reparsed);
660+
}
615661
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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": "CreateAuthChallenge_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+
"challengeName": "CUSTOM_CHALLENGE",
20+
"session": [
21+
{
22+
"challengeName": "PASSWORD_VERIFIER",
23+
"challengeResult": true,
24+
"challengeMetadata": "metadata"
25+
}
26+
],
27+
"clientMetadata": {
28+
"exampleMetadataKey": "example metadata value"
29+
},
30+
"userNotFound": true
31+
},
32+
"response": {
33+
"publicChallengeParameters": {
34+
"a": "b"
35+
},
36+
"privateChallengeParameters": {
37+
"c": "d"
38+
},
39+
"challengeMetadata": "challengeMetadata"
40+
}
41+
}

lambda-events/src/fixtures/example-cognito-event-userpools-create-auth-challenge.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
],
2727
"clientMetadata": {
2828
"exampleMetadataKey": "example metadata value"
29-
}
29+
},
30+
"userNotFound": false
3031
},
3132
"response": {
3233
"publicChallengeParameters": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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": "DefineAuthChallenge_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+
"session": [
20+
{
21+
"challengeName": "PASSWORD_VERIFIER",
22+
"challengeResult": true,
23+
"challengeMetadata": "metadata"
24+
}
25+
],
26+
"clientMetadata": {
27+
"exampleMetadataKey": "example metadata value"
28+
},
29+
"userNotFound": true
30+
},
31+
"response": {
32+
"challengeName": "challengeName",
33+
"issueTokens": true,
34+
"failAuthentication": true
35+
}
36+
}

lambda-events/src/fixtures/example-cognito-event-userpools-verify-auth-challenge-optional-answer-correct.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"challengeAnswer": "123xxxx",
2323
"clientMetadata": {
2424
"exampleMetadataKey": "example metadata value"
25-
}
25+
},
26+
"userNotFound": false
2627
},
2728
"response": {
2829
}
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": true
27+
},
28+
"response": {
29+
"answerCorrect": true
30+
}
31+
}

lambda-events/src/fixtures/example-cognito-event-userpools-verify-auth-challenge.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"challengeAnswer": "123xxxx",
2323
"clientMetadata": {
2424
"exampleMetadataKey": "example metadata value"
25-
}
25+
},
26+
"userNotFound": false
2627
},
2728
"response": {
2829
"answerCorrect": true

0 commit comments

Comments
 (0)