moto/moto/identitystore/responses.py
2023-06-21 09:49:49 +00:00

172 lines
6.0 KiB
Python

"""Handles incoming identitystore requests, invokes methods, returns responses."""
import json
from typing import NamedTuple, Any, Dict, Optional
from moto.core.responses import BaseResponse
from .models import identitystore_backends, IdentityStoreBackend
class IdentityStoreResponse(BaseResponse):
"""Handler for IdentityStore requests and responses."""
def __init__(self) -> None:
super().__init__(service_name="identitystore")
@property
def identitystore_backend(self) -> IdentityStoreBackend:
"""Return backend instance specific for this region."""
return identitystore_backends[self.current_account][self.region]
def create_group(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
display_name = self._get_param("DisplayName")
description = self._get_param("Description")
group_id, identity_store_id = self.identitystore_backend.create_group(
identity_store_id=identity_store_id,
display_name=display_name,
description=description,
)
return json.dumps(dict(GroupId=group_id, IdentityStoreId=identity_store_id))
def create_group_membership(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
group_id = self._get_param("GroupId")
member_id = self._get_param("MemberId")
(
membership_id,
identity_store_id,
) = self.identitystore_backend.create_group_membership(
identity_store_id=identity_store_id,
group_id=group_id,
member_id=member_id,
)
return json.dumps(
dict(MembershipId=membership_id, IdentityStoreId=identity_store_id)
)
def create_user(self) -> str:
user_id, identity_store_id = self.identitystore_backend.create_user(
self._get_param("IdentityStoreId"),
self._get_param("UserName"),
self._get_param("Name"),
self._get_param("DisplayName"),
self._get_param("NickName"),
self._get_param("ProfileUrl"),
self._get_param("Emails"),
self._get_param("Addresses"),
self._get_param("PhoneNumbers"),
self._get_param("UserType"),
self._get_param("Title"),
self._get_param("PreferredLanguage"),
self._get_param("Locale"),
self._get_param("Timezone"),
)
return json.dumps(dict(UserId=user_id, IdentityStoreId=identity_store_id))
def get_group_id(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
alternate_identifier = self._get_param("AlternateIdentifier")
group_id, identity_store_id = self.identitystore_backend.get_group_id(
identity_store_id=identity_store_id,
alternate_identifier=alternate_identifier,
)
return json.dumps(dict(GroupId=group_id, IdentityStoreId=identity_store_id))
def describe_user(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
user_id = self._get_param("UserId")
(
user_id,
identity_store_id,
user_name,
name,
display_name,
nick_name,
profile_url,
emails,
addresses,
phone_numbers,
user_type,
title,
preferred_language,
locale,
timezone,
) = self.identitystore_backend.describe_user(
identity_store_id=identity_store_id,
user_id=user_id,
)
return json.dumps(
dict(
UserName=user_name,
UserId=user_id,
ExternalIds=None,
Name=self.named_tuple_to_dict(name),
DisplayName=display_name,
NickName=nick_name,
ProfileUrl=profile_url,
Emails=emails,
Addresses=addresses,
PhoneNumbers=phone_numbers,
UserType=user_type,
Title=title,
PreferredLanguage=preferred_language,
Locale=locale,
Timezone=timezone,
IdentityStoreId=identity_store_id,
)
)
def list_group_memberships(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
group_id = self._get_param("GroupId")
max_results = self._get_param("MaxResults")
next_token = self._get_param("NextToken")
(
group_memberships,
next_token,
) = self.identitystore_backend.list_group_memberships(
identity_store_id=identity_store_id,
group_id=group_id,
max_results=max_results,
next_token=next_token,
)
return json.dumps(
dict(GroupMemberships=group_memberships, NextToken=next_token)
)
def delete_group(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
group_id = self._get_param("GroupId")
self.identitystore_backend.delete_group(
identity_store_id=identity_store_id,
group_id=group_id,
)
return json.dumps(dict())
def delete_group_membership(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
membership_id = self._get_param("MembershipId")
self.identitystore_backend.delete_group_membership(
identity_store_id=identity_store_id,
membership_id=membership_id,
)
return json.dumps(dict())
def delete_user(self) -> str:
identity_store_id = self._get_param("IdentityStoreId")
user_id = self._get_param("UserId")
self.identitystore_backend.delete_user(
identity_store_id=identity_store_id,
user_id=user_id,
)
return json.dumps(dict())
def named_tuple_to_dict(
self, value: Optional[NamedTuple]
) -> Optional[Dict[str, Any]]:
if value:
return value._asdict()
return None