fix #3133 Cognito Identity Provider : create_user_pool_client GenerateSecret=True doesn't work (#3135)

* fix #3133 Cognito Identity Provider : create_user_pool_client
`GenerateSecret=True` doesn't work

* add test for update_user_pool_client
This commit is contained in:
Koichi Ogura 2020-07-16 17:13:12 +09:00 committed by GitHub
commit 3e2a5e7ee8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 64 additions and 4 deletions

View file

@ -210,10 +210,11 @@ class CognitoIdpUserPoolDomain(BaseModel):
class CognitoIdpUserPoolClient(BaseModel):
def __init__(self, user_pool_id, extended_config):
def __init__(self, user_pool_id, generate_secret, extended_config):
self.user_pool_id = user_pool_id
self.id = str(uuid.uuid4())
self.secret = str(uuid.uuid4())
self.generate_secret = generate_secret or False
self.extended_config = extended_config or {}
def _base_json(self):
@ -225,6 +226,8 @@ class CognitoIdpUserPoolClient(BaseModel):
def to_json(self, extended=False):
user_pool_client_json = self._base_json()
if self.generate_secret:
user_pool_client_json.update({"ClientSecret": self.secret})
if extended:
user_pool_client_json.update(self.extended_config)
@ -402,12 +405,14 @@ class CognitoIdpBackend(BaseBackend):
return user_pool_domain
# User pool client
def create_user_pool_client(self, user_pool_id, extended_config):
def create_user_pool_client(self, user_pool_id, generate_secret, extended_config):
user_pool = self.user_pools.get(user_pool_id)
if not user_pool:
raise ResourceNotFoundError(user_pool_id)
user_pool_client = CognitoIdpUserPoolClient(user_pool_id, extended_config)
user_pool_client = CognitoIdpUserPoolClient(
user_pool_id, generate_secret, extended_config
)
user_pool.clients[user_pool_client.id] = user_pool_client
return user_pool_client

View file

@ -84,8 +84,9 @@ class CognitoIdpResponse(BaseResponse):
# User pool client
def create_user_pool_client(self):
user_pool_id = self.parameters.pop("UserPoolId")
generate_secret = self.parameters.pop("GenerateSecret", False)
user_pool_client = cognitoidp_backends[self.region].create_user_pool_client(
user_pool_id, self.parameters
user_pool_id, generate_secret, self.parameters
)
return json.dumps({"UserPoolClient": user_pool_client.to_json(extended=True)})