Add basic implement for cognito-idp create_resource_server (#3153)
* Add basic implement for cognito-idp create_resource_server * lint
This commit is contained in:
parent
ba99c61477
commit
fdeee07762
5 changed files with 97 additions and 2 deletions
|
|
@ -2,6 +2,7 @@ from __future__ import unicode_literals
|
|||
|
||||
import json
|
||||
from werkzeug.exceptions import BadRequest
|
||||
from moto.core.exceptions import JsonRESTError
|
||||
|
||||
|
||||
class ResourceNotFoundError(BadRequest):
|
||||
|
|
@ -42,3 +43,11 @@ class NotAuthorizedError(BadRequest):
|
|||
self.description = json.dumps(
|
||||
{"message": message, "__type": "NotAuthorizedException"}
|
||||
)
|
||||
|
||||
|
||||
class InvalidParameterException(JsonRESTError):
|
||||
def __init__(self, msg=None):
|
||||
self.code = 400
|
||||
super(InvalidParameterException, self).__init__(
|
||||
"InvalidParameterException", msg or "A parameter is specified incorrectly."
|
||||
)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ from .exceptions import (
|
|||
ResourceNotFoundError,
|
||||
UserNotFoundError,
|
||||
UsernameExistsException,
|
||||
InvalidParameterException,
|
||||
)
|
||||
|
||||
UserStatus = {
|
||||
|
|
@ -83,6 +84,7 @@ class CognitoIdpUserPool(BaseModel):
|
|||
self.identity_providers = OrderedDict()
|
||||
self.groups = OrderedDict()
|
||||
self.users = OrderedDict()
|
||||
self.resource_servers = OrderedDict()
|
||||
self.refresh_tokens = {}
|
||||
self.access_tokens = {}
|
||||
self.id_tokens = {}
|
||||
|
|
@ -337,6 +339,27 @@ class CognitoIdpUser(BaseModel):
|
|||
self.attributes = expand_attrs(flat_attributes)
|
||||
|
||||
|
||||
class CognitoResourceServer(BaseModel):
|
||||
def __init__(self, user_pool_id, identifier, name, scopes):
|
||||
|
||||
self.user_pool_id = user_pool_id
|
||||
self.identifier = identifier
|
||||
self.name = name
|
||||
self.scopes = scopes
|
||||
|
||||
def to_json(self):
|
||||
res = {
|
||||
"UserPoolId": self.user_pool_id,
|
||||
"Identifier": self.identifier,
|
||||
"Name": self.name,
|
||||
}
|
||||
|
||||
if len(self.scopes) != 0:
|
||||
res.update({"Scopes": self.scopes})
|
||||
|
||||
return res
|
||||
|
||||
|
||||
class CognitoIdpBackend(BaseBackend):
|
||||
def __init__(self, region):
|
||||
super(CognitoIdpBackend, self).__init__()
|
||||
|
|
@ -768,6 +791,20 @@ class CognitoIdpBackend(BaseBackend):
|
|||
user = user_pool.users[username]
|
||||
user.update_attributes(attributes)
|
||||
|
||||
def create_resource_server(self, user_pool_id, identifier, name, scopes):
|
||||
user_pool = self.user_pools.get(user_pool_id)
|
||||
if not user_pool:
|
||||
raise ResourceNotFoundError(user_pool_id)
|
||||
|
||||
if identifier in user_pool.resource_servers:
|
||||
raise InvalidParameterException(
|
||||
"%s already exists in user pool %s." % (identifier, user_pool_id)
|
||||
)
|
||||
|
||||
resource_server = CognitoResourceServer(user_pool_id, identifier, name, scopes)
|
||||
user_pool.resource_servers[identifier] = resource_server
|
||||
return resource_server
|
||||
|
||||
|
||||
cognitoidp_backends = {}
|
||||
for region in Session().get_available_regions("cognito-idp"):
|
||||
|
|
|
|||
|
|
@ -379,6 +379,17 @@ class CognitoIdpResponse(BaseResponse):
|
|||
)
|
||||
return ""
|
||||
|
||||
# Resource Server
|
||||
def create_resource_server(self):
|
||||
user_pool_id = self._get_param("UserPoolId")
|
||||
identifier = self._get_param("Identifier")
|
||||
name = self._get_param("Name")
|
||||
scopes = self._get_param("Scopes")
|
||||
resource_server = cognitoidp_backends[self.region].create_resource_server(
|
||||
user_pool_id, identifier, name, scopes
|
||||
)
|
||||
return json.dumps({"ResourceServer": resource_server.to_json()})
|
||||
|
||||
|
||||
class CognitoIdpJsonWebKeyResponse(BaseResponse):
|
||||
def __init__(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue