moto/tests/test_quicksight/test_quicksight_users.py
2022-08-13 09:49:43 +00:00

302 lines
9.1 KiB
Python

"""Unit tests for quicksight-supported APIs."""
import boto3
import pytest
import sure # noqa # pylint: disable=unused-import
from botocore.exceptions import ClientError
from moto import mock_quicksight
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
# See our Development Tips on writing tests for hints on how to write good tests:
# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
@mock_quicksight
def test_register_user__quicksight():
client = boto3.client("quicksight", region_name="us-east-2")
resp = client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName="tfacctestm9hpsr970z",
UserRole="READER",
)
resp.should.have.key("UserInvitationUrl")
resp.should.have.key("User")
resp["User"].should.have.key("Arn").equals(
f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:user/default/tfacctestm9hpsr970z"
)
resp["User"].should.have.key("UserName").equals("tfacctestm9hpsr970z")
resp["User"].should.have.key("Email").equals("fakeemail@example.com")
resp["User"].should.have.key("Role").equals("READER")
resp["User"].should.have.key("IdentityType").equals("QUICKSIGHT")
resp["User"].should.have.key("Active").equals(False)
@mock_quicksight
def test_describe_user__quicksight():
client = boto3.client("quicksight", region_name="us-east-1")
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName="tfacctestm9hpsr970z",
UserRole="READER",
)
resp = client.describe_user(
UserName="tfacctestm9hpsr970z", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
resp.should.have.key("User")
resp["User"].should.have.key("Arn").equals(
f"arn:aws:quicksight:us-east-1:{ACCOUNT_ID}:user/default/tfacctestm9hpsr970z"
)
resp["User"].should.have.key("UserName").equals("tfacctestm9hpsr970z")
resp["User"].should.have.key("Email").equals("fakeemail@example.com")
resp["User"].should.have.key("Role").equals("READER")
resp["User"].should.have.key("IdentityType").equals("QUICKSIGHT")
resp["User"].should.have.key("Active").equals(False)
@mock_quicksight
def test_delete_user__quicksight():
client = boto3.client("quicksight", region_name="us-east-2")
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName="tfacctestm9hpsr970z",
UserRole="READER",
)
client.delete_user(
UserName="tfacctestm9hpsr970z", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
with pytest.raises(ClientError) as exc:
client.describe_user(
UserName="tfacctestm9hpsr970z", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
err = exc.value.response["Error"]
err["Code"].should.equal("ResourceNotFoundException")
@mock_quicksight
def test_list_users__initial():
client = boto3.client("quicksight", region_name="us-east-2")
resp = client.list_users(AwsAccountId=ACCOUNT_ID, Namespace="default")
resp.should.have.key("UserList").equals([])
resp.should.have.key("Status").equals(200)
@mock_quicksight
def test_list_users():
client = boto3.client("quicksight", region_name="us-east-2")
for i in range(4):
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email=f"fakeemail{i}@example.com",
IdentityType="QUICKSIGHT",
UserName=f"fake{i}",
UserRole="READER",
)
resp = client.list_users(AwsAccountId=ACCOUNT_ID, Namespace="default")
resp.should.have.key("UserList").length_of(4)
resp.should.have.key("Status").equals(200)
resp["UserList"].should.contain(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:user/default/fake0",
"UserName": "fake0",
"Email": "fakeemail0@example.com",
"Role": "READER",
"IdentityType": "QUICKSIGHT",
"Active": False,
}
)
resp["UserList"].should.contain(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:user/default/fake3",
"UserName": "fake3",
"Email": "fakeemail3@example.com",
"Role": "READER",
"IdentityType": "QUICKSIGHT",
"Active": False,
}
)
@mock_quicksight
def test_create_group_membership():
client = boto3.client("quicksight", region_name="us-east-2")
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName="user.1",
UserRole="READER",
)
client.create_group(
AwsAccountId=ACCOUNT_ID, Namespace="default", GroupName="group1"
)
resp = client.create_group_membership(
MemberName="user.1",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
resp.should.have.key("GroupMember").equals(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:group/default/group1/user.1",
"MemberName": "user.1",
}
)
resp.should.have.key("Status").equals(200)
@mock_quicksight
def test_describe_group_membership():
client = boto3.client("quicksight", region_name="us-east-2")
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName="user1",
UserRole="READER",
)
client.create_group(
AwsAccountId=ACCOUNT_ID, Namespace="default", GroupName="group1"
)
client.create_group_membership(
MemberName="user1",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
resp = client.describe_group_membership(
MemberName="user1",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
resp.should.have.key("GroupMember").equals(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:group/default/group1/user1",
"MemberName": "user1",
}
)
resp.should.have.key("Status").equals(200)
@mock_quicksight
def test_list_group_memberships():
client = boto3.client("quicksight", region_name="us-east-2")
for i in range(3):
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName=f"user{i}",
UserRole="READER",
)
client.create_group(
AwsAccountId=ACCOUNT_ID, Namespace="default", GroupName="group1"
)
client.create_group(
AwsAccountId=ACCOUNT_ID, Namespace="default", GroupName="group2"
)
client.create_group_membership(
MemberName="user0",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
client.create_group_membership(
MemberName="user1",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
client.create_group_membership(
MemberName="user2",
GroupName="group2",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
resp = client.list_group_memberships(
GroupName="group1", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
resp.should.have.key("GroupMemberList").length_of(2)
resp.should.have.key("Status").equals(200)
resp["GroupMemberList"].should.contain(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:group/default/group1/user0",
"MemberName": "user0",
}
)
resp["GroupMemberList"].should.contain(
{
"Arn": f"arn:aws:quicksight:us-east-2:{ACCOUNT_ID}:group/default/group1/user1",
"MemberName": "user1",
}
)
@mock_quicksight
def test_list_group_memberships__after_deleting_user():
client = boto3.client("quicksight", region_name="us-east-2")
client.create_group(
AwsAccountId=ACCOUNT_ID, Namespace="default", GroupName="group1"
)
for i in range(3):
client.register_user(
AwsAccountId=ACCOUNT_ID,
Namespace="default",
Email="fakeemail@example.com",
IdentityType="QUICKSIGHT",
UserName=f"user{i}",
UserRole="READER",
)
client.create_group_membership(
MemberName=f"user{i}",
GroupName="group1",
AwsAccountId=ACCOUNT_ID,
Namespace="default",
)
resp = client.list_group_memberships(
GroupName="group1", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
resp.should.have.key("GroupMemberList").length_of(3)
client.delete_user(UserName="user1", AwsAccountId=ACCOUNT_ID, Namespace="default")
resp = client.list_group_memberships(
GroupName="group1", AwsAccountId=ACCOUNT_ID, Namespace="default"
)
resp.should.have.key("GroupMemberList").length_of(2)