Skip to content

Commit fa37fa7

Browse files
committed
Fix account and role sort tests and add new tests
The existing tests were written using the old unittest framework. This change updates them to use the newer pytest/fixture framework. It also adds tests for sorting the accounts by account ID and email address.
1 parent 68943d0 commit fa37fa7

1 file changed

Lines changed: 235 additions & 39 deletions

File tree

tests/unit/customizations/configure/test_sso.py

Lines changed: 235 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1527,60 +1527,256 @@ def test_single_account_single_role_device_code_fallback(
15271527
],
15281528
)
15291529

1530-
def test_account_list_sorted_by_name(self):
1530+
def test_account_list_sorted_by_name(
1531+
self,
1532+
sso_cmd,
1533+
ptk_stubber,
1534+
stub_sso_list_accounts,
1535+
stub_sso_list_roles,
1536+
args,
1537+
parsed_globals,
1538+
start_url_prompt,
1539+
sso_region_prompt,
1540+
region_prompt,
1541+
output_prompt,
1542+
profile_prompt,
1543+
account_id,
1544+
role_name,
1545+
):
15311546
selected_account = {
1532-
'accountId': self.account_id,
1533-
'emailAddress': 'account@example.com',
1547+
'accountId': account_id,
1548+
'accountName': 'Charlie',
1549+
'emailAddress': 'charlie@example.com',
15341550
}
15351551
first_account = {
15361552
'accountId': '1111111111',
1537-
'accountName': 'alpha',
1538-
'emailAddress': 'alpha@example.com'
1553+
'accountName': 'Alpha',
1554+
'emailAddress': 'alpha@example.com',
15391555
}
15401556
second_account = {
15411557
'accountId': '2222222222',
15421558
'accountName': 'Bravo',
1543-
'emailAddress': 'Bravo@example.com'
1559+
'emailAddress': 'bravo@example.com',
1560+
}
1561+
third_account = {
1562+
'accountId': '3333333333',
1563+
'accountName': 'Delta',
1564+
'emailAddress': 'delta@example.com',
1565+
}
1566+
accounts = [
1567+
selected_account,
1568+
second_account,
1569+
third_account,
1570+
first_account,
1571+
]
1572+
expected_accounts = [
1573+
first_account,
1574+
second_account,
1575+
selected_account,
1576+
third_account,
1577+
]
1578+
account_select = SelectMenu(
1579+
answer=selected_account,
1580+
expected_choices=expected_accounts,
1581+
)
1582+
ptk_stubber.user_inputs = UserInputs(
1583+
session_prompt=RecommendedSessionPrompt(answer=""),
1584+
start_url_prompt=start_url_prompt,
1585+
sso_region_prompt=sso_region_prompt,
1586+
account_id_select=account_select,
1587+
role_name_select=None,
1588+
region_prompt=region_prompt,
1589+
output_prompt=output_prompt,
1590+
profile_prompt=profile_prompt,
1591+
)
1592+
stub_sso_list_accounts(accounts)
1593+
stub_sso_list_roles(
1594+
[role_name],
1595+
expected_account_id=account_id,
1596+
)
1597+
assert sso_cmd(args, parsed_globals) == 0
1598+
1599+
def test_account_list_sorted_by_email(
1600+
self,
1601+
sso_cmd,
1602+
ptk_stubber,
1603+
stub_sso_list_accounts,
1604+
stub_sso_list_roles,
1605+
args,
1606+
parsed_globals,
1607+
start_url_prompt,
1608+
sso_region_prompt,
1609+
region_prompt,
1610+
output_prompt,
1611+
profile_prompt,
1612+
account_id,
1613+
role_name,
1614+
):
1615+
selected_account = {
1616+
'accountId': account_id,
1617+
'emailAddress': 'charlie@example.com',
1618+
}
1619+
first_account = {
1620+
'accountId': '1111111111',
1621+
'emailAddress': 'alpha@example.com',
1622+
}
1623+
second_account = {
1624+
'accountId': '2222222222',
1625+
'emailAddress': 'bravo@example.com',
1626+
}
1627+
third_account = {
1628+
'accountId': '3333333333',
1629+
'emailAddress': 'delta@example.com',
1630+
}
1631+
accounts = [
1632+
selected_account,
1633+
third_account,
1634+
first_account,
1635+
second_account,
1636+
]
1637+
expected_accounts = [
1638+
first_account,
1639+
second_account,
1640+
selected_account,
1641+
third_account,
1642+
]
1643+
account_select = SelectMenu(
1644+
answer=selected_account,
1645+
expected_choices=expected_accounts,
1646+
)
1647+
ptk_stubber.user_inputs = UserInputs(
1648+
session_prompt=RecommendedSessionPrompt(answer=""),
1649+
start_url_prompt=start_url_prompt,
1650+
sso_region_prompt=sso_region_prompt,
1651+
account_id_select=account_select,
1652+
role_name_select=None,
1653+
region_prompt=region_prompt,
1654+
output_prompt=output_prompt,
1655+
profile_prompt=profile_prompt,
1656+
)
1657+
stub_sso_list_accounts(accounts)
1658+
stub_sso_list_roles(
1659+
[role_name],
1660+
expected_account_id=account_id,
1661+
)
1662+
assert sso_cmd(args, parsed_globals) == 0
1663+
1664+
def test_account_list_sorted_by_account_id(
1665+
self,
1666+
sso_cmd,
1667+
ptk_stubber,
1668+
stub_sso_list_accounts,
1669+
stub_sso_list_roles,
1670+
args,
1671+
parsed_globals,
1672+
start_url_prompt,
1673+
sso_region_prompt,
1674+
region_prompt,
1675+
output_prompt,
1676+
profile_prompt,
1677+
account_id,
1678+
role_name,
1679+
):
1680+
selected_account = {
1681+
'accountId': account_id,
1682+
}
1683+
first_account = {
1684+
'accountId': '1111111111',
1685+
}
1686+
second_account = {
1687+
'accountId': '2222222222',
15441688
}
15451689
third_account = {
15461690
'accountId': '3333333333',
1547-
'emailAddress': 'charlie@example.com'
15481691
}
1549-
accounts = [selected_account, second_account,
1550-
third_account, first_account]
1551-
expected_accounts = [first_account,
1552-
second_account, selected_account, third_account]
1553-
self._add_prompt_responses()
1554-
self._add_list_accounts_response(accounts)
1555-
self._add_list_account_roles_response([{'roleName': self.role_name}])
1556-
self.selector.side_effect = [selected_account]
1557-
with self.sso_stub:
1558-
self.configure_sso(args=[], parsed_globals=self.global_args)
1559-
printed_accounts = self.selector.call_args[0][0]
1560-
self.assertEqual(printed_accounts, expected_accounts)
1561-
1562-
def test_role_list_sorted_by_name(self):
1692+
accounts = [
1693+
third_account,
1694+
selected_account,
1695+
first_account,
1696+
second_account,
1697+
]
1698+
expected_accounts = [
1699+
selected_account,
1700+
first_account,
1701+
second_account,
1702+
third_account,
1703+
]
1704+
account_select = SelectMenu(
1705+
answer=selected_account,
1706+
expected_choices=expected_accounts,
1707+
)
1708+
ptk_stubber.user_inputs = UserInputs(
1709+
session_prompt=RecommendedSessionPrompt(answer=""),
1710+
start_url_prompt=start_url_prompt,
1711+
sso_region_prompt=sso_region_prompt,
1712+
account_id_select=account_select,
1713+
role_name_select=None,
1714+
region_prompt=region_prompt,
1715+
output_prompt=output_prompt,
1716+
profile_prompt=profile_prompt,
1717+
)
1718+
stub_sso_list_accounts(accounts)
1719+
stub_sso_list_roles(
1720+
[role_name],
1721+
expected_account_id=account_id,
1722+
)
1723+
assert sso_cmd(args, parsed_globals) == 0
1724+
1725+
def test_role_list_sorted_by_name(
1726+
self,
1727+
sso_cmd,
1728+
ptk_stubber,
1729+
stub_sso_list_accounts,
1730+
stub_sso_list_roles,
1731+
args,
1732+
parsed_globals,
1733+
start_url_prompt,
1734+
sso_region_prompt,
1735+
region_prompt,
1736+
output_prompt,
1737+
profile_prompt,
1738+
account_id,
1739+
):
15631740
selected_account = {
1564-
'accountId': self.account_id,
1741+
'accountId': account_id,
15651742
'emailAddress': 'account@example.com',
15661743
}
1567-
first_role = {'roleName': 'AdministratorAccess',
1568-
'accountId': self.account_id}
1569-
second_role = {'roleName': 'DataScientist',
1570-
'accountId': self.account_id}
1571-
third_role = {'roleName': 'SystemAdministrator',
1572-
'accountId': self.account_id}
1573-
roles = [second_role, third_role, first_role]
1574-
expected_roles = [first_role['roleName'],
1575-
second_role['roleName'], third_role['roleName']]
1576-
self._add_prompt_responses()
1577-
self._add_list_accounts_response([selected_account])
1578-
self._add_list_account_roles_response(roles)
1579-
self.selector.side_effect = [selected_account]
1580-
with self.sso_stub:
1581-
self.configure_sso(args=[], parsed_globals=self.global_args)
1582-
printed_roles = self.selector.call_args[0][0]
1583-
self.assertEqual(printed_roles, expected_roles)
1744+
role_names_unsorted = [
1745+
'DataScientist',
1746+
'SystemAdministrator',
1747+
'AdministratorAccess',
1748+
]
1749+
expected_roles = [
1750+
'AdministratorAccess',
1751+
'DataScientist',
1752+
'SystemAdministrator',
1753+
]
1754+
account_select = None
1755+
role_select = SelectMenu(
1756+
answer='AdministratorAccess',
1757+
expected_choices=expected_roles,
1758+
)
1759+
role_profile_prompt = ProfilePrompt(
1760+
answer="dev",
1761+
expected_default=f"AdministratorAccess-{account_id}",
1762+
)
1763+
ptk_stubber.user_inputs = UserInputs(
1764+
session_prompt=RecommendedSessionPrompt(answer=""),
1765+
start_url_prompt=start_url_prompt,
1766+
sso_region_prompt=sso_region_prompt,
1767+
account_id_select=account_select,
1768+
role_name_select=role_select,
1769+
region_prompt=region_prompt,
1770+
output_prompt=output_prompt,
1771+
profile_prompt=role_profile_prompt,
1772+
)
1773+
stub_sso_list_accounts([selected_account])
1774+
stub_sso_list_roles(
1775+
role_names_unsorted,
1776+
expected_account_id=account_id,
1777+
)
1778+
assert sso_cmd(args, parsed_globals) == 0
1779+
15841780

15851781
class TestPrintConclusion:
15861782
def test_print_conclusion_default_profile_with_credentials(

0 commit comments

Comments
 (0)