Skip to content

Commit 8e1b8a1

Browse files
committed
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 awslabs#718
1 parent 3e195f6 commit 8e1b8a1

7 files changed

+159
-3
lines changed

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

Lines changed: 45 additions & 0 deletions
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,19 @@ 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 = include_bytes!("../../fixtures/example-cognito-event-userpools-create-auth-challenge-user-not-found.json");
493+
let parsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(data).unwrap();
494+
495+
assert!(parsed.request.user_not_found);
496+
497+
let output: String = serde_json::to_string(&parsed).unwrap();
498+
let reparsed: CognitoEventUserPoolsCreateAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
499+
assert_eq!(parsed, reparsed);
500+
}
501+
485502
#[test]
486503
#[cfg(feature = "cognito")]
487504
fn example_cognito_event_userpools_custommessage() {
@@ -518,6 +535,21 @@ mod test {
518535
assert_eq!(parsed, reparsed);
519536
}
520537

538+
#[test]
539+
#[cfg(feature = "cognito")]
540+
fn example_cognito_event_userpools_define_auth_challenge_user_not_found() {
541+
let data = include_bytes!(
542+
"../../fixtures/example-cognito-event-userpools-define-auth-challenge-user-not-found.json"
543+
);
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,17 @@ 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 = include_bytes!("../../fixtures/example-cognito-event-userpools-verify-auth-challenge-user-not-found.json");
652+
let parsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(data).unwrap();
653+
654+
assert!(parsed.request.user_not_found);
655+
656+
let output: String = serde_json::to_string(&parsed).unwrap();
657+
let reparsed: CognitoEventUserPoolsVerifyAuthChallenge = serde_json::from_slice(output.as_bytes()).unwrap();
658+
assert_eq!(parsed, reparsed);
659+
}
615660
}
Lines changed: 41 additions & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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": {
Lines changed: 36 additions & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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
}
Lines changed: 31 additions & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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)