Cognito: update UserLastModifiedDate when changing user attributes (#7464)
This commit is contained in:
parent
565442e23d
commit
18a392bd0a
@ -869,6 +869,7 @@ class CognitoIdpUser(BaseModel):
|
|||||||
flat_attributes.update(flatten_attrs(new_attributes))
|
flat_attributes.update(flatten_attrs(new_attributes))
|
||||||
self.attribute_lookup = flat_attributes
|
self.attribute_lookup = flat_attributes
|
||||||
self.attributes = expand_attrs(flat_attributes)
|
self.attributes = expand_attrs(flat_attributes)
|
||||||
|
self.last_modified_date = utcnow()
|
||||||
|
|
||||||
def delete_attributes(self, attrs_to_delete: List[str]) -> None:
|
def delete_attributes(self, attrs_to_delete: List[str]) -> None:
|
||||||
flat_attributes = flatten_attrs(self.attributes)
|
flat_attributes = flatten_attrs(self.attributes)
|
||||||
@ -891,6 +892,7 @@ class CognitoIdpUser(BaseModel):
|
|||||||
)
|
)
|
||||||
self.attribute_lookup = flat_attributes
|
self.attribute_lookup = flat_attributes
|
||||||
self.attributes = expand_attrs(flat_attributes)
|
self.attributes = expand_attrs(flat_attributes)
|
||||||
|
self.last_modified_date = utcnow()
|
||||||
|
|
||||||
|
|
||||||
class CognitoResourceServer(BaseModel):
|
class CognitoResourceServer(BaseModel):
|
||||||
|
@ -6,6 +6,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from unittest import SkipTest, mock
|
from unittest import SkipTest, mock
|
||||||
|
|
||||||
@ -2346,6 +2347,65 @@ def test_admin_get_missing_user_with_username_attributes():
|
|||||||
assert err["Message"] == "User does not exist."
|
assert err["Message"] == "User does not exist."
|
||||||
|
|
||||||
|
|
||||||
|
@mock_aws
|
||||||
|
def test_new_user_contains_same_created_and_updated_dates():
|
||||||
|
conn = boto3.client("cognito-idp", "us-west-2")
|
||||||
|
|
||||||
|
username = "test@example.com"
|
||||||
|
user_pool_id = conn.create_user_pool(
|
||||||
|
PoolName=str(uuid.uuid4()), UsernameAttributes=["email"]
|
||||||
|
)["UserPool"]["Id"]
|
||||||
|
|
||||||
|
resp = conn.admin_create_user(UserPoolId=user_pool_id, Username=username)
|
||||||
|
new_user = resp["User"]
|
||||||
|
|
||||||
|
assert new_user["UserCreateDate"] == new_user["UserLastModifiedDate"]
|
||||||
|
|
||||||
|
|
||||||
|
@mock_aws
|
||||||
|
def test_update_user_attributes_also_changes_last_modified_date():
|
||||||
|
conn = boto3.client("cognito-idp", "us-west-2")
|
||||||
|
|
||||||
|
username = "test@example.com"
|
||||||
|
user_pool_id = conn.create_user_pool(
|
||||||
|
PoolName=str(uuid.uuid4()), UsernameAttributes=["email"]
|
||||||
|
)["UserPool"]["Id"]
|
||||||
|
conn.admin_create_user(UserPoolId=user_pool_id, Username=username)
|
||||||
|
|
||||||
|
time.sleep(1) # Wait enough to account for a different in the time format
|
||||||
|
conn.admin_update_user_attributes(
|
||||||
|
UserPoolId=user_pool_id,
|
||||||
|
Username=username,
|
||||||
|
UserAttributes=[{"Name": "phone_number", "Value": "+123456789"}],
|
||||||
|
)
|
||||||
|
|
||||||
|
user = conn.admin_get_user(UserPoolId=user_pool_id, Username=username)
|
||||||
|
assert user["UserCreateDate"] < user["UserLastModifiedDate"]
|
||||||
|
|
||||||
|
|
||||||
|
@mock_aws
|
||||||
|
def test_delete_user_attributes_also_changes_last_modified_date():
|
||||||
|
conn = boto3.client("cognito-idp", "us-west-2")
|
||||||
|
|
||||||
|
username = "test@example.com"
|
||||||
|
user_pool_id = conn.create_user_pool(
|
||||||
|
PoolName=str(uuid.uuid4()), UsernameAttributes=["email"]
|
||||||
|
)["UserPool"]["Id"]
|
||||||
|
conn.admin_create_user(
|
||||||
|
UserPoolId=user_pool_id,
|
||||||
|
Username=username,
|
||||||
|
UserAttributes=[{"Name": "phone_number", "Value": "+123456789"}],
|
||||||
|
)
|
||||||
|
|
||||||
|
time.sleep(1) # Wait enough to account for a different in the time format
|
||||||
|
conn.admin_delete_user_attributes(
|
||||||
|
UserPoolId=user_pool_id, Username=username, UserAttributeNames=["phone_number"]
|
||||||
|
)
|
||||||
|
|
||||||
|
user = conn.admin_get_user(UserPoolId=user_pool_id, Username=username)
|
||||||
|
assert user["UserCreateDate"] < user["UserLastModifiedDate"]
|
||||||
|
|
||||||
|
|
||||||
@mock_aws
|
@mock_aws
|
||||||
def test_get_user():
|
def test_get_user():
|
||||||
conn = boto3.client("cognito-idp", "us-west-2")
|
conn = boto3.client("cognito-idp", "us-west-2")
|
||||||
|
Loading…
Reference in New Issue
Block a user